1 简介

灰狼群体具有严格的社会支配等级且其等级划分呈金字塔形式,在捕捉猎物时,灰狼是通过相交流共享的体制来模拟的。其他智能算法类似的是,每一个可能解都由每头灰狼的位置来对应。种群的发展需要不断地更新,为了选出 3 只头狼,种群内的狼将被逐一进行评价,在这个过程中,算法起到评价的作用。接下来前进的方向将由这 3只头狼的位置所决定。由于灰狼算法参数较少,收敛较快,所以广泛应用于众多领域,尤其是实际工程领域应用最广。在该算法中,狼群通过竞选选出α 狼作为头狼,就意味着 α 狼将处于金字塔顶端的位置,同时 α 狼群做的所有决定都将代表整个狼群,但这并非表示狼群是全部专制的,在某种程度上也有一定的民主,比如狼群中有时也会存在其他的狼。当有任务需要执行时,α 狼将发号施令,其余狼群只需配合执行即可,因此 α 狼也就当之无愧的成为了狼群中最主要的狼。当狼群需要交配时,只能选择在自己的群体中进行交配。值得一提的是,α 狼之所以成为最主要的狼,其原因并不在于 α狼是最强的,而在于它拥有其他狼所不具备的优越的组织管理的能力。在狼群中 β 狼的地位近乎于 α 狼,这一点可以从狼群执行的其他群体活动中看出,β 狼是第二决策者。 β 狼在活动中都需要听从α 狼的指挥,同时其他更低级别的狼群也要听从它的指挥。在灰狼群体中,位于第三等级是 δ 狼,在严格的等级制度中,δ 狼必须遵从 α 狼和 β 狼的命令,δ 狼不是最低一级,在它的下一级还存在着 ω 狼,ω 狼在整个群体中担任侦查和围捕猎物的责任,也是灰狼群体中等级最低的。虽然它们看起来无足轻重,但一旦失去它们这一群体,整个灰狼种群都将面临着基层缺失的危险,所以也可以看出它们是狼群的重要组成部分。

2 部分代码

%___________________________________________________________________%
% Multi-Objective Grey Wolf Optimizer (MOGWO)                     %
% Source codes demo version 1.0                                   %%clear all
clcdrawing_flag = 1;TestProblem='UF2';
nVar=10;fobj = cec09(TestProblem);xrange = xboundary(TestProblem, nVar);% Lower bound and upper bound
lb=xrange(:,1)';
ub=xrange(:,2)';VarSize=[1 nVar];GreyWolves_num=100;
MaxIt=1000;  % Maximum Number of Iterations
Archive_size=100;   % Repository Sizealpha=0.1;  % Grid Inflation Parameter
nGrid=10;   % Number of Grids per each Dimension
beta=4; %=4;   % Leader Selection Pressure Parameter
gamma=2;    % Extra (to be deleted) Repository Member Selection Pressure% InitializationGreyWolves=CreateEmptyParticle(GreyWolves_num);for i=1:GreyWolves_numGreyWolves(i).Velocity=0;GreyWolves(i).Position=zeros(1,nVar);for j=1:nVarGreyWolves(i).Position(1,j)=unifrnd(lb(j),ub(j),1);endGreyWolves(i).Cost=fobj(GreyWolves(i).Position')';GreyWolves(i).Best.Position=GreyWolves(i).Position;GreyWolves(i).Best.Cost=GreyWolves(i).Cost;
endGreyWolves=DetermineDomination(GreyWolves);Archive=GetNonDominatedParticles(GreyWolves);Archive_costs=GetCosts(Archive);
G=CreateHypercubes(Archive_costs,nGrid,alpha);for i=1:numel(Archive)[Archive(i).GridIndex Archive(i).GridSubIndex]=GetGridIndex(Archive(i),G);
end% MOGWO main loopfor it=1:MaxIta=2-it*((2)/MaxIt);for i=1:GreyWolves_numclear rep2clear rep3% Choose the alpha, beta, and delta grey wolvesDelta=SelectLeader(Archive,beta);Beta=SelectLeader(Archive,beta);Alpha=SelectLeader(Archive,beta);% If there are less than three solutions in the least crowded% hypercube, the second least crowded hypercube is also found% to choose other leaders from.if size(Archive,1)>1counter=0;for newi=1:size(Archive,1)if sum(Delta.Position~=Archive(newi).Position)~=0counter=counter+1;rep2(counter,1)=Archive(newi);endendBeta=SelectLeader(rep2,beta);end% This scenario is the same if the second least crowded hypercube% has one solution, so the delta leader should be chosen from the% third least crowded hypercube.if size(Archive,1)>2counter=0;for newi=1:size(rep2,1)if sum(Beta.Position~=rep2(newi).Position)~=0counter=counter+1;rep3(counter,1)=rep2(newi);endendAlpha=SelectLeader(rep3,beta);end% Eq.(3.4) in the paperc=2.*rand(1, nVar);% Eq.(3.1) in the paperD=abs(c.*Delta.Position-GreyWolves(i).Position);% Eq.(3.3) in the paperA=2.*a.*rand(1, nVar)-a;% Eq.(3.8) in the paperX1=Delta.Position-A.*abs(D);% Eq.(3.4) in the paperc=2.*rand(1, nVar);% Eq.(3.1) in the paperD=abs(c.*Beta.Position-GreyWolves(i).Position);% Eq.(3.3) in the paperA=2.*a.*rand()-a;% Eq.(3.9) in the paperX2=Beta.Position-A.*abs(D);% Eq.(3.4) in the paperc=2.*rand(1, nVar);% Eq.(3.1) in the paperD=abs(c.*Alpha.Position-GreyWolves(i).Position);% Eq.(3.3) in the paperA=2.*a.*rand()-a;% Eq.(3.10) in the paperX3=Alpha.Position-A.*abs(D);% Eq.(3.11) in the paperGreyWolves(i).Position=(X1+X2+X3)./3;% Boundary checkingGreyWolves(i).Position=min(max(GreyWolves(i).Position,lb),ub);GreyWolves(i).Cost=fobj(GreyWolves(i).Position')';endGreyWolves=DetermineDomination(GreyWolves);non_dominated_wolves=GetNonDominatedParticles(GreyWolves);Archive=[Archivenon_dominated_wolves];Archive=DetermineDomination(Archive);Archive=GetNonDominatedParticles(Archive);for i=1:numel(Archive)[Archive(i).GridIndex Archive(i).GridSubIndex]=GetGridIndex(Archive(i),G);endif numel(Archive)>Archive_sizeEXTRA=numel(Archive)-Archive_size;Archive=DeleteFromRep(Archive,EXTRA,gamma);Archive_costs=GetCosts(Archive);G=CreateHypercubes(Archive_costs,nGrid,alpha);enddisp(['In iteration ' num2str(it) ': Number of solutions in the archive = ' num2str(numel(Archive))]);save results% Resultscosts=GetCosts(GreyWolves);Archive_costs=GetCosts(Archive);if drawing_flag==1hold offplot(costs(1,:),costs(2,:),'k.');hold onplot(Archive_costs(1,:),Archive_costs(2,:),'rd');legend('Grey wolves','Non-dominated solutions');drawnowendend

3 仿真结果

4 参考文献

[1]孟安波, and 林艺城. "一种基于多目标的改进灰狼优化算法.", CN107067121A. 2017.​

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

5 MATLAB代码与数据下载地址

见博客主页

【优化求解】基于灰狼算法求解多目标问题matlab代码相关推荐

  1. 【TSP问题】基于灰狼算法求解旅行商问题matlab源码

    1 算法介绍 1.1 TSP介绍 "旅行商问题"(Traveling Salesman Problem,TSP)可简单描述为:一位销售商从n个城市中的某一城市出发,不重复地走完其余 ...

  2. 【路径优化】基于帝企鹅算法求解TSP问题(Matlab代码实现)

    目录 1 帝企鹅算法 2 旅行商问题(TSP) 3 运行结果 4 参考文献 5 Matlab代码实现 1 帝企鹅算法 帝企鹅优化算法(emperor penguin optimizer,EPO)是Ga ...

  3. 【路径规划】基于灰狼算法求解旅行商TSP问题matlab源码

    一.旅行商问题 TSP问题即旅行商问题,经典的TSP可以描述为:一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要经过所有城市后,回到出发地.应如何选择行进路线,以使总的行程最短.从图 ...

  4. 【机器人栅格地图】基于灰狼算法求解栅格地图路径规划及避障含Matlab源码

    1 简介 1.1 灰狼算法介绍 1.2 栅格地图介绍 栅格地图有两种表示方法,直角坐标系法和序号法,序号法比直角坐标法节省内存 室内环境栅格法建模步骤 1.栅格粒大小的选取 栅格的大小是个关键因素,栅 ...

  5. 【PID优化】基于蝗虫算法PID控制器优化设计含Matlab源码

    1 内容介绍 该文针对广泛应用的PID控制器,在MATLAB仿真软件环境下,开发出一个过程控制系统的仿真软件包,能够实现模型辨识和PID参数调节,为过程控制系统仿真研究提供了方便. 该软件界面友好,操 ...

  6. 【图像修复】基于criminis算法实现图像修复附matlab代码

    1 内容介绍 该算法出自Criminisi的论文 Region Filling and Object Removal by Exemplar-Based Image Inpainting 该算法只要思 ...

  7. 【图像检测】基于形态学算法实现空瓶检测matlab代码

    1 简介 近年来,机器视觉为主导的机器人研究工作正逐步推进,这不仅是对以往智能检测技术的有效突破,而且还能实现资源合理配置这一目标,这种类型的机器人 具 有 广 阔的 应 用 前 景.由 此 可见,本 ...

  8. 【预测模型】基于布谷鸟算法改进SVM实现预测matlab代码

    1 简介 支持向量机(Support Vector Machine,SVM) 是 Vapnik 等人于 1995 年提出的一种基于统计学习理论的新型机器学习方法,它能较好地解决小样本.非线性等实际问题 ...

  9. MATLAB应用实战系列( 七十五) -图像处理应用 MATLAB实现基于分水岭算法的图像分割 (附matlab代码)

    一.简介 二.源代码 clear, close all; clc; %1.读取图像并求取图像的边界.rgb = imread('tree.jpeg');%读取原图像 I = rgb2gray(rgb) ...

最新文章

  1. map中的迭代删除操作注意问题
  2. qss样式表笔记大全(一):qss名词解析(包含相关示例)
  3. Mac OS使用技巧十七:丰富多彩的花哨输入法
  4. 艾诺迪亚4一次性完美刷经验刷金钱方法图解[亲测无需闪退游戏]
  5. Flutter 中的国际化之多语言环境
  6. JavaScript数据类型之typeof检测变量数据类型(5)
  7. 量化投资与信用风险机器学习建模
  8. ionic 网站放在服务器,Ionic4 服务器插件-服务器Httpd - Ionic Native
  9. 视频干扰现象及其原因分析
  10. 基于RV1126平台imx291分析 --- open及media graph分析
  11. 斐讯k2修改dns服务器,斐讯K2固件修改的一些信息
  12. NB-IOT模块学习
  13. matlab的输入输出常见语句
  14. 双闭环调速 matlab,双闭环直流调速系统仿真(Matlab).ppt
  15. Android桌面壁纸
  16. Cocos2d-x_CCSprite(精灵类)介绍
  17. 二级域名设置解析方法
  18. 智能红外遥控器(四):手机蓝牙控制格力风扇康佳加湿器
  19. selenium模拟登陆之截屏验证码位置跑偏
  20. Qt使用QAudioInput、QAudioOutput实现局域网的音频通话

热门文章

  1. 排序算法介绍与Python实现
  2. 第一次坐飞机流程记录,希望帮助到你
  3. 混合app 安卓用户将手机系统字体大小调整后会影响app的字体大小及样式
  4. HttpClient工具类及应用
  5. 颠覆认知!一家小小的摄影店年赚百万,其中的秘诀是什么?
  6. 玩儿《阴阳师》的体验
  7. android N上收到未接来电,没有LED灯闪烁提示,在M上是ok的.
  8. Word技巧:Alt键不为人知的5个强大功能,你知道吗
  9. JS中图片的处理与合成(生成水印)
  10. java 自定义异常 好处,什么是自定义异常 自定义异常类有什么好处呢