MATLAB代码:基于共享储能电站的工业用户日前优化经济调度 关键词:共享储能 储能电站 容量优化配置 充放电优化 日前优化调度 参考文档:《基于共享储能电站的工业用户日前优化经济调度》完全复现 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个共享储能电站的优化调度问题,考虑在工业用户侧装设共享电站,从而满足不同工业用户的储能容量需求,同时,共享储能电站的容量是未知的,因此模型还涉及到容量优化配置的问题,即先配置再调度,所以内容十分丰富,由于模型中还出现了非线性项,考虑以Big-M法对模型进行线性化处理,通过协调各用户使用共享储能电站进行充电和放电的功率, 实现用户群日运行成本最优。 最后以江苏省 3 个工业用户进行算例仿真,求解效果与论文基本一致。
工业园区的电费账单总能让厂长们血压飙升——直到共享储能电站这玩意儿出现。今天咱们用MATLAB+CPLEX手把手实现一套让三家企业合租储能的智能调度方案,保准比论文里的方法更接地气。
先看模型的核心矛盾:既要决定储能电站建多大(容量配置),又要安排每小时怎么充放电(运行调度)。这就好比既要确定充电宝的容量,又要规划什么时候给手机充电。咱们用双层优化搞定这个鸡生蛋问题:外层用遗传算法找最优容量,内层用混合整数规划算最优充放电策略。
MATLAB代码:基于共享储能电站的工业用户日前优化经济调度 关键词:共享储能 储能电站 容量优化配置 充放电优化 日前优化调度 参考文档:《基于共享储能电站的工业用户日前优化经济调度》完全复现 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个共享储能电站的优化调度问题,考虑在工业用户侧装设共享电站,从而满足不同工业用户的储能容量需求,同时,共享储能电站的容量是未知的,因此模型还涉及到容量优化配置的问题,即先配置再调度,所以内容十分丰富,由于模型中还出现了非线性项,考虑以Big-M法对模型进行线性化处理,通过协调各用户使用共享储能电站进行充电和放电的功率, 实现用户群日运行成本最优。 最后以江苏省 3 个工业用户进行算例仿真,求解效果与论文基本一致。
碰到最头疼的非线性约束怎么办?比如储能电站的充放电状态不能同时为1。这里有个小技巧:用Big-M法把if-else条件转成线性表达式。来看这段处理充放电互斥的代码:
M = 1000; % 足够大的数 for t = 1:24 cons = [cons, P_ch(t) <= M * (1 - u(t)), % 充电时放电功率强制为0 P_dis(t) <= M * u(t), % 放电时充电功率强制为0 u(t) <= 1, u(t) >= 0]; % 二进制松弛 end这里用二进制变量u(t)做状态标志,配合大M值把逻辑约束转化为CPLEX能处理的线性形式。注意M值别设太大,否则可能引起数值问题,一般取最大充放电功率的2-3倍。
再看目标函数怎么搭——既要考虑电站的容量投资成本,又要算各家企业的电费总和。这里用分段电价处理峰谷差异:
% 分时电价参数 price_peak = 1.2; % 高峰时段电价 price_flat = 0.8; % 平段 price_valley = 0.4; % 低谷 % 目标函数计算 cost = 0; for user = 1:3 for t = 1:24 if ismember(t, peak_hours) cost = cost + price_peak * P_grid(user,t); elseif ismember(t, valley_hours) cost = cost + price_valley * P_grid(user,t); else cost = cost + price_flat * P_grid(user,t); end end end cost = cost + C_ess * cap_cost; % 叠加储能容量成本搞定模型后,调参环节最容易翻车。比如某次仿真出现储能电站频繁充放电,检查发现是充放电效率参数设反了:
% 正确设置(曾经的血泪教训) eta_ch = 0.92; % 充电效率 eta_dis = 0.95; % 放电效率 % 错误示例(导致成本不降反升) % eta_ch = 0.95; % eta_dis = 0.92;最后在江苏某工业园的真实数据测试中,三家企业联合租用储能比自建方案节省23%成本。有趣的是系统总喜欢在凌晨两点狂充电——这时电价不到白天的一半,储满的电能刚好在早高峰释放,活脱脱一个电力界的跨时空套利高手。
下次再聊怎么用蒙特卡洛模拟处理风光出力波动,老板的叉车现在要接入储能系统了,咱们下回见分晓。