MATLAB代码:基于两阶段鲁棒优化算法的微网电源容量优化配置 关键词:容量优化配置 微网 两阶段鲁棒规划 仿真平台:MATLAB YALMIP+CPLEX 主要内容:代码主要做的是一个微网中电源容量优化配置的问题,即风电、光伏、储能以及燃气轮机的容量规划问题,程序考虑了不确定性,采用两阶段鲁棒优化方法进行优化,一阶段主要决策储能、风电、光伏的容量,二阶段主要规划风光燃储的实际出力变量,最后结果不仅给出了微网电源容量配置的结果,还给出了各个机组的出力等,效果非常好,具体可看图
如何在不确定环境下搞定微网电源最优配置?今天咱们直接上干货,聊聊用MATLAB玩转两阶段鲁棒规划。先看这张图(脑补风光储协同出力曲线),这种丝滑的能源调度背后,全靠两阶段优化撑着场子。
一阶段咱们先拍板设备容量,相当于给系统定个"体格"。YALMIP里这么定义决策变量:
W_cap = sdpvar(1); % 风机 PV_cap = sdpvar(1); % 光伏 ESS_cap = sdpvar(1); % 储能容量 ESS_power = sdpvar(1); % 储能功率这里有个骚操作——ESS的容量和功率分开优化,毕竟电池的充放电速率和总容量是两码事。约束条件得框死物理限制,比如风光储的容量不能为负,储能功率和容量的比例别太离谱。
二阶段才是真刀真枪的战场,每个时刻的出力都要在不确定性面前稳如老狗。看这段核心代码:
% 不确定集定义 P_wind_actual = P_wind_nom + uncertainty*wind_range; P_pv_actual = P_pv_nom + uncertainty*pv_range; % 鲁棒约束 Constraints = [... sum(ESS_charge) <= ESS_power,... P_gas >= demand - P_wind_actual - P_pv_actual - ESS_discharge... ];这里的uncertainty参数就像个调皮的孩子,在[-1,1]之间疯狂试探。我们用的box不确定集虽然简单,但配合鲁棒对等(Robust Counterpart)方法,足够让系统在风光出力最坑爹的时候也不崩盘。
MATLAB代码:基于两阶段鲁棒优化算法的微网电源容量优化配置 关键词:容量优化配置 微网 两阶段鲁棒规划 仿真平台:MATLAB YALMIP+CPLEX 主要内容:代码主要做的是一个微网中电源容量优化配置的问题,即风电、光伏、储能以及燃气轮机的容量规划问题,程序考虑了不确定性,采用两阶段鲁棒优化方法进行优化,一阶段主要决策储能、风电、光伏的容量,二阶段主要规划风光燃储的实际出力变量,最后结果不仅给出了微网电源容量配置的结果,还给出了各个机组的出力等,效果非常好,具体可看图
个人觉得这种结构最妙的地方在于:第一阶段的投资成本和第二阶段的运行成本通过鲁棒优化形成动态博弈。用CPLEX求解时,会生成一个min-max的双层结构,相当于让系统自己跟自己讨价还价——"既要建设成本低,又要运行时不翻车"。
结果展示部分绝对惊艳(想象折线图上风光储的出力曲线完美贴合负荷曲线)。特别要提燃气轮机这个备胎,在风光拉胯时秒变救场王。某次仿真结果显示,鲁棒方案比传统确定性规划虽然初期投资多花8%,但运行成本直降23%,典型的舍不得孩子套不着狼。
最后奉劝各位:玩鲁棒优化千万别在不确定集上瞎浪。曾经有同行把风电预测误差设到±50%,结果储能配置大到能供电竞酒店用——模型是鲁棒了,钱包也彻底凉凉。建议先用历史数据做个不确定性量化,比拍脑袋靠谱多了。
代码包里还有个彩蛋:用蒙特卡洛模拟生成1000种风光场景做后验检验。鲁棒方案在95%的场景下运行成本低于阈值,这波啊,叫用数学的确定性对抗现实的不确定性。