核心内容摘要
Prompt - 模糊指令=模糊答案
matlab程序设计研究范围综合能源系统优化调度微电网优化集群优化主从博弈双层规划综合需求响应碳交易机制阶梯型碳交易机制多时间尺度优化包括但不仅限于此欢迎咨询。
最近在搞综合能源系统优化调度发现这玩意儿比想象中带劲。
特别是微电网和主从博弈掺和到一块的时候那参数调得我头皮发麻。
今天随手写几个实际用到的代码片段给各位正在搞调度的兄弟点参考。
先看个微网经济调度的基础框架。
用粒子群算法处理风光储协同问题时目标函数得考虑爬坡惩罚下面这段核心代码我调试了三天才跑通function cost objective(x) % x包含风机出力、光伏、储能充放电 P_wind x(1:
; P_pv x(25:
; P_bess x(49:
; % 爬坡率惩罚计算 ramp_penalty 0; for t2:24 ramp_rate abs(P_wind(t) - P_wind(t-
)/
5; % 半小时尺度 if ramp_rate
2 ramp_penalty ramp_penalty 50*(ramp_rate-
0.
; end end cost sum(P_wind*
3 P_pv*
15 abs(P_bess)*
0.
ramp_penalty; end这里有个坑储能充放电必须取绝对值否则会出现负电价漏洞。
上次有个师弟没注意这个仿真结果直接倒贴钱运行笑死。
双层规划里主从博弈的实现更刺激。
用fmincon嵌套遗传算法时处理领导层和跟随层的迭代得用全局变量传参。
比如处理需求响应中的价格博弈global follower_response; options optimoptions(ga,PopulationSize,
; for epoch 1:10 % 主从博弈迭代 % 领导者优化电价 leader_price fmincon((p)leader_obj(p,follower_response),...); % 跟随者优化用电计划 follower_response ga((x)follower_obj(x,leader_price),... ,options); if abs(leader_price - prev_price)
01 break; % 博弈收敛 end end注意这里的全局变量可能会引发线程冲突后来改用.mat文件传递数据才稳定。
这种骚操作论文里从来不写都是血泪经验。
matlab程序设计研究范围综合能源系统优化调度微电网优化集群优化主从博弈双层规划综合需求响应碳交易机制阶梯型碳交易机制多时间尺度优化包括但不仅限于此欢迎咨询。
阶梯型碳交易机制在代码里实现起来特别适合用状态变量。
我常用这种结构处理碳排放区间划分carbon_emissions sum(generation)*
8; % 假设排放系数 if carbon_emissions 1000 tax_rate
3; elseif carbon_emissions 5000 tax_rate
5; else tax_rate
8; end carbon_cost carbon_emissions * tax_rate;但实际项目中发现这种硬编码不灵活后来改成从Excel读取阶梯阈值方便甲方随时改政策参数。
多时间尺度优化最麻烦的是时间耦合约束。
处理储能系统的时候需要把滚动时域和长时域模型嵌套% 外层24小时优化 for hour 1:24 % 内层15分钟级优化 quarter_hour_steps (hour-
*4 1 : hour*4; [opt_power(quarter_hour_steps), soc] ... fmincon((x)short_term_obj(x, hour),...); % 更新储能SOC状态 global_soc(hour
soc(end); end这里的关键是SOC状态的传递必须精确到秒有次偷懒用整点数据传递结果导致储能模型出现震荡发散。
搞这行的应该都经历过凌晨三点对着MATLAB报错弹窗骂娘的时刻。
不过当看到调度成本曲线终于平滑收敛时那种快感堪比五杀。
最近在尝试把强化学习整合到需求响应里等有了稳定结果再跟大伙分享。
有搞集群优化或者碳交易的朋友欢迎来交流怎么处理那些见鬼的非凸约束。