简介:这份PPT课件面向电力系统及其自动化专业的本科生、研究生与电力规划从业者,系统讲解电网规划的核心理论与工程方法,帮助读者建立从负荷预测、电源规划到网架方案决策的完整知识框架。资源为单个pptx文件,压缩包约3.15MB,内容以讲义幻灯片形式组织,便于课堂讲授与自学查阅。课件围绕电网规划概述、直流潮流模型、输电线路输送能力、电压等级选择、变电站站址与容量选择、导线截面选择与校验,以及网络结构规划的常规方法、优化规划方法与启发式规划方法逐层展开,并重点剖析直流潮流模型如何将非线性潮流问题线性化,以适应规划阶段大量反复的过负荷校验计算。目前已有80人学习,适合需要夯实电网规划理论、理解交直流输电适用边界与规划方法优缺点的读者参考。
1. 电网规划到底在规划什么:从一份 PPT 讲透主网网架决策链
很多人第一次接触电网规划,以为就是画几条线、标几个变电站,真到项目上才发现完全不是这么回事。这份《电力系统规划与可靠性-3电网规划.pptx》把整条决策链拆得很清楚:以负荷预测和电源规划为基础,解决在何时、何地投建或改造何种类型的输电线路及其回路数问题。说白了,它要回答的是“钱花在哪、线架在哪、什么时候架”这三个问题,而且要在满足技术指标的前提下让总投入最少。它适合电网规划岗的入门者、做输电网扩展研究的同学,以及需要快速补齐规划方法论的从业者。整份 PPT 覆盖了直流潮流模型、电压等级选择、变电站站址与容量、导线截面校验,以及传统、优化、启发式三类规划方法,是一条完整的主网规划技术路线。
2. 直流潮流模型:把非线性潮流掰成线性方程的那几步简化
2.1 为什么规划阶段不用牛顿-拉夫逊法
稳态分析课上学的牛顿-拉夫逊法和高斯-塞德尔法都是交流潮流计算方法,需要多次迭代求解非线性方程组,精度高但计算量大。规划阶段要做的是大量过负荷校验,同一个网络结构可能要反复算几十上百次潮流,而且原始资料本身就不精确,用高精度方法属于杀鸡用牛刀。直流潮流模型把非线性电力潮流问题简化为线性电路问题,牺牲一点精度换来计算速度的大幅提升,在输电网规划里这个交换是划算的。
核心逻辑在于:电网规划最关心的是有功功率从电源处怎么输送到负荷处,架线方案首先要保证有功潮流的输送能力。输电线上的无功潮流相对较小,近似认为它对有功潮流分布没有影响。基于这个判断,只反映有功潮流分布的直流潮流模型就成立了。
2.2 四个简化条件与推导过程
从交流潮流方程到直流潮流方程,PPT 里列了四个简化条件,每一步都有明确的物理依据:
| 简化条件 | 数学表达 | 物理含义 |
|---|---|---|
| 电阻远小于电抗 | Rij << Xij,取 Gij ≈ 0 | 高压输电线路的电阻通常只有电抗的几分之一到十几分之一 |
| 相角差不大 | cosθij ≈ 1,sinθij ≈ θij | 输电线路两端电压相角差一般小于 10 度 |
| 节点电压标幺值为 1 | Ui ≈ 1 | 规划阶段假定各节点电压在额定值附近运行 |
| 忽略接地支路和非标准变比 | tij ≈ 1 | 简化变压器模型对接地支路的影响 |
把以上条件代入节点有功功率注入的交流潮流方程,经过推导可以得到直流潮流方程的核心形式:
import numpy as np def dc_power_flow(B_matrix, P_injection, slack_bus=0): """ 直流潮流计算:P = B * theta B_matrix: 节点导纳矩阵的虚部部分(n x n),已去掉平衡节点 P_injection: 节点有功注入向量(n-1 维),不含平衡节点 slack_bus: 平衡节点编号 返回:各节点电压相角(弧度) """ n = B_matrix.shape[0] # 去掉平衡节点对应的行和列 mask = np.ones(n, dtype=bool) mask[slack_bus] = False B_reduced = B_matrix[np.ix_(mask, mask)] P_reduced = P_injection[mask] # 求解线性方程组 B' * theta = P theta_reduced = np.linalg.solve(B_reduced, P_reduced) # 还原完整相角向量,平衡节点相角设为 0 theta = np.zeros(n) theta[mask] = theta_reduced return theta def branch_active_power(theta, branch_from, branch_to, x_branch): """ 根据相角差计算支路有功功率 theta: 节点相角向量 branch_from, branch_to: 支路两端节点编号数组 x_branch: 支路电抗数组 返回:各支路有功功率 """ P_branch = (theta[branch_from] - theta[branch_to]) / x_branch return P_branch这段代码的逻辑很直接:直流潮流方程 P = Bθ 是一个线性方程组,B 矩阵由网络拓扑和支路电抗决定,P 是节点注入有功功率,θ 是待求的节点电压相角。求解时把平衡节点去掉,解完再还原。支路有功功率等于两端相角差除以支路电抗,这也是直流潮流的核心结论。
参数说明:B_matrix 的构造方式是 Bii = Σ(1/xij),Bij = -1/xij,其中 xij 是支路 i-j 的电抗。P_injection 的正负号约定为:发电机注入为正,负荷为负。slack_bus 一般选主调频厂或大容量机组所在的节点。
2.3 节点导纳矩阵的组装与自导纳互导纳关系
直流潮流模型里,节点导纳矩阵 Y 的组成元素需要特别注意。互导纳 Yij = -yij,自导纳 Yii = Σyij,其中 yij = 1/zij,zij = Rij + jXij。在直流潮流简化下,只保留电抗部分,所以 B 矩阵的元素就是 1/xij 的组合。
PPT 里特别强调了一个关系:节点导纳矩阵 Y 中,每一行的对角元素 Yii 等于同一行其他非对角元素 Yij 之和的负值。这个性质在组装 B 矩阵时非常有用,可以用来校验矩阵是否组装正确。我一般会写一个校验函数,组装完 B 矩阵后检查每一行是否满足这个关系,不满足就说明有支路参数填错了。
def build_b_matrix(n_bus, branches): """ 组装直流潮流的 B 矩阵 n_bus: 节点数 branches: 支路列表,每个元素为 (from_bus, to_bus, x) 返回:B 矩阵(n_bus x n_bus) """ B = np.zeros((n_bus, n_bus)) for from_bus, to_bus, x in branches: b = 1.0 / x B[from_bus, from_bus] += b B[to_bus, to_bus] += b B[from_bus, to_bus] -= b B[to_bus, from_bus] -= b # 校验:对角元素应等于同行非对角元素之和的负值 for i in range(n_bus): off_diag_sum = sum(B[i, j] for j in range(n_bus) if j != i) assert abs(B[i, i] + off_diag_sum) < 1e-10, f"节点 {i} 的 B 矩阵行不满足自导纳关系" return B这个校验步骤看起来简单,但在实际项目中能省掉大量排查时间。我遇到过因为支路电抗填成标幺值而基准值不统一,导致 B 矩阵对角元素关系不满足的情况,如果没有这个校验,可能要等到潮流结果明显不合理才会发现。
3. 从电压等级到导线截面:电网规划的参数选择与校验流程
3.1 电压等级选择的经济性判据
电网电压等级的选择不是拍脑袋决定的,它直接影响到输电能力和建设成本。PPT 里给出的原则是:在输电方式上,我国现阶段仍以交流输电为主,只有在 500kV 及以上电压时才考虑直流输电的必要性。这个判断背后是经济性比较——直流输电的换流站成本高,只有输送距离足够长、输送容量足够大时,直流线路节省的投资才能抵消换流站的额外成本。
实际规划中,电压等级的选择通常参考输电容量和输送距离的对应关系。常见做法是:根据规划年度的负荷预测结果,确定各分区之间的功率交换需求,然后对照不同电压等级的输电能力上限,选择满足需求且投资最省的电压等级组合。这里有一个经验数据:220kV 线路的经济输送容量一般在 100-200MW,500kV 线路在 500-1000MW,但这个数值会随线路长度和走廊条件变化。
3.2 变电站站址与容量选择的操作步骤
变电站的站址和容量选择是电网规划里最需要现场经验的部分。PPT 里把变电站布局和规模确定列为电网规划的主要内容之一,但具体怎么做,需要结合负荷分布和地理条件。
我一般按以下步骤推进:
第一步,根据负荷预测结果,在地理接线图上标出各负荷点的位置和大小。负荷点通常按行政区或供电分区聚合,避免过于分散导致计算量爆炸。
第二步,用重心法或聚类方法初步确定变电站的候选站址。重心法就是按负荷大小加权求地理重心,聚类方法可以用 K-means 把相邻负荷点归并到同一个供电区域。
第三步,对每个候选站址,根据供电半径和容载比要求确定变电站容量。容载比一般取 1.8-2.2,具体数值看地区负荷增长速度和可靠性要求。
第四步,校验站址的可行性——是否落在基本农田、是否靠近水源保护区、进出线走廊是否通畅。这一步经常被忽略,但实际项目中因为站址不可行而返工的情况并不少见。
3.3 架空送电线路导线截面的选择与校验
导线截面的选择要同时满足三个条件:发热条件、电压损耗条件和机械强度条件。PPT 里把导线截面的选择和校验单独列为一节,说明这是规划中必须逐条线路落实的工作。
发热条件校验的核心是确保导线在最大输送功率下的载流量不超过允许值。常见做法是查导线型号的载流量表,然后根据规划年度的最大输送功率反算需要的截面。
电压损耗条件校验是计算线路在最大负荷方式下的电压降落,确保末端电压在允许范围内。对于 220kV 及以上线路,电压损耗一般控制在 5% 以内;对于 110kV 线路,可以放宽到 7%-10%。
机械强度条件主要是最小截面要求,比如 110kV 线路导线截面一般不小于 150mm²,220kV 不小于 240mm²。这个条件在山区或大跨越段尤其重要。
def check_conductor(current, rated_current, voltage_drop, max_drop, min_section, actual_section): """ 导线截面三项校验 current: 最大输送电流(A) rated_current: 导线允许载流量(A) voltage_drop: 计算电压损耗(%) max_drop: 允许电压损耗(%) min_section: 机械强度要求的最小截面(mm²) actual_section: 实际选用截面(mm²) 返回:校验结果字典 """ result = {} result['thermal'] = current <= rated_current result['voltage'] = voltage_drop <= max_drop result['mechanical'] = actual_section >= min_section result['all_pass'] = all(result.values()) if not result['thermal']: print(f"发热校验不通过:电流 {current}A > 允许载流量 {rated_current}A,需增大截面") if not result['voltage']: print(f"电压损耗校验不通过:{voltage_drop}% > 允许值 {max_drop}%,需增大截面或调整无功补偿") if not result['mechanical']: print(f"机械强度校验不通过:截面 {actual_section}mm² < 最小要求 {min_section}mm²") return result这个校验函数可以直接嵌入规划流程,对每条候选线路自动执行。参数说明:rated_current 需要根据导线型号和环境温度查表获取,voltage_drop 需要先做潮流计算得到,min_section 根据电压等级和线路类型确定。
4. 三类规划方法的选型逻辑:传统、优化与启发式怎么选
4.1 传统规划方法的适用边界
传统规划方法以方案比较为基础,参与比较的几个方案由规划人员根据经验提出。优点是方法简单易操作,不需要复杂的数学模型和计算工具。缺点是方案的拟定完全依赖规划者的经验,主观性大,所提出的若干个可行方案很可能不包含理论上的最优方案。
我个人的经验是,传统方法适合网络规模小、规划人员经验丰富的场景。比如一个县级电网的年度改造项目,线路条数不多,规划人员对当地负荷分布和电网结构非常熟悉,用传统方法快速比选几个方案就能满足要求。但如果是省级主干网架规划,涉及几百个节点和上千条候选线路,传统方法就力不从心了。
4.2 优化规划方法的建模三要素与求解困难
优化规划方法运用运筹学中的规划理论,将电网规划的实际问题描述为数学优化模型,包含变量、目标函数、约束条件三个要素。变量通常是待选线路的投建状态(0-1 变量)和潮流分布;目标函数是总投入费用最小;约束条件包括功率平衡约束、线路输送容量约束、节点电压约束等。
理论上,优化规划方法可以自动形成规划问题的全部可能存在方案,并一定包含最优方案。但实际应用中面临两个困难:一是电网规划的变量数很多、约束条件复杂,求解困难,在建立数学模型时不得不做大量简化;二是有些规划决策因素难以用数学模型表达,比如走廊协调难度、政策限制、环境约束等,导致数学上的最优解未必是符合工程实际的最优方案。
常见做法是把优化规划方法作为方案生成工具,用它算出一组候选方案,再由规划人员结合工程实际做筛选和调整。这样既利用了数学优化的全局搜索能力,又保留了人工决策的灵活性。
4.3 启发式规划方法的灵敏度分析机制
启发式规划方法以直观分析为依据,通常基于系统某一性能指标对可行路径上的一些线路参数进行灵敏度分析,根据一定原则选择最有效的线路加入系统进行网络扩展。
灵敏度分析的核心思路是:计算每条候选线路对系统性能指标的改善程度,然后按改善程度从大到小排序,优先选择改善效果最明显的线路。常用的性能指标包括过负荷程度、电压偏差、网络损耗等。
def heuristic_expansion(candidates, base_network, performance_metric, max_lines): """ 启发式网络扩展:按灵敏度排序逐条加入线路 candidates: 候选线路列表,每个元素为 (from_bus, to_bus, x, cost) base_network: 基础网络数据 performance_metric: 性能指标计算函数,输入网络返回指标值 max_lines: 最大新增线路数 返回:选中的线路列表 """ selected = [] current_network = base_network.copy() base_metric = performance_metric(current_network) for _ in range(max_lines): best_line = None best_improvement = 0 for line in candidates: if line in selected: continue # 临时加入该线路,计算性能改善 test_network = current_network.copy() test_network.add_branch(line) new_metric = performance_metric(test_network) improvement = base_metric - new_metric if improvement > best_improvement: best_improvement = improvement best_line = line if best_line is None: break selected.append(best_line) current_network.add_branch(best_line) base_metric = performance_metric(current_network) print(f"第 {len(selected)} 条选中线路:{best_line},性能改善 {best_improvement:.4f}") return selected这段代码的逻辑是贪心策略:每次从候选线路中选一条对性能指标改善最大的加入网络,重复直到达到最大线路数或没有可改善的线路。参数说明:performance_metric 可以定义为过负荷线路总容量、网络总损耗或电压偏差平方和,具体用哪个指标取决于规划关注的重点。启发式方法的缺点是难以选择既容易计算又能真正反映规划问题实质的性能指标,并且网络规模较大时,指标对于一组方案差别都不大,难以优化选择。
5. 避坑与排查:电网规划实操中的五个血泪教训
5.1 直流潮流结果与交流潮流偏差过大
现象:用直流潮流算出的线路有功功率与交流潮流结果相差超过 15%,导致过负荷判断失误。
原因:直流潮流的简化条件在重载线路或电压偏离额定值较大的情况下不成立。特别是当线路两端相角差超过 10 度时,sinθ ≈ θ 的近似误差急剧增大。
解决:对直流潮流筛选出的过负荷线路,用交流潮流做二次校验。如果偏差超过 10%,需要检查该线路的负载率和电压水平,必要时调整规划方案。
5.2 节点导纳矩阵组装时遗漏接地支路
现象:潮流计算不收敛,或者平衡节点注入功率异常大。
原因:组装 B 矩阵时只考虑了输电线路,遗漏了变压器接地支路和并联电容电抗。虽然直流潮流简化下接地支路影响较小,但在某些网络结构中忽略它们会导致 B 矩阵奇异。
解决:组装 B 矩阵前先列出所有支路,包括变压器支路和接地支路,逐条确认是否纳入。对于变压器非标准变比,在直流潮流中一般取标幺值 1,但需要在文档中记录这个简化。
5.3 电压等级选择时忽略走廊条件
现象:规划方案在技术上可行,但实际建设中因为走廊无法落实而被迫修改。
原因:电压等级选择时只考虑了输电容量和距离,没有核实线路走廊的可行性。高电压等级线路对走廊宽度的要求更高,在城市建成区或山区可能无法满足。
解决:在电压等级比选阶段就加入走廊可行性评估,对每个候选方案标注走廊获取难度。常见做法是准备一个走廊难度系数表,把规划方案按难度分级,优先选择难度低的方案。
5.4 导线截面校验只做发热条件
现象:线路投运后发现末端电压偏低,或者导线在覆冰条件下发生断线。
原因:只校验了发热条件,忽略了电压损耗条件和机械强度条件。发热条件决定的是导线能承受的最大电流,但电压损耗决定的是电能质量,机械强度决定的是安全裕度。
解决:建立三项校验的标准化流程,每条线路必须同时通过发热、电压损耗、机械强度三项校验才能进入下一阶段。我一般会做一个校验清单,逐项打勾确认。
5.5 启发式规划的性能指标选择不当
现象:启发式方法选出的扩展方案与人工经验方案差异很大,或者不同候选线路的灵敏度指标差别很小,难以排序。
原因:性能指标没有真正反映规划问题的实质。比如用网络总损耗作为指标,在负荷分布均匀的网络中,各候选线路对损耗的改善差别不大,导致排序困难。
解决:根据规划阶段选择不同的性能指标。在解决过负荷问题时,用过负荷线路总容量作为指标;在解决电压问题时,用电压偏差平方和作为指标;在解决可靠性问题时,用负荷削减量作为指标。必要时可以同时用多个指标做综合评估。
6. 把规划方案从 PPT 落到工程:一个灵敏度排序的实操技巧
前面讲了直流潮流模型和三类规划方法,最后落到一个具体技巧上:怎么用灵敏度排序快速筛选候选线路。这个技巧在省级电网规划中特别实用,因为候选线路动辄几百条,不可能每条都做详细计算。
我的做法是分两轮筛选。第一轮用直流潮流做快速扫描,计算每条候选线路对过负荷指标的改善程度,按改善程度排序,取前 20% 进入第二轮。第二轮用交流潮流做详细校验,同时考虑电压约束和暂态稳定约束,最终确定推荐方案。
def two_stage_screening(candidates, base_network, dc_metric, ac_metric, top_ratio=0.2): """ 两轮筛选:直流快速扫描 + 交流详细校验 candidates: 候选线路列表 base_network: 基础网络 dc_metric: 直流潮流性能指标函数 ac_metric: 交流潮流性能指标函数 top_ratio: 第一轮保留比例 返回:最终推荐线路列表 """ # 第一轮:直流潮流快速扫描 dc_scores = [] for line in candidates: test_network = base_network.copy() test_network.add_branch(line) score = dc_metric(test_network) dc_scores.append((line, score)) dc_scores.sort(key=lambda x: x[1], reverse=True) top_count = max(1, int(len(candidates) * top_ratio)) first_round = [line for line, _ in dc_scores[:top_count]] print(f"第一轮直流扫描:{len(candidates)} 条候选,保留 {top_count} 条") # 第二轮:交流潮流详细校验 ac_scores = [] for line in first_round: test_network = base_network.copy() test_network.add_branch(line) try: score = ac_metric(test_network) ac_scores.append((line, score)) except Exception as e: print(f"线路 {line} 交流校验失败:{e}") ac_scores.sort(key=lambda x: x[1], reverse=True) final = [line for line, _ in ac_scores] print(f"第二轮交流校验:{len(first_round)} 条候选,通过 {len(final)} 条") return final这个两轮筛选的逻辑是:直流潮流计算速度快,适合做大规模初筛;交流潮流计算精度高但速度慢,适合做小规模详校。参数说明:top_ratio 一般取 0.2-0.3,具体看候选线路总数和计算资源。dc_metric 可以用过负荷线路总容量,ac_metric 可以用综合成本或可靠性指标。
从那以后我每次做电网规划,都强制走一遍“直流初筛 + 交流详校”的流程,再急的项目也不跳过。这个习惯帮我避免了好几次因为直流潮流精度不足而误判过负荷的情况。希望帮到你。
本文还有配套的精品资源,点击获取