【优化求解】基于和声搜索算法对IEEE33节点进行无功优化matlab代码

184 阅读1分钟

1 简介

在和声搜索算法( HSA) 中,为了寻找全局最优,需要进行初始化和声记忆库,通过和声保留、随机产生、音调调节 3 种方式对变量进行更新,如果新产生的解优于记忆库中最劣的解,则更新记忆库,经过反复迭代达到全局最优的效果。

2 部分代码

 tic

 numb =11;

 nods  = 33;

 Nods = nods - 1;

 HMS = 20;

 Tmax = 5000;

 %%读取网络参数

 filename = '\data\nods33.xls';

 Range1 = ['A2:D',int2str(1 + Nods * numb )];

 Range2 = ['E2:H',int2str(1 + Nods * numb )];

 Zr = xlsread(filename,'sheet1',Range1);

 Zi = xlsread(filename,'sheet1',Range2);

 kkkk = 1i;

 Zall = Zr + Zi * kkkk;

 ComC = [1,2,3,0,0,0];

 Tap = ones(Nods,2);

 ComC = ComC';

  Varrange = [0 * ones(Nods,1),12.66 * ones(Nods,1)];

[S0,V0,RXtoSource0,Ploss0,Stability0,Right0] = PowerFlow(Zall,ComC,Tap,Varrange,numb);

[ComCT,PlossP] = HSA(HMS,Tmax,numb, Zall, ComC);

ComC = ComCT(Tmax,1:6)';

Tap(1,1) = ComCT(Tmax,7);

Tap(1,2) = ComCT(Tmax,8);

[Ss,Vv,RXtoSource,Ploss,Stability,Right] = PowerFlow(Zall,ComC,Tap,Varrange,numb);

resultx = ComC;

resulty = (1 - PlossP) * 100;

realPloss =  PlossP * Ploss0;

showresults = [ones(Tmax,1),Ploss0 * ones(Tmax,1),realPloss,(1 - PlossP) * 100  ];

for i = 1 : Tmax 

  showresults(i,1) = i;      

end

showresults

showV = [ones(nods,1),V0,Vv];

for i = 1 : nods 

  showV(i,1) = i;      

  getNods(i,1) = i;

end

showV

figure (2);

plot(getNods,abs(V0),'r+:',getNods,abs(Vv),'g+:');

xlabel('节点');ylabel('电压幅值');

save solution.txt resultx -ASCII

save results.txt resulty -ASCII

toc

%设定的网损参考量end

3 仿真结果

4 参考文献

[1]张皓等. "基于和声搜索算法的主动配电网无功优化." 南昌大学学报:工科版 39.3(2017):4.

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页