基于战争优化算法(WSO)的光伏模型参数估计研究(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现

算法文献来源:

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).

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值