💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
目录
算法文献来源:
https://ieeexplore.ieee.org/document/9718247
💥1 概述
该文一种基于古代战争策略的元启发式优化算法。然后基于战争优化算法(WSO)的光伏模型参数估计进行研究。并用Matlab代码实现。
战争战略优化(WSO)基于战争期间陆军部队的战略调动。战争策略被建模为一个优化过程,其中每个士兵都动态地向最佳值移动。该算法模拟了两种流行的战争策略,即攻击和防御策略。战场上士兵的位置根据实施的策略进行更新。为了提高算法的收敛性和鲁棒性,该文介绍了一种新的权重更新机制和弱兵迁移策略。所提出的战争策略算法实现了勘探和开发阶段的良好平衡。给出了该算法的详细数学模型。在50个基准函数和4个工程问题上测试了所提算法的有效性。将该算法的性能与十种流行的元启发式算法进行了比较。针对各种优化问题的实验结果证明了所提算法的优越性。
📚2 运行结果
部分代码:
function [King_fit,King,Convergence_curve]=WSO(Soldiers_no,Max_iter,lb,ub,dim,fobj)
% global W1 fitness_history position_history Trajectories l
% fitness_history=zeros(Soldiers_no,Max_iter);
% position_history=zeros(Soldiers_no,Max_iter,dim);
% initialize alpha, beta, and delta_pos
King=zeros(1,dim);
King_fit=inf;
Positions=initialization(Soldiers_no,dim,ub,lb);
pop_size=size(Positions,1);Convergence_curve=zeros(1,Max_iter);
Positions_new=zeros(size(Positions));
fitness_old=inf*ones(1,pop_size);
fitness_new=inf*ones(1,pop_size);
l=1;% Loop counter
W1=2*ones(1,pop_size);
Wg=zeros(1,pop_size);
Trajectories=zeros(Soldiers_no,Max_iter);
% Main loop
R=0.8;
for j=1:size(Positions,1)
fitness=fobj(Positions(j,:));
fitness_old(j)=fitness;
if fitness<King_fit
King_fit=fitness;
King=Positions(j,:);
end
end
while l<Max_iter
% l
[~,tindex]=sort(fitness_old);
Co=Positions(tindex(2),:);
iter =l;
com=randperm(pop_size);
for i=1:pop_size
RR=rand;
if RR<R
D_V(i,:)=2*RR*(King-Positions(com(i),:))+1*W1(i)*rand*(Co-Positions(i,:));
else
D_V(i,:)=2*RR*(Co-King)+1*rand*(W1(i)*King-Positions(i,:));
end
Positions_new(i,:)=Positions(i,:)+D_V(i,:);
Flag4ub=Positions_new(i,:)>ub;
Flag4lb=Positions_new(i,:)<lb;
Positions_new(i,:)=(Positions_new(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;
fitness=fobj(Positions_new(i,:));
fitness_new(i) = fitness;
if fitness<King_fit
King_fit=fitness;
King=Positions_new(i,:);
end
% Co
if fitness<fitness_old(i)
Positions(i,:)=Positions_new(i,:);
fitness_old(i)=fitness;
% else
Wg(i)=Wg(i)+1;
W1(i)=1*W1(i)*(1-Wg(i)/Max_iter)^2;
end
% [~,tindex1]=max(fitness_old);
% Positions(tindex1,:)=lb+rand*(ub-lb);
% W1(tindex1)=0.5;
end
if l<1000
[~,tindex1]=max(fitness_old);
Positions(tindex1,:)=lb+rand*(ub-lb);
% Positions(tindex1,:)=(1-randn(1))*(King-median(Positions(1:pop_size,:)))+Positions(tindex1,:);
% Positions(tindex1,:)=rand*King;
% W1(tindex1)=0.5;
end
l=l+1;
Convergence_curve(l)=King_fit;
end
🎉3 参考文献
[1]Ayyarao, TummalaS LV, N. S. S. RamaKrishna, Rajvikram Madurai Elavarasam, Nishanth Polumahanthi, M. Rambabu, Gaurav Saini, Baseem Khan, and Bilal Alatas. "War Strategy Optimization Algorithm: A New Effective Metaheuristic Algorithm for Global Optimization." IEEE Access (2022).
[2]Ayyarao, Tummala SLV, and Polamarasetty P. Kumar. "Parameter estimation of solar PV models with a new proposed war strategy optimization algorithm." International Journal of Energy Research (2022).