微网优化调度,应用粒子群智能算法,本程序是matlab运行,构造了风-光-柴储并网型微电网,以微网运行成本最低为优化目标,优化出各部分出力 程序较为基础,它把用智能算法求解微网调度问题的一般流程都包括了,有详细的注释,基础中的基础, 重要的是优化算法怎么套用在我们的实际优化问题 欢迎想学习优化的同学咨询学习。
最近在搞微电网优化调度,发现粒子群这玩意儿还真挺适合新手入坑的。就拿这个风-光-柴储并网系统来说,咱们的目标是让24小时运行总成本最低,说白了就是怎么让风机、光伏、柴油机和储能系统配合着干活最省钱。
先看代码里这个参数设置,特别有意思:
n_pop = 50; % 鸟群规模 max_iter = 200; % 扑棱翅膀次数 w = 0.8; % 惯性权重——鸟的念旧程度 c1 = 1.5; % 自我认知系数 c2 = 2.0; % 群体认知系数这里面的w参数就像给算法加了性格设定——数值越大,粒子越恋旧,喜欢保持原来的运动方向。c1和c2这两个参数要搞平衡,我之前试过把c2调成3.0,结果算法直接变成无脑跟风怪,早早就收敛到局部最优了。
适应度函数是核心中的核心,这里有个骚操作:
function cost = fitness(particle) % 粒子解码:前24维是风机出力,接着24维是光伏... wind = particle(1:24); pv = particle(25:48); diesel = particle(49:72); bat = particle(73:96); % 约束处理:储能充放电功率不能过载 bat(bat > bat_max) = bat_max; bat(bat < -bat_max) = -bat_max; % 总成本 = 风机运维 + 光伏运维 + 柴油燃料费 + 购电费 total_cost = sum(wind*C_wind + pv*C_pv + diesel*C_diesel... + max(0, load - wind - pv - diesel - bat)*C_grid); % 柴油机启停惩罚项 cost = total_cost + sum(abs(diff(diesel>0)))*1000; end这里把柴油机的启停惩罚直接揉进目标函数,相当于给频繁开关机加了个暴击伤害。有个新手容易踩的坑是忘记处理储能充放电的连续性约束,这里用了个简单粗暴的限幅处理,虽然不够精细但胜在见效快。
微网优化调度,应用粒子群智能算法,本程序是matlab运行,构造了风-光-柴储并网型微电网,以微网运行成本最低为优化目标,优化出各部分出力 程序较为基础,它把用智能算法求解微网调度问题的一般流程都包括了,有详细的注释,基础中的基础, 重要的是优化算法怎么套用在我们的实际优化问题 欢迎想学习优化的同学咨询学习。
主循环里这个速度更新公式值得细品:
v = w*v + c1*rand().*(pbest - pos) + c2*rand().*(gbest - pos); pos = pos + v;每次迭代粒子都在个人最好位置和群体最好位置之间反复横跳。我试过把rand()换成固定值0.5,结果算法就像喝醉的水手,在解空间里晃悠半天找不到北。
运行完程序后,看着各电源的出力曲线逐渐收敛,突然理解为什么说优化就像在黑暗森林里找路——既要探索未知区域(全局搜索),又得深耕已知沃土(局部开发)。这个基础版虽然没考虑风光预测误差这些高级操作,但把"问题建模-算法适配-约束处理"的套路玩明白了,下次加个需求侧响应或者多目标优化应该能直接套模板。
最后给个小建议:调参时别光盯着收敛曲线看,多输出各时段的出力分布,有时候会发现算法为了省几块钱成本,让柴油机在半夜疯狂输出的鬼畜操作——这可不叫优化,这叫行为艺术了。