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代码与数据下载地址
见博客主页