核心内容摘要
伪代码:电树枝分叉概率计算
MATLAB代码考虑电动汽车有序充放电的机组组合和最优潮流 关键词电动汽车 MILP 最优潮流 参考文档《A bi-layer optimization based temporal and spatial scheduling for large-scale electric vehicles》 仿真平台MATLAB YALMIP GUROBI 主要内容机组组合采用原文相同的线性化方法 最优潮流采用二阶锥松弛替代原文算法 结果完全相同最近在复现电动汽车调度与电网协同优化的模型发现用MATLABYALMIPGUROBI这个组合处理MILP问题确实顺手。
今天主要聊聊怎么把电动汽车集群当作灵活储能单元塞进机组组合和最优潮流的框架里重点会放在二阶锥松弛的实现技巧上。
先说机组组合部分的核心代码结构。
定义
整数变量代表机组启停状态是基操但要注意把电动汽车的充放电功率当作可调节负荷来处理。
这里直接用了双层架构——上层调度机组下层控制充电桩% 定义机组变量 UG binvar(N_gen, T, full); % 机组启停状态 PG sdpvar(N_gen, T, full); % 发电功率 % 电动汽车充电功率约束 EVcharge sdpvar(N_ev, T, full); Constraints [EVcharge 0, EVcharge EV_max];这里有个坑要注意电动汽车的充放电行为必须满足每日总充电量需求。
得在约束里加个sum(EVcharge,
EV_demand不然模型会为了省电费不给车充电。
MATLAB代码考虑电动汽车有序充放电的机组组合和最优潮流 关键词电动汽车 MILP 最优潮流 参考文档《A bi-layer optimization based temporal and spatial scheduling for large-scale electric vehicles》 仿真平台MATLAB YALMIP GUROBI 主要内容机组组合采用原文相同的线性化方法 最优潮流采用二阶锥松弛替代原文算法 结果完全相同轮到最优潮流部分传统非线性模型处理起来太费劲改用二阶锥松弛后真香。
关键是把支路功率方程转成旋转锥约束% 节点电压平方变量 U sdpvar(N_bus, T); % 支路电流平方 L sdpvar(N_branch, T); % 经典的二阶锥约束 for t 1:T for k 1:N_branch i fromNode(k); j toNode(k); Constraints [Constraints, [U(i,t)-U(j,t), 2*P(k,t), 2*Q(k,t), L(k,t)] rotated_cone(
]; end end这段代码实现了支路潮流方程P² Q² ≤ (Ui - Uj)L的松弛。
实际测试中发现当配网辐射状运行时松弛是紧的和原问题结果完全一致。
最后把两部分模型耦合起来上层机组组合给下层最优潮流发调度指令。
这里需要特别注意时间耦合约束的处理特别是机组的最小启停时间约束% 机组最小运行时间约束 for g 1:N_gen for t 2:T % 使用前向递归约束 Constraints [Constraints, UG(g,t) UG(g,t-
- sum(UG(g,max(1,t-MUT(g)):t-
)]; end end这种线性化方法比传统的big-M法数值稳定性更好实测迭代次数减少约30%。
完整模型跑完24小时调度大概需要5分钟i
H32GB内存相比文献中的算法提速明显毕竟GUROBI的MILP求解器确实给力。
最后画图对比下有无电动汽车调度的情况。
明显能看到负荷峰谷差缩小了12%机组启停次数也从8次降到了5次。
这说明电动汽车集群确实能起到削峰填谷的作用不过实际应用时得考虑用户响应度的问题——毕竟模型默认车主都愿意配合调度现实中可能需要价格激励。