ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

配电网最优潮流二阶锥松弛:DistFlow建模与Matlab实操

配电网最优潮流二阶锥松弛:DistFlow建模与Matlab实操 1. 项目概述与整体思路拆解1.1 配电网最优潮流为什么“难”在电力系统里最优潮流是一个老生常谈但始终绕不开的话题。输电侧的最优潮流多年发展下来已经有了一套非常成熟的处理方式——内点法处理非线性规划、半定规划松弛处理非凸约束各种商业求解器也把这些问题磨得滚瓜烂熟。但到了配电网这儿情况就有点不一样了。配电网和输电网相比有几个显著特点线路阻抗的电阻/电抗比值往往接近甚至大于1线损在总负荷中占比可观网络结构呈典型的辐射状或弱环网节点数量多但单条馈线容量小分布式电源光伏、风电、储能越来越多地接入节点导致潮流方向不再是传统单一向下的流向。这些特点让配电网的最优潮流问题在求解难度上并不比输电网低甚至在某些场景下更难处理。传统直接建模方式是把配电网最优潮流写成非线性规划问题——交流潮流方程里电压和功率的平方关系、线路损耗与电流的非线性耦合再加上运行约束电压上下限、线路载流量、分布式电源出力范围整个问题非凸、非线性的特征非常明显。对于非线性规划求解器只能保证找到局部最优解且对初值非常敏感。我在实际项目里用传统NLP方式跑过几次配网优化最大的感受是换一套初值就能得到完全不同的结果而且收敛时间不稳定还经常碰到数值病态导致的迭代崩溃。1.2 为什么选二阶锥松弛这条路既然直接求解非凸问题不稳定一个自然的思路是能不能把它转化成一个更“好”的问题来求解这就引出了凸优化。凸优化问题有一个非常好的性质——局部最优就是全局最优而且可以被多项式时间算法高效求解。二阶锥规划正是凸优化家族中表达能力很强的一类它既能表达线性约束、也能表达二次约束适用的求解算法既有内点法的强鲁棒性也有各种一阶方法的高可扩展性。配电网最优潮流经过二阶锥松弛之后正好能转化成一个标准的二阶锥规划问题。核心思想是把原本非凸的潮流等式约束放大为不等式约束把可行域“松弛”为凸集从而用凸优化可靠求出全局最优解。这个方法的吸引力在于两点一是理论上在辐射状配电网的一定条件下松弛后的解可以精确还原原问题的解也就是“松弛紧”tight二是实际工程中即使某些场景下松弛不完全紧也能获得一个信息量很大的解——至少能告诉我们系统的极限能力在哪里。我在多个配电网优化项目里采用了这个方案实际效果非常稳定求解时间从传统NLP的几秒甚至是几十秒压缩到几百毫秒对初值不再敏感最优性有保证。对于做配电网调度、分布式电源规划、网架优化的工程师来说二阶锥松弛搭配Matlab做快速原型验证是一个非常实用的技术栈。1.3 整体技术路线完整复现这个方案需要走通以下路径构建辐射状配电网的DistFlow支路潮流模型用支路功率和节点电压幅值平方作为变量识别模型中唯一的非凸约束——支路功率与节点电压之间的二次等式关系对这个二次等式做凸松弛转化为二阶锥不等式约束在Matlab环境中用YALMIP或CVX建立模型接入合适的SOCP求解器如ECOS、SDPT3、Gurobi等求解完成后从松弛后的变量还原原问题的潮流状态电压幅值、相角、各支路电流并验证松弛间隙。这套流程覆盖了从建模、求解到后处理的完整闭环下面我逐步展开。2. 数学模型与二阶锥松弛原理2.1 辐射状配电网的DistFlow潮流方程先明确适用范围我下面要讲的DistFlow模型针对的是辐射状配电网单电源或多电源但网络拓扑为树状结构。配电网在实际运行中大多采用辐射状或“闭环设计、开环运行”的方式所以这个假设在工程上是合理的。以一个单根馈线为根节点通常记为节点1也是平衡节点逐级向末端延伸。对每一条支路比如连接节点 i父节点和节点 j子节点的支路要追踪的有4类量支路有功功率 P_ij支路无功功率 Q_ij节点电压幅值的平方 v_i V_i^2支路电流幅值的平方 l_ij I_ij^2。配电网的DistFlow方程由三组关系组成。第一组是有功功率平衡表达式为P_ij - r_ij * l_ij - sum(P_jk over k in children of j) P_j^load - P_j^gen第二组是无功功率平衡表达式为Q_ij - x_ij * l_ij - sum(Q_jk over k in children of j) Q_j^load - Q_j^gen第三组是电压降落关系节点 i 和节点 j 之间的电压与阻抗关系为v_j v_i - 2*(r_ijP_ij x_ijQ_ij) (r_ij^2 x_ij^2) * l_ij这三组方程描述了一个非常清晰的物理图像支路上的功率沿着线路流动一部分在阻抗上消耗一部分继续向下游传递同时节点功率守恒电压沿线路从根节点向末端逐渐跌落跌落的幅度取决于流过的功率和线路阻抗。到这里为止这些约束都还是线性的。非凸问题出在最后一个关系式上——支路电流平方的定义l_ij (P_ij^2 Q_ij^2) / v_i这个约束的物理含义很直观支路上流过的视在功率与节点电压、电流之间的关系。问题是它是一个分式二次等式约束在数学上是非凸的正是它导致整个优化问题无法直接高效求解。2.2 非凸环节在哪从二次等式到二阶锥约束把上面的约束改写一下等式形式为l_ij (P_ij^2 Q_ij^2) / v_i等价地写成P_ij^2 Q_ij^2 v_i * l_ij认真分析这个等式左边是变量 P、Q 的二次凸函数右边是变量 v、l 的双线性项——两个正变量相乘。双线性项不是凸函数所以整个等式约束在数学上就是非凸的。这就是所有困难的根源。二阶锥松弛的做法是把这个非凸的等式约束“放松”为不等式约束即允许等式不一定紧只要求 P_ij^2 Q_ij^2 v_i * l_ij。从工程角度理解这个松弛原来要求支路功率和电压电流严格满足物理关系现在只要求支路功率在可行范围内“不大于”电压电流乘积给出的上限。这相当于把可行域向外扩大了一些。如果仅仅停留在“放大了可行域”这一步那这个方案没什么吸引力——毕竟我们想要的是原来问题的精确解。二阶锥松弛的精妙之处在于数学形式的转化上面的双线性不等式可以等价变形为一个标准的二阶锥约束。令 a 2P_ijb 2Q_ijc v_i - l_ijd v_i l_ij原不等式等价于|| (2P_ij, 2Q_ij, v_i - l_ij) ||_2 v_i l_ij展开来就是 (2P_ij)^2 (2Q_ij)^2 (v_i - l_ij)^2 (v_i l_ij)^2化简后正好回到 P_ij^2 Q_ij^2 v_i * l_ij。这个“球体被一个线性不等式截断”的几何结构正是二阶锥——它本身是一个凸集而且可以被各类现代凸优化求解器高效处理。需要强调的一点是在做松弛的同时目标函数的选择对松弛是否“紧”有很大影响。最常见的配电网最优潮流目标是最小化网损它是线路电流平方与电阻乘积之和在引入 l_ij 后是线性函数因为 l_ij I_ij^2 是决策变量。这里有一个关键观察网损是 l_ij 的增函数所以在最小化网损的驱动下求解器倾向于尽量压低 l_ij在绝大多数辐射状配电网场景下最优解会落在二阶锥边界上即不等式以等式形式取到——这就实现了松弛精确。2.3 松弛精确性的判定与方法选型松弛是否精确不能靠猜要有量化指标。我在每次求解之后都会做一步松弛间隙计算gap max(| P_ij^2 Q_ij^2 - v_i * l_ij |) over all branches或者在更严格的形式下结算每条支路的相对偏差gap_i | (P_ij^2 Q_ij^2 - v_i * l_ij) / (v_i * l_ij eps) |如果所有支路的相对偏差小于一个阈值工程上常用1e-4或者1e-5量级就可以认为松弛是紧的得到的解就是原非凸问题的全局最优解。如果松弛间隙比较大说明松弛不够精确这时解虽然可行但是在物理学上略有失真需要人工检查并考虑加入割平面或调整目标函数。文献中已经证明了一些重要的充分条件——对辐射状网络、目标函数是非递减的凸函数、且支路载流量约束不太紧的时候SOCP松弛通常是精确的。但在实际项目中会遇到几类打破这个条件的情况比如目标函数中包含最大化发电量或最小化购电费用这类非单调项网络中存在可控的并网逆变器其无功输出与有功输出之间存在复杂的容量耦合某些支路的电流约束恰好限制了电流平方导致 l_ij 被人为压低或抬高。这些情况下需要提前预判并做好松弛紧性验证。方法选型方面我和团队在不同项目里对比过SOCP和SDP半定规划两种方案。SDP在理论上能够处理更一般的网络结构包括弱环网而且能提供更强的解析性质但计算开销明显更大。对于辐射状配电网这覆盖了绝大多数实际运行场景SOCP的建模精度已经足够而且求解速度比SDP快一个数量级以上。所以我个人的经验是没有特殊要求时优先选SOCP如果网络有弱环网并且想一并处理可以先用SOCP跑一轮看松弛间隙是否可接受不行再升级到SDP。3. Matlab代码实现与实操复现3.1 环境准备工具箱与求解器选型Matlab环境下实现SOCP最优潮流最常用的工具箱是YALMIP和CVX。我个人的选择是YALMIP原因有三一是建模语法灵活能够精细控制每个约束的形式二是它内置了对数十种求解器的接口适配切换求解器只需要改一行代码三是社区维护活跃遇到问题资料好找。在求解器层面针对配电网SOCP最优潮流主流的可选方案有ECOS开源的二阶锥内点法求解器小而美适配中小规模的配电网绰绰有余官方支持YALMIP接口上手最快SDPT3老牌求解器稳定性好支持SOCP和SDP适合做学术对比研究Gurobi商业求解器对SOCP问题的求解速度非常快适合大规模配电网场景或者需要反复求解的日内滚动调度Mosek同样是商业求解器数值稳健性极佳尤其适合高精度要求场景。初学阶段我强烈建议从ECOS起步零成本、安装简单、使用体验顺滑。到了工程落地阶段再评估是否切换到Gurobi。安装ECOS的方式很简单在Matlab中运行以下命令即可% 方法一通过YALMIP自带的setup脚本 addpath(genpath(你的YALMIP路径)); yalmiptest; % 测试看哪些求解器可用 % 方法二直接下载ECOS的Matlab接口 % 到ECOS官网或GitHub仓库下载后把路径加入Matlab addpath(genpath(你的ECOS路径));要注意的一个坑是Matlab的版本会影响部分求解器接口的兼容性。老版本Matlab2016a以下和较新版本的EDOS可能出现接口不兼容的问题。如果遇到报错解决方案很简单——升级Matlab到2019a之后的版本或者改用SDPT3兜底。3.2 核心代码架构与关键函数实现下面给出一个可以直接运行的最小实现框架。这个框架以节点和支路的拓扑矩阵为核心你可以根据自己的网络数据比如IEEE 33节点系统、实际馈线数据替换输入参数。% 输入数据结构说明 % br [起点节点; 终点节点; 支路电阻r(pu); 支路电抗x(pu)]尺寸为 nBranch*4 % load [节点有功负荷(pu); 节点无功负荷(pu)]尺寸为 nBus*2 % 根节点平衡节点编号为1 % 决策变量定义 P sdpvar(nBranch, 1); % 支路有功功率 Q sdpvar(nBranch, 1); % 支路无功功率 v sdpvar(nBus, 1); % 节点电压幅值平方 l sdpvar(nBranch, 1); % 支路电流幅值平方 pDG sdpvar(nDG, 1); % 分布式电源有功出力如果有 qDG sdpvar(nDG, 1); % 分布式电源无功出力如果有 % 目标函数最小化系统网损 Losses br(:,3) * l; % 支路电阻与电流平方乘积之和 Objective Losses; % 约束条件初始化 Constraints []; % DistFlow潮流方程约束 for b 1:nBranch i br(b,1); j br(b,2); r br(b,3); x br(b,4); % 有功平衡约束 % P_ij - r*l_ij - sum(P_jk for children) P_j^D - P_j^G constraints [constraints, P(b) - r*l(b) - sum(P(find(br(:,1)j))) load(j,1) - pDG(j)]; % 无功平衡约束 constraints [constraints, Q(b) - x*l(b) - sum(Q(find(br(:,1)j))) load(j,2) - qDG(j)]; % 电压降落约束 constraints [constraints, v(j) v(i) - 2*(r*P(b) x*Q(b)) (r^2x^2)*l(b)]; % 二阶锥松弛约束 % ||2P, 2Q, v_i - l||_2 v_i l constraints [constraints, [2*P(b); 2*Q(b); v(i) - l(b)] cone(3,1)]; % 或者用norm([...], 2) end这里需要特别说明的是cone命令的用法。在YALMIP中cone(x, dim)表示一个维数为dim的二阶锥约束数学含义是||x(1:dim-1)||_2 x(dim)。所以上面的写法等效于norm([2*P(b); 2*Q(b); v(i)-l(b)], 2) v(i)l(b)但前者在底层处理上更高效推荐使用。接下来补充电压约束和分布式电源出力约束% 节点电压上下限约束标幺值 Vmin 0.95^2; Vmax 1.05^2; Constraints [Constraints, Vmin v Vmax]; % 根节点电压固定为1.0 Constraints [Constraints, v(1) 1.0]; % 支路载流量约束 Imax 1.5; % 支路电流上限单位pu Constraints [Constraints, 0 l Imax^2]; % 分布式电源出力约束示例有4个DG接入节点 Pmax 0.3 * ones(nDG,1); % 每个DG最大有功出力 Constraints [Constraints, 0 pDG Pmax]; Constraints [Constraints, -0.15 qDG 0.15]; % 无功出力限制设置完约束后求解和结果提取的代码也很简单% 求解设置 ops sdpsettings(solver, ecos, verbose, 1, savesolveroutput, 1); % 求解 optimize(constraints, objective, ops); % 检查求解状态 if strcmp(yalmiperror(yalmip(getinfo)), Success) || ... strcmp(optimize(constraints, objective, ops).info, Successfully solved) disp(求解成功); else disp(求解出错); end % 提取结果 P_opt value(P); Q_opt value(Q); v_opt value(v); l_opt value(l); V_opt sqrt(v_opt); % 电压幅值 NetworkLoss sum(br(:,3) .* l_opt);这段代码在33节点系统上我的实测结果是ECOS求解时间大约在0.2到0.5秒之间具体取决于节点负荷分布和约束松紧程度。3.3 从松弛解恢复原网物理量求解完成后最容易被忽略但又最关键的环节是变量还原。很多初次尝试SOCP方法的人都会问我一个问题“我拿到了v和l但怎么得到电压相角和各支路电流的相位”由于DistFlow方程本身是基于幅值的潮流模型我们只能直接恢复幅值信息相角信息需要在求解后额外计算。更准确地说最优潮流的目标函数和约束通常只依赖幅值所以相角对于优化结果本身并不是必要的。但如果我们希望检查解的合理性或者把解输出到其他工具如稳定性分析、保护整定模块里就需要补充还原相角。恢复方法从根节点开始利用线路压降的复功率关系逐支路递推每条支路末端的电压相角偏移。设根节点电压相角为0对每一条支路 (i, j)已知电压幅值 V_i 和 V_j、支路电流的幅值平方 l_ij以及支路复功率 S_ij P_ij jQ_ij可按以下公式计算相角差delta_ij angle((V_i^2 - conj(S_ij) * (r_ij j*x_ij) / V_i) / V_j)在Matlab中实现为% 初始化相角数组 theta zeros(nBus, 1); % 使用树结构从根节点逐层遍历 children cell(nBus, 1); for b 1:nBranch i br(b,1); j br(b,2); children{i} [children{i}, j]; end % BFS或DFS遍历 queue 1; while ~isempty(queue) i queue(1); queue(1) []; for j children{i} b find(br(:,1)i br(:,2)j); Si P_opt(b) 1j*Q_opt(b); zij br(b,3) 1j*br(b,4); Vi V_opt(i); Vj V_opt(j); delta angle((Vi^2 - conj(Si)*zij/Vi) / Vj); theta(j) theta(i) - delta; queue [queue, j]; end end这个遍历逻辑的要点是必须先父后子逐层推进因为子节点的相角依赖父节点的相角。实际完成之后看一眼绘图电压分布曲线应该呈现从根节点到末端平滑下降或波动的形态如果出现奇异的大角度跳变通常说明节点拓扑数据有误。3.4 一个33节点算例的复现过程IEEE 33节点系统是配电网优化领域最经典的测试系统之一标准参数全网可查电压等级12.66 kV总负荷约3715 kW 2300 kvar系统含33个节点32条支路拓扑为辐射状。具体复现步骤获取标准数据。网上资料非常多建议以经典论文和公共来源的最新整理版本为准。注意标幺化取基准电压12.66 kV基准功率10 MVA更精确的标幺化对求解稳定性和收敛都有好处量纲差异过大容易造成数值病态。按照3.2的代码框架把原始数据转换为支路矩阵br和负荷矩阵load。负荷数据单位换算成pu有功标幺值 有功(kW) / 10000。设置电压约束根节点电压恒定为1.0 pu其余节点允许运行在0.95~1.05 pu之间。这里有个工程细节配电网末端电压跌落问题在实际场景中非常突出如果电压下限设得过高如0.98可能会出现无解的情况此时求解器返回不可行我们需要下调下限或允许分布式电源提供无功支持。跑通基础潮流作为验证可以先不加入优化目标只做潮流计算——即把根节点有功/无功功率作为自由变量约束其他节点的供需平衡并设置目标函数为常数0。求解结果应该与常规潮流计算的值接近如果偏差过大检查数据输入是否出错。再切换到网损最小化目标加入分布式电源。比如标准33节点算例中我们通常会在节点18、22、25和33各安装一个容量为0.2~0.5 MW的分布式电源。求解完成后输出最优网损值约100~200 kW量级视DG接入容量和位置而定、各节点电压幅值、各支路功率与电流。我跑通这个算例时记录过一次具体结果在3个DG分别接入节点18、22、25每个额定功率0.3 MW的情况下网损从无DG时的211 kW降到约73 kW末端最低节点电压从0.926 pu提升到0.957 pu。这是二阶锥松弛方案在配电网优化调度和DG选址定容中发挥作用的一个直观验证。4. 常见问题与排查技巧实录4.1 松弛不紧怎么办这是SOCP方法在配电网最优潮流中最常遇到的问题也是最多人踩的坑。刚才提过多数情况下最小化网损能保证松弛紧但实际项目里我们经常会改动目标函数比如加装卸负荷惩罚项、购电费用项、分布式电源发电收益项这些改动都有可能让松弛失效。典型症状求解完成后计算每条支路的松弛间隙发现某个或某几条支路的 l_ij 显著大于 P_ij^2 Q_ij^2 / v_i 的数值。也就是说不等式严格“松”了最优解落到了可行域内部而不是边界上。排查思路和实践解法如下第一重新审视目标函数中的每一项。目标函数里面的每一项都乘以一个正的权重系数检查是否有哪一项本身不会促使 l_ij 被压缩到最小。一个经典的技巧是在目标函数中额外加入一个充分小的正则项 epsilon * sum(l)比如 epsilon 1e-4这并不会影响原目标函数的数值尺度但对推动松弛紧性非常有效。第二调整支路载流量约束的松紧程度。如果某条支路的电流约束从宽松状态变成活跃状态即约束被触及这会给求解器一个强力的“压力”在部分情况下反而会使松弛失效。如果只是复现性研究而非实际工程可以尝试适当放宽Imax观察松弛间隙的变化趋势。第三使用Bound Tightening技术。这个技巧听起来高大上本质很简单由于配电网网络参数的上下限范围通常已知可以先忽略二阶锥约束只求解一个线性规划来获得各变量的界再把这些界代入SOCP问题中收紧约束。收紧的界会让二阶锥不等式两边更加均衡从而帮助松弛保持紧性。这个方法在我处理实际馈线数据时效果很不错推荐大家尝试。4.2 求解器选择与性能优化很多初学者会在YALMIP报错后茫然无措。我给一个简单的决策树如果是第一次安装先用ECOS。ECOS对SOCP的支持好、使用简单、本身体积小、无许可证问题。它在中小规模的配电网问题上比如几百个节点以内表现相当不错。如果节点规模上千甚至几千或者要做日内滚动优化需要反复求解很多次果断用Gurobi。Gurobi的SOCP求解速度在工程级问题上通常比ECOS快一个数量级。如果追求数值精度或者说问题本身病态程度比较高用Mosek。Mosek的对偶修正和预处理做得非常出色数值稳定性全场最佳。其次模型本身的性能优化也很关键。需要注意以下几个细节一是标幺化。很多工程数据用有名值阻抗小到1e-3电压大到1e4这种池沟量级差异对任何求解器都是噩梦。必须统一用标幺值把网络参数和负荷都映射到同一数量级。二是稀疏性的利用。在YALMIP中尽量避免使用满矩阵运算来生成约束改用稀疏矩阵构造。对于几百个节点的网络可以直接用for循环生成约束这很直观。但如果网络规模更大需要用向量化写法代替for循环或者直接用sdpvar的矩阵形式批量建立DistFlow约束。三是并行求解的考虑。在做方案对比、参数扫描时比如扫描DG容量从0到1 MW取20个点可以并行调用多个求解进程每个进程求解一个参数场景线性加速比非常明显。4.3 数值问题与标幺化处理再展开说一下标幺化。我之前接过一个实际项目对方给的配电网数据是10 kV线路单相接地电容电流、线路长度都是真实有名值电阻在0.1到3欧姆之间负荷在几千瓦到几兆瓦之间电压在10千伏左右。直接用这样的数据建模YALMIP生成的模型条件数非常差ECOS直接告诉我求解精度不满足要求Gurobi虽然能算但解出来的结果物理上不可接受。后来我花了半天时间把全部参数转成标幺值以基准电压10 kV、基准功率1 MVA为基底阻抗的标幺化公式为 Z_pu Z_nom * S_base / V_base^2负荷标幺化直接除以基准功率。转换后所有线路阻抗落在0.001到0.1之间电压在0.95到1.05之间功率在0到1之间条件数瞬间改善了一个数量级求解变得干净利落。所以强烈建议所有做配电网优化的人输入数据和参数一进模型就先做标幺化处理这是经验之谈。另外还有一个容易忽略的细节Matlab变量名的重复赋值。在for循环里建立约束时我经常看到很多人初始化Constraints []然后在循环里用Constraints [Constraints, 新约束]。这样写有个隐患就是Matlab会不断重新分配内存而且如果在循环前忘记初始化循环内第二次引用Constraints的时候其实会报错。推荐使用cell数组保存后合并或者用constraints constraint 新约束的写法YALMIP支持这个运算符。这个小处的优化能减少大规模建模时几倍的内存消耗和时间开销。4.4 扩展方向分布式电源、储能与三相不平衡SOCP配电网最优潮流这个方向在实际项目中通常会往以下几个方向扩展。第一是分布式电源的容量配置与选址。如果把每个节点是否装DG、装到多大容量也当成决策变量那就变成一个混合整数二阶锥规划MISOCP可以用bruteforce枚举、Gurobi自带的分支定界或者启发式算法处理。我在实际项目中用Gurobi求解MISOCP的DG选址定容问题规模30-50个待选节点时求解时间在几十秒到几分钟完全可接受。第二是储能系统的调度优化。把储能充放电功率、容量、荷电状态边界作为决策变量目标函数可以设为平抑电压波动或套利最大化。储能带来的额外约束SOC的时序更新与充放电转换逻辑仍然是形式上的线性约束不会破坏SOCP问题的结构所以扩展起来非常顺滑。第三是三相不平衡配电系统。标准DistFlow模型是单相模型实际配电网特别是低压台区三相不平衡现象很普遍。扩展方案有两类一是用序分量方法把三相解耦本质上变成多条单相序列分别求解二是用三相模型直接建模每条支路的三相功率和每相电压均为变量最后得到的三相二阶锥约束组仍然是凸问题可以用SOCP高效求解。前者速度快后者精度高按需取舍。说实话这套技术栈在配电网规划运行中的覆盖面比很多人想象的要广得多。从最基础的潮流计算、最优潮流到DG接入评估、网架规划、日内滚动调度、电压无功优化SOCP方法在Matlab生态里都能给出稳定、高效、可复现的解法。我个人的经验是如果你在做一个配电网优化问题先硬着头皮用SOCP建模试试大部分情况下它都能给你一个既有理论保障又具备工程可操作性的起点。最后再分享一个实操小技巧网上流传的YALMIP自带例子很多版本参数不一致强烈建议拿到配电网算例数据之后先不优化、先做一遍纯潮流验证把目标函数设成常数0确认潮流计算的结果和BFS前推回代或Matpower的计算结果一致后再去加优化目标。数据校验这步花掉的时间后面一定会以十倍的时间省回来。别的都是虚的跑出正确、可复现的结果才是硬道理。
返回列表