【优化求解】基于狼群算法WPA求解最优目标matlab代码

131 阅读4分钟

1 简介

基于狼群群体智能,模拟狼群捕食行为及其猎物分配方式,抽象出游走、召唤、围攻3种智能行为以 及“胜者为王”的头狼产生规则和“强者生存”的狼群更新机制,提出一种新的群体智能算法———狼群算法(wolfpackalgorithm,WPA),并基于马尔科夫链理论证明了算法的收敛性。仿真结果表明,该算法具有较好的全局收敛性和计 算鲁棒性,尤其适合高维、多峰的复杂函数求解。

严酷的生活环境和千百年的进化,造就了狼群严密的组织系统及其精妙的协作捕猎方式。从成吉思汗时期蒙古铁骑的“狼群战法”到纳粹德军将领邓尼茨猖狂一时的“狼群潜艇战术”,再到美军研究的电子对抗利器-“狼 群 攻 击系统”,都无不彰显出狼群群体智慧的巨大魅力。狼过着群居生活且都有其明确的社会分工,它们团结协作为狼群的生存与发展承担着各自的责任。头狼:头狼始终是狼群中最具智慧和最凶猛的,是 在“弱肉强食、胜者为 王”式的残酷竞争中产生的首领。它 不断地根据狼群所感知到的信息进行决策,负责整个狼群的指挥和把关维护,既要避免狼群陷入危险境地又要指挥狼群以期尽快地捕获猎物。探狼:寻找猎物时,狼群不会全体出动而是派出少数精锐的探狼在猎物的可能活动范围内游猎,根据空气中猎物留下的气味进行自主决策,气味越浓表明狼离猎物越近,探狼始终就朝着气味最浓的方向搜寻。猛狼:一旦探狼发现猎物踪迹,就会立即向头狼报告,头狼视情通过嚎叫召唤周围的猛狼来对猎物进行围攻。周围的猛狼闻声则会自发地朝着该探狼的方向奔袭,向 猎 物进一步逼近。猎物分配规 则:捕 获 猎 物 后,狼群并不是平均分配猎物,而是按“论功行赏、由 强 到 弱”的 方 式 分 配,即 先 将 猎 物分配给最先发现、捕到猎物的强壮的狼,而后再分配给弱小的狼。尽管这种近乎残酷的食物分配方式会使得少数弱狼由于食物缺乏而饿死,但此规则可保证有能力捕到猎物的狼获得充足的食物进而保持其强健的体质,在 下 次 捕 猎 时仍可顺利地捕到猎物,从而维持着狼群主体的延续和发展。在下文中,将对上述狼群行为和规则进行具体描述和实现

2 部分代码

% clc
% clear
% close all
% Function_name='F1'; % 获取函数名Name of the test function that can be rate,AIN,diedai,time]=IWPA_algorithm(n,m,maxgen,lb,ub,fobj,biaozhun,fazhi,jscishu,step,ww,b);
% save F17_result1
% % 
% clc
% clear
% close all
% Function_name='F18'; % 获取函数名Name of the test function that can be from F1 to F20
% n=100;%n为人工狼总数
% maxgen=2000;
% jscishu=20;
% fazhi=10e-6;
% step=0.1;%步长因子
% ww=0.1;%距离判定因子
% b=3;%更新比例因子
% [lb,ub,m,fobj,biaozhun]=Get_Functions_details(Function_name);%获取函数详细信息 Load details of the selected benchmark function
% [best,pinjun,worst,biaozhuncha,success_rate,AIN,diedai,time]=IWPA_algorithm(n,m,maxgen,lb,ub,fobj,biaozhun,fazhi,jscishu,step,ww,b);
% save F18_result

% clc
% clear
% close all
% Function_name='F19'; % 获取函数名Name of the test function that can be from F1 to F20
% n=100;%n为人工狼总数
% maxgen=2000;
% jscishu=20;
% fazhi=10e-6;
% step=0.04;%步长因子
% ww=0.06;%距离判定因子
% b=5;%更新比例因子
% [lb,ub,m,fobj,biaozhun]=Get_Functions_details(Function_name);%获取函数详细信息 Load details of the selected benchmark function
% [best,pinjun,worst,biaozhuncha,success_rate,AIN,diedai,time]=IWPA_algorithm(n,m,maxgen,lb,ub,fobj,biaozhun,fazhi,jscishu,step,ww,b);
% save F19_result
% 
% 
clc
clear
close all
Function_name='F2'; % 获取函数名Name of the test function that can be from F1 to F20
n=100;%n为人工狼总数
maxgen=200;
jscishu=2;
fazhi=10e-6;
step=0.1;%步长因子
ww=0.1;%距离判定因子
b=5;%更新比例因子
[lb,ub,m,fobj,biaozhun]=Get_Functions_details(Function_name);%获取函数详细信息 Load details of the selected benchmark function
[best,pinjun,worst,biaozhuncha,success_rate,AIN,diedai,time]=IWPA_algorithm(n,m,maxgen,lb,ub,fobj,biaozhun,fazhi,jscishu,step,ww,b);
figure
% save F20_result
plot(diedai(1,:))

3 仿真结果

4 参考文献

[1]潘菲, 张多利, and 宋宇鲲. "基于狼群算法的低功耗片上网络映射." 合肥工业大学学报:自然科学版 43.7(2020):7.

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

5 MATLAB代码与数据下载地址

见博客主页