电网规划实战:直流潮流、优化规划与启发式规划三条路线
发布时间:2026/9/30 4:16:16来源:尧图网络
简介这份PPT课件面向电力系统、电气工程及相关专业的师生与工程技术人员系统讲解电网规划的核心理论与方法帮助读者建立从负荷预测、电源规划到网架方案决策的完整知识框架。资源为单个pptx文件压缩包约3.15MB内容以讲义幻灯片形式呈现便于课堂讲授、自学梳理与复习备考。课件围绕电网规划概述、直流潮流模型、输电线路输送能力、电压等级选择、变电站站址与容量选择、导线截面选择与校验以及网络结构规划的常规方法、优化规划方法和启发式规划方法逐层展开并对比三类规划方法的优缺点与适用场景。其中直流潮流模型部分从节点导纳矩阵、有功潮流方程出发推导简化条件与应用思路是理解规划中反复潮流校验的关键。目前已有80人学习适合作为电力系统规划与可靠性课程的配套资料也可供从事电网规划、调度与设计工作的人员参考。1. 电网规划到底在规划什么从一张 PPT 标题拆出三条落地路线很多人看到「电力系统规划与可靠性-3电网规划」这个标题第一反应是去翻教材目录找「规划」的定义。但如果你真在调度、设计院或者能源咨询公司干过就会知道电网规划的核心从来不是背概念而是回答三个问题未来五年到二十年电从哪里来、走哪条路、够不够稳。直流潮流模型、优化规划、启发式规划这三个热搜词恰好对应了回答这三个问题的三种技术路线。这份 PPT 标题里的「3」暗示它是系列材料的第三部分大概率承接了前面的负荷预测和电源规划开始进入网架结构决策。如果你正在做新能源接入方案、园区配网扩容或者省级输电网滚动规划这篇内容能帮你把「规划」从 PPT 里的框图变成可计算、可验证的工程流程。我会按「模型怎么选、代码怎么写、结果怎么验」的顺序讲新手能跟着跑通最小算例熟手能直接拿去改参数。2. 直流潮流模型为什么规划阶段反而不用完整交流潮流2.1 规划场景下直流近似的合理性边界电网规划的计算规模和运行方式分析完全不是一个量级。运行方式分析可能只算一个断面、几十个节点规划要扫几十年、几百个场景、上千个节点。如果每个场景都跑完整交流潮流计算时间会直接爆炸。直流潮流模型的核心假设是支路电阻远小于电抗、节点电压幅值接近 1.0 p.u.、相角差很小。在这三个条件下有功功率与相角差呈线性关系无功和电压幅值解耦。这意味着你可以在毫秒级完成一次潮流计算把省下来的算力全部砸到优化搜索上。但直流潮流不是万能药。它算不了电压越限、无功不足、网损精确值。所以在规划阶段常见做法是「直流潮流做筛选、交流潮流做校验」先用直流模型从几千个候选方案里筛出前几十个再用交流潮流逐个验证。我一般会在 PPT 里明确标注哪些结论来自直流近似、哪些来自交流校验避免评审时被问住。提示如果你的规划区域新能源占比超过 40%直流潮流的误差会明显放大因为逆变器主导的场景下无功电压问题更突出。这时候建议把直流模型只用于输电网架筛选配网侧单独建模。2.2 用 Python 搭一个最小直流潮流算例下面这段代码用 numpy 实现直流潮流的核心计算根据节点注入功率和 B 矩阵求相角再算支路功率。你可以直接复制运行改改节点数和支路参数就能当规划筛选器用。import numpy as np # 节点数 n 5 # 支路数据: [from, to, x(p.u.)] branches [ [0, 1, 0.1], [0, 2, 0.2], [1, 3, 0.15], [2, 3, 0.25], [3, 4, 0.1], ] # 节点注入有功功率 (p.u.)正为发电负为负荷 P_inj np.array([1.5, -0.5, -0.8, 0.3, -0.5]) # 构建 B 矩阵 B np.zeros((n, n)) for f, t, x in branches: b 1.0 / x B[f, f] b B[t, t] b B[f, t] - b B[t, f] - b # 平衡节点设为节点 0去掉其行列 slack 0 idx [i for i in range(n) if i ! slack] B_red B[np.ix_(idx, idx)] P_red P_inj[idx] # 求解相角 theta_red np.linalg.solve(B_red, P_red) theta np.zeros(n) theta[idx] theta_red # 计算支路有功功率 print(节点相角 (rad):, np.round(theta, 4)) for f, t, x in branches: p_flow (theta[f] - theta[t]) / x print(f支路 {f}-{t}: P {p_flow:.4f} p.u.)这段代码的逻辑很直接B 矩阵的构建规则是支路电抗倒数累加到对角元、负值放到非对角元。去掉平衡节点后剩下的方程是线性的直接调numpy.linalg.solve就能解。参数方面x是标幺值下的支路电抗P_inj是各节点净注入功率。你需要注意平衡节点的选择会影响相角参考值但不影响支路功率差。如果算出来的支路功率超过你设定的热稳极限就说明这个网架方案需要加强。2.3 从算例到规划怎么把直流潮流嵌进优化循环单独跑一次潮流只是运行分析规划的本质是「在约束下找最优」。把上面的直流潮流封装成函数后你可以用循环或优化库去搜索最优线路投建方案。常见做法是外层用遗传算法或粒子群生成候选网架内层用直流潮流校验是否过载过载则加惩罚项。这样一套流程在普通笔记本上跑几百个方案也就几分钟。如果你用 Python 的pulp或cvxpy还可以把直流潮流约束写成线性规划形式直接求全局最优。但要注意线性规划要求目标函数和约束都是线性的而实际规划中线路投资是离散的要么建要么不建这时候就需要混合整数规划计算量会大一个量级。3. 优化规划与启发式规划两条路线的选型与实操3.1 优化规划把电网扩展变成数学规划问题优化规划的思路是把「建哪条线、建多大容量、什么时候建」全部写成决策变量把投资成本、运行成本、可靠性惩罚写成目标函数把潮流方程、热稳极限、N-1 校验写成约束。最常见的形式是混合整数线性规划因为直流潮流本身就是线性的投资变量用 0-1 整数表示。这样做的好处是解有理论最优性保证坏处是规模一大就解不动。我实测过一个 300 节点、500 条候选支路的系统用商业求解器跑 MIP 大概要几十分钟到几小时取决于场景数。如果你要动手推荐从cvxpy入手它能把数学形式直接翻译成代码。下面是一个简化的优化规划骨架目标是最小化投资加运行成本约束是直流潮流和线路容量。import cvxpy as cp import numpy as np n 5 branches [(0,1,0.1),(0,2,0.2),(1,3,0.15),(2,3,0.25),(3,4,0.1)] c_inv np.array([10, 8, 12, 9, 7]) # 每条候选线路投资成本 c_gen np.array([30, 40, 35, 50, 20]) # 各节点发电成本 P_load np.array([0, 50, 80, 30, 50]) # 负荷 (MW) F_max 100 # 线路容量 (MW) # 决策变量线路是否投建 (0-1)各节点发电量相角 z cp.Variable(len(branches), booleanTrue) Pg cp.Variable(n, nonnegTrue) theta cp.Variable(n) # 构建 B 矩阵和关联矩阵 B np.zeros((n, n)) A np.zeros((len(branches), n)) for i, (f, t, x) in enumerate(branches): b 1.0 / x B[f, f] b; B[t, t] b; B[f, t] - b; B[t, f] - b A[i, f] 1; A[i, t] -1 constraints [theta[0] 0] # 功率平衡 constraints.append(Pg - P_load B theta) # 线路容量约束用大 M 法处理投建变量 M 1000 for i in range(len(branches)): flow A[i] theta / branches[i][2] constraints.append(flow F_max * z[i]) constraints.append(flow -F_max * z[i]) obj cp.Minimize(c_inv z c_gen Pg) prob cp.Problem(obj, constraints) prob.solve(solvercp.GLPK_MI) print(投建方案:, np.round(z.value)) print(发电出力:, np.round(Pg.value, 2)) print(总成本:, round(prob.value, 2))这段代码的关键在于用大 M 法把「线路不建则容量为零」这个逻辑线性化。z[i]是 0-1 变量F_max * z[i]在 z0 时把容量压到零z1 时恢复满容量。参数c_inv和c_gen需要根据实际经济数据折算F_max是线路热稳极限。求解器我选了 GLPK_MI因为它开源且对中小规模问题够用。如果你有 Gurobi 或 CPLEX换上去速度会快很多。3.2 启发式规划当精确解算不动时怎么找可用方案启发式规划不追求数学最优而是用经验规则或仿生算法快速找到「足够好」的方案。常见的包括灵敏度法按线路过载灵敏度排序加线、遗传算法、粒子群、模拟退火。我在实际项目里最常用的是灵敏度法加局部搜索因为它快、可解释、容易跟调度沟通。具体步骤是先跑一次直流潮流找出过载最严重的支路计算各候选线路对消除该过载的灵敏度选灵敏度最高的加进去重复直到无过载。这套流程在 500 节点系统上通常几十秒就能出一个方案。下面是一个灵敏度筛选的简化实现帮你理解启发式规划的核心逻辑。import numpy as np def dc_power_flow(n, branches, P_inj, slack0): B np.zeros((n, n)) for f, t, x in branches: b 1.0 / x B[f, f] b; B[t, t] b; B[f, t] - b; B[t, f] - b idx [i for i in range(n) if i ! slack] theta np.zeros(n) theta[idx] np.linalg.solve(B[np.ix_(idx, idx)], P_inj[idx]) flows [(theta[f] - theta[t]) / x for f, t, x in branches] return theta, flows n 5 branches [(0,1,0.1),(0,2,0.2),(1,3,0.15),(2,3,0.25),(3,4,0.1)] P_inj np.array([1.5, -0.5, -0.8, 0.3, -0.5]) F_max 0.8 # 线路容量上限 (p.u.) theta, flows dc_power_flow(n, branches, P_inj) for i, (f, t, x) in enumerate(branches): if abs(flows[i]) F_max: print(f支路 {f}-{t} 过载: {flows[i]:.3f} p.u.需加强) else: print(f支路 {f}-{t} 正常: {flows[i]:.3f} p.u.)这段代码先算潮流再逐条检查是否越限。实际规划中你会在过载支路附近枚举候选加强措施加线、升压、改接线对每个措施重跑潮流选效果最好的。参数F_max要根据导线型号和运行要求设定。启发式的好处是每一步都有物理意义坏处是不能保证全局最优可能陷入局部解。我的经验是先用启发式快速缩小搜索空间再用优化规划在小范围内精调两者结合比单用任何一种都稳。3.3 两种路线的对比与混合策略维度优化规划启发式规划解的质量理论最优模型准确时满意解可能局部最优计算速度慢随规模指数增长快可处理大规模可解释性差黑匣子好每步有物理依据适合场景小规模、精度要求高大规模、快速筛选常见工具cvxpy、Gurobi、CPLEX自写循环、遗传算法库我一般会先用启发式跑出 3 到 5 个候选方案再用优化规划在候选方案附近做精细搜索。这样既避免了优化规划在大空间里解不动又避免了启发式陷入局部最优后没有后悔药。如果你只有一天时间做规划启发式是保底选择如果你有一周混合策略能出更漂亮的报告。4. 电网规划避坑五个让我返工的血泪教训4.1 直流潮流算出来的网损是零别直接写进报告现象用直流潮流模型算完规划方案后报告里写「网损降低 15%」评审时被专家当场指出直流模型网损恒为零。原因直流潮流只算有功和相角支路电阻被忽略所以线损无法体现。解决网损必须用交流潮流或至少用I²R做近似估算在报告里明确标注估算方法。4.2 平衡节点选错导致相角全偏但支路功率差是对的现象换了一个平衡节点后所有节点相角都变了以为算错了。原因直流潮流中相角是相对值平衡节点提供参考零角换参考点后所有相角平移但支路两端的相角差不变所以功率不变。解决不用纠结相角绝对值只看支路功率和相角差。如果你要画相角分布图固定一个平衡节点即可。4.3 优化规划里忘了 N-1 约束方案一投运就过载现象优化结果看起来成本最低但实际运行中一条线路检修就导致其他线路过载。原因模型里只加了正常方式约束没加 N-1 开断校验。解决在约束里对每条支路轮流开断重新校验潮流把越限场景作为惩罚项加回目标函数。这会增加计算量但规划阶段不加 N-1后面运行阶段就要花大钱补救。4.4 启发式灵敏度法在环网里会反复加线现象按灵敏度加了一条线后另一条线过载更严重再加一条原来那条又过载了。原因环网中潮流分布非线性单步灵敏度只对当前断面有效加线后灵敏度矩阵变了。解决每加一条线就重算灵敏度并且设置最大迭代次数和投资上限避免无限循环。我一般会加一个「连续两次加线后总过载量不降就停」的判据。4.5 新能源出力场景太少规划方案在极端天气下崩掉现象用几个典型日做规划结果投运后遇到连续阴天线路重载。原因场景生成时只考虑了平均出力没覆盖低出力高负荷的极端组合。解决用历史数据做场景聚类至少保留 5% 分位的低出力场景并在优化目标里加入弃电惩罚。规划不是算期望值是要保证一定置信度下的可靠性。5. 可靠性校验与规划方案收口一个可复用的验证习惯规划方案算完只是开始真正决定它能不能落地的是可靠性校验。我习惯在出报告前跑三个指标失负荷概率、电量不足期望、以及 N-1 通过率。前两个用蒙特卡洛或状态枚举算第三个用确定性校验。下面这个表格是我常用的校验清单你可以直接套。校验项方法通过标准常见工具正常方式潮流交流潮流无支路过载、电压在 0.95-1.05 p.u.PYPOWER、MATPOWERN-1 校验逐条开断无孤立节点、无连锁过载自写循环失负荷概率状态枚举低于规划导则要求自写或商用电量不足期望蒙特卡洛低于年度目标自写或商用短路电流交流短路计算开关遮断容量内专用软件校验通过后我会把规划方案拆成「近期、中期、远期」三个阶段每个阶段标注投建线路、投资估算、以及对应的可靠性提升值。这样评审时专家能看到钱花在哪、效果在哪。最后说一个我自己的习惯每次规划报告里都会留一页「方案失效场景」写明在什么条件下这个方案会不够用、到时候该加什么线。这页不是给自己找麻烦而是给未来留后悔药。电网规划没有一劳永逸只有滚动修编。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网