战争策略优化算法,MATLAB代码免费获取

分享了War Strategy Optimization Algorithm战争策略算法源代码及其原文,亲测有效,更多算法可进入 立即下载

注:该算法已按照智能优化算法APP标准格式进行整改,可直接集成到APP中,方便大家与自己的算法进行对比。

战争策略优化算法(War Strategy Optimization Algorithm,WSO)是一种基于古代战争策略的元启发式优化算法。战争战略优化(WSO)是基于军队在战争中的战略运动,将战争策略建模为一个优化过程,每个士兵都动态地向最优值移动。该算法对两种流行的战争策略——进攻和防御策略进行建模,士兵在战场上的位置根据实施的战略而更新。为了提高算法的收敛性和鲁棒性,引入了一种新的权值更新机制和弱士兵重新定位策略。

f83c994b3863f0372aedd856aa6351e1.png

该成果于2022年发表在计算机领域三区SCI期刊“IEEE Access”上,目前被引232次。WSO实现了探索阶段和开发阶段的良好平衡。

28eae93e3c42fb6b89f5f492c19fed20.png

1.算法原理

在每次迭代中,所有士兵都有相同的概率成为国王或指挥官,这取决于他们的战斗强度(适应度值)。国王和指挥官都是战场上的领袖。国王和指挥官在战场上的行动将引导其余的士兵。国王或指挥官都有可能面临对手士兵的激烈竞争,后者有足够的力量诱捕首领。为了避免这种情况,士兵在战争中不仅要根据国王或指挥官的位置来指导,还要根据他们的联合移动战术来指导。

(1)进攻策略

我们模拟了两种战争策略。在第一种情况下,每个士兵根据国王和指挥官的位置更新自己的位置。攻击模型的这种更新机制如图所示。国王占据了有利地位,可以对反对派发动大规模进攻。因此,攻击力或体能最强的士兵被视为国王。在战争开始时,所有士兵的军衔和体重都是一样的。如果士兵成功地执行了战略,他的军衔就会上升。然而,随着战争的进展,所有士兵的等级和权重将根据战略的成功而更新。随着战争接近尾声,国王、军队指挥官和士兵的位置在接近目标时保持非常接近。

0ccded1259ab8ab383b554b9d54ae9cc.png

式中,Xi(t+1)为新位置,Xi为之前的C位置,为指挥官位置,K为国王位置,Wi为权重。

图中士兵周围的彩色圆圈表示基于国王位置的Wi×k−Xi(t)的轨迹点。如果Wi>1,则Wi×k−Xi(t)的位置在国王位置之外,因此更新后的士兵位置在指挥官位置之外。如果Wi<1,则Wi×k−Xi(t)的位置在国王位置和士兵当前位置之间。与之前的情况相比,更新后的士兵位置更近。如果Wi趋向于零,那么士兵的更新位置将非常接近指挥官的位置,这代表了战争的最后阶段。

每个搜索代理的位置更新取决于国王,指挥官和每个士兵的军衔的位置的相互作用。每个士兵的军衔取决于他在战场上的成功历史,这将随后影响加权因子Wi。每个士兵的等级反映了士兵(搜索代理)与目标(适应度值)的接近程度。可以注意到,在其他竞争算法如GWO、WOA、GSA、PSO中的权重因子将线性变化,而在当前提出的WSO算法中,权重(Wi)作为因子α呈指数变化。

如果新位置(Fn)的攻击力(适应性)小于前一位置(Fp),则士兵采取前一位置。

6daa85e88957cbf3a2067e07b7ad4504.png

果该士兵更新位置成功,则该士兵的军衔Ri将被升级

c4434434a294bb5b01acd6dee846c600.png

根据排名,新权重计算如下:

(2)国防战略

第二个战略位置更新是基于国王,军队首领和随机士兵的位置。而排名和权重更新保持不变。

与前一个策略相比,这个战争策略探索了更多的搜索空间,因为它涉及到随机士兵的位置。对于较大的Wi值,士兵会采取较大的步骤并更新其位置。对于小的值,Wi士兵在更新位置时采取小步骤。

(3)替换/重新安置弱兵

对于每一次迭代,找出适应性最差的弱士兵。WSO已经测试了多种替代方法。一种最简单的方法是用下式中的随机士兵替换弱士兵。

第二种方法是将弱兵迁移到更靠近战场全军中位数的位置,如公式所示。这种方法改善了算法的收敛性。

战争策略优化算法流程图如图所示。分配给每个士兵的权重是自适应的,并且会随着迭代而变化。随着战争接近尾声,士兵们为了达到目标而小步前进,每小步的重量都在变化。因为策略是随机选择的,士兵们朝随机的方向移动,而不是精确地跟随国王。这提高了算法的搜索能力。目标区域由军队在战争结束时确定(突出的搜索空间)。军队包围目标,国王和指挥官也非常接近目标。

de3d9f8e2b3f642f2e26daea779459e5.png

2.结果展示

4353e6cf6fc281c9c1fd1e3da82265f3.png

67058c7098465515a039e5a3752220e6.png

b112d63c6473242341c9298d3b80dafc.png

210435a83aef928ff0aba50bb0be8202.png

fa6a24d975c8db146b660f00d2a1a792.png

3.MATLAB核心代码


% 战争策略优化算法(War Strategy Optimization Algorithm,WSO)
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=0;% Loop counter
W1=2*ones(1,pop_size);
Wg=zeros(1,pop_size);

Trajectories=zeros(Soldiers_no,Max_iter);
% Main loop
R=0.1; % Select suitable value based on the application
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;
            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

4.参考文献

[1]Ayyarao T S L V, Ramakrishna N S S, Elavarasan R M, et al. War strategy optimization algorithm: a new effective metaheuristic algorithm for global optimization[J]. IEEE Access, 2022, 10: 25073-25105.

完整代码获取

后台回复关键词:

TGDM817

线性代数学习笔记(十)——矩阵运算(二) 本篇笔记讲解矩阵的幂运算和矩阵的转置,其中矩阵进行幂运算的前提是矩阵为方阵,矩阵幂运算的两条性质与数的幂运算规则类似;矩阵转置的定义与行列式转置类似,但要注意由于矩阵的行数和列数不同,所以转置之后行数和列数变换。 阅读详情

相关推荐

SAP ABAP干货:用REUSE_ALV_GRID_DISPLAY_LVC实现ALV多屏幕独立布局(含handle参数详解)

本文详细解析了SAP ABAP中如何使用REUSE_ALV_GRID_DISPLAY_LVC函数实现ALV多屏幕独立布局,重点介绍了handle参数的技术原理和实际应用。通过变式标识符和LTDX表存储机制,开发者可以确保不同ALV报表屏幕的布局设置互不干扰,提升复杂报表场景下的用户体验。

weixin_29268267的博客 310

基于战争策略优化算法的函数寻优算法

然而,随着战争的进展,所有士兵的级别和权重将根据战略的成功进行更新。每个士兵的军衔反映了士兵(搜索代理)与目标的距离(适应度值)。可以注意到,其他竞争算法(如GWO、WOA、GSA、PSO)中的权重因子将线性变化,而在当前提出的WSO算法中,权重(与之前的策略相比,这种战争策略探索了更多的搜索空间,因为它涉及随机士兵的位置。与之前的情况相比,士兵的更新位置更接近。趋于零,则士兵的更新位置将非常接近指挥官位置,这表示战争的最后阶段。的位置在国王位置之外,因此士兵的更新位置在指挥官位置之外。..........

心升明月的博客 1775

CA51F3系列(国产)+低功耗模式

CA51F351P6芯片是基于1T 8051内核的8位微控制器,通常情况下,运行速度比传统的8051芯片快10倍,性能更加优越。内置8K Flash程序存储器,可多次重复编程的特性给用户开发带来了极大的方便。不仅保留了传统8051芯片的基本特性,还集成了12Bit ADC、LCD/LED驱动、Touch Key、16Bit PWM、 UART、RTC、低电压检测(LVD)等功能模块。支持IDLE、STOP和低速运行三种省电模式以适应不同功耗要求的应用。

WANGJIHUIwang的博客 572

路径规划算法:基于战争策略优化的路径规划算法- 附代码

摘要:本文主要介绍利用智能优化算法战争策略算法来进行路径规划。

Jack旭的博客 937

机器学习 线性回归 头歌实训

第1关:简单线性回归与多元线性回归 第2关:线性回归的正规方程解 第3关:衡量线性回归的性能指标 第4关:scikit-learn线性回归实践 - 波斯顿房价预测

weixin_57270536的博客 1万+

从Reset到Read:深入解析Rolling Shutter曝光流水线

本文深入解析Rolling Shutter(卷帘曝光)的工作原理,重点探讨Reset和Read信号在图像传感器中的关键作用。通过Reset-Read流水线机制,详细解释了曝光控制、时序调优及运动伪影补偿等核心技术,帮助读者理解卷帘曝光在高速摄影和动态场景中的应用。

weixin_42531925的博客 253

智能优化算法:战争策略算法详解/个人学习笔记

基于古代战争策略,提出了一种新的元启发式优化算法。

wubeikun的博客 1809

ABAP代码使用OAuth2.0 Client Credential调用外部API

ABAP-OAuth2.0-调用外部API

m0_74015269的博客 1956

【智能优化算法-战争策略算法】基于战争策略算法求解单目标优化问题附matlab代码

WSO 是 Ayyarao 等人于 2022 年提出一种基于古代战争策略的新型元启发式优化算法。该算法灵感来自于古代战争中的攻击策略和防御策略,并通过士兵在战场上的位置更新来达到求解优化问题的目的。具有寻优能力强,收敛速度快的特点。正在上传…重新上传取消智能优化算法。

matlab_dingdang的博客 357

【天气雷达】双偏振产品-差分反射率ZDR详解

双偏振产品-差分反射率ZDR详解。

珞瑜的博客 5407

CAN 通信测试工具 canutils

概述 CAN,Controller Area Network,控制器局域网,一种高可靠性的现场总线。广泛用于汽车电子、工业控制通信。 canutils 工具包内含 5 个独立的程序:canconfig、candump、canecho、cansend、cansequence。这几个程序的功能简述如下: canconfig:用于配置 CAN 总线接口的参数,主要是波特率和模式。 candump...

一个软件工程师的技术笔记 1万+

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

本文提出了一种基于古代战争策略的新型元启发式优化算法。所提出的战争策略优化算法(War Strategy Optimization, WSO)是基于战争中军队的战术行动。战争策略被建模为一个优化过程,其中每个士兵动态地向最优值移动。该算法模拟了两种流行的战争策略:进攻策略和防守策略。士兵在战场上的位置根据所实施的策略进行更新。为了提高算法的收敛性和鲁棒性,引入了一种新颖的权重更新机制和弱士兵的重新定位策略。所提出的战争策略算法在探索阶段和利用阶段之间取得了良好的平衡。

m0_64583023的博客 972

全国区块链职业技能大赛国赛考题前端功能开发

全国区块链职业技能大赛国赛考题区块链应用前端功能开发

本郡主是喵 1333
上一篇: 基于堆叠去噪自编码器(SDAE)的轴承寿命预测,MATLAB代码
下一篇: 2024最新——逃生优化算法,MATLAB代码免费获取
淘个代码_
博客等级 码龄7年 1万+粉丝 504原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

淘个代码_

不想刀我的可以选择爱我

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

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

打赏作者

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

抵扣说明:

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

余额充值