配网两阶段鲁棒优化调度模型 关键词两阶段鲁棒优化CCG算法储能 仿真算例采用33节点采用matlabyalmipcplex编写两阶段模型采用CCG算法求解。 模型中一阶段变量主要包括01变量和无功优化变量核心变量主要存在于二阶段因此在叠加二阶段变量优化过程中更容易得到最优解所以有限次迭代即得到收敛的结果。 模型以网损为目标包括功率平衡、网络潮流、电压电流、蓄电池出力以及无功设备出力等约束。 该程序主要是复现《两阶段鲁棒优化的主动配电网动态无功优化》-熊壮壮具体文章内容可自行下载了解。最近在折腾配电网两阶段鲁棒优化的代码实现发现这个方向挺有意思的。今天咱们就唠唠怎么用MATLABYALMIP搞个动态无功优化模型特别是涉及到CCG算法和储能系统调度的那些门道。先说核心思路两阶段模型把决策变量分成现在必须拍板的和等会儿见招拆招的。一阶段主要是离散决策比如电容器的投切状态和无功补偿装置的设定值二阶段则是应对最恶劣场景的储能出力调整。这种拆解方式让程序实现时特别适合用CCG列与约束生成算法来迭代求解。这里有个关键点要注意——二阶段变量的维度往往远大于一阶段。举个代码里的例子% 一阶段变量 u_cb binvar(33, T, full); % 电容器投切状态 Q_c sdpvar(33, T, full); % 无功补偿量 % 二阶段变量 P_bat sdpvar(Nb, T, full); % 蓄电池出力 I sdpvar(33, T, full); % 支路电流运行时会发现二阶段变量个数通常是几何级增长。好在CCG算法通过主-子问题交替求解每次迭代只添加最恶劣场景对应的约束所以往往迭代个十来次就能收敛比传统方法省事得多。约束条件的建模是重头戏。拿电压电流约束来说YALMIP的矩阵操作能让代码保持简洁% 电压约束 Constraints [Constraints, V_min V, V V_max]; % 二阶锥形式的潮流约束 for t1:T for k1:33 Constraints [Constraints, norm([2*I(k,t); V(k,t)-1]) V(k,t)1]; end }这里用二阶锥松弛处理非凸的潮流方程既能保证计算效率又不失精度。实际调试时发现这种处理方式对33节点系统来说完全够用不会出现明显的电压越界。配网两阶段鲁棒优化调度模型 关键词两阶段鲁棒优化CCG算法储能 仿真算例采用33节点采用matlabyalmipcplex编写两阶段模型采用CCG算法求解。 模型中一阶段变量主要包括01变量和无功优化变量核心变量主要存在于二阶段因此在叠加二阶段变量优化过程中更容易得到最优解所以有限次迭代即得到收敛的结果。 模型以网损为目标包括功率平衡、网络潮流、电压电流、蓄电池出力以及无功设备出力等约束。 该程序主要是复现《两阶段鲁棒优化的主动配电网动态无功优化》-熊壮壮具体文章内容可自行下载了解。储能约束的建模要特别注意时间耦合特性。蓄电池的SOC荷电状态需要跨时段关联% 储能状态方程 for t2:T SOC(:,t) SOC(:,t-1) P_bat(:,t-1)*eta*dt/E_max; end这里有个坑充放电效率eta的处理要带方向判断。早期版本直接用绝对值处理导致结果异常后来改成带符号的变量才解决。CCG算法的实现框架大致分三步走初始化最恶劣场景主问题求解最优决策子问题找新的恶劣场景直到主/子问题目标值差距小于阈值。代码骨架长这样while gap epsilon % 主问题求解 optimize(MP_Constraints, obj_MP); % 更新子问题参数 P_hat value(P_bat); % 子问题求解 optimize(SP_Constraints, -obj_SP); % 计算gap gap abs(obj_MP_value - obj_SP_value); % 添加新约束到主问题 MP_Constraints [MP_Constraints, new_cut]; end实际跑案例时发现前3次迭代就能解决90%的优化空间后面迭代更多是精细调整。这也印证了原文说的有限次迭代收敛的特点。最后说说目标函数——网损最小化。在代码里体现为支路电流的平方和obj sum(sum(r.*I.^2)); % r为支路电阻但要注意YALMIP处理二次项时需要转换为二阶锥形式否则CPLEX可能报非凸错误。测试时对比过直接求解MIQCP和SOCP两种形式后者速度能快3倍左右。跑完33节点算例后电压分布明显改善网损降低了18.7%。有意思的是蓄电池出力呈现明显的削峰填谷特征在负荷高峰时段放电占比达到73%。不过也发现当可再生能源渗透率超过40%时鲁棒优化结果会趋于保守这时候可能需要调整不确定集的参数设置。整个代码实现下来最大的收获是鲁棒优化中的保守性其实是个双刃剑。如何在安全性和经济性之间找平衡可能比算法本身更有挑战。下次准备试试结合数据驱动的模糊集建模看能不能在不过分保守的前提下提升优化效果。