灰狼算法模拟了自然界灰狼的领导层级和狩猎制度:其具有金字塔般的等级制度。
第一层:层狼群。负责带领整个狼群狩猎猎物,即优化算法中的最优解。
第二层:层狼群。负责协助狼群,即优化算法中的次优解。
第三层:层狼群。听从和的命令和决策,负责侦查、放哨等。适应度差的 和会降为。
第四层:层狼群。追随上面三层狼群行动。
灰狼的狩猎过程包含如下:①跟踪、接近猎物②包围、追捕猎物③攻击猎物
一、包围猎物
在狩猎过程中,灰狼围捕猎物的行为为:
(1)式为灰狼和猎物之间的距离,和分别是猎物的位置和灰狼的位置,t为迭代次数。和为确定的系数,其计算公式分别为:
a是收敛因子,随着迭代次数,从2线性减小到0,r1和r2为随机数。
二、狩猎
灰狼个体跟踪层狼群、 层狼群、层狼群的数学模型描述如下:
分别表示灰狼个体距离 层狼群、 层狼群、层狼群的距离。
X1、X2、X3分别表示受 层狼群、 层狼群、层狼群影响, 灰狼个体需要调整的位置。
这里取平均值,即:
GWO灰狼算法的Matlab代码如下:
%pop——种群数量
%dim——问题维度
%ub——变量上界,[1,dim]矩阵
%lb——变量下界,[1,dim]矩阵
%fobj——适应度函数(指针)
%MaxIter——最大迭代次数
%Best_Pos——x的最佳值
%Best_Score——最优适应度值
clc;
clear all;
close all;
pop=50;
dim=2;
ub=[10,10];
lb=[-10,-10];
MaxIter=100;
fobj=@(x)fitness(x);%设置适应度函数
[Best_Pos,Best_Score,IterCurve]=GWO(pop,dim,ub,lb,fobj,MaxIter);
%…………………………………………绘图…………………………………………
figure(1);
plot(IterCurve,'r-','linewidth',2);
grid on;
title('灰狼迭代曲线');
xlabel('迭代次数');
ylabel('适应度值');
%…………………………………… 结果显示……………………………………
disp(['求解得到的x1,x2是:',num2str(Best_Pos(1)),' ',num2str(Best_Pos(2))]);
disp(['最优解对应的函数:',num2str(Best_Score)]);
%种群初始化函数
function x=initialization(pop,ub,lb,dim)
for i=1:pop
for j=1:dim
x(i,j)=(ub(j)-lb(j))*rand()+lb(j);
end
end
end
%狼群越界调整函数
function x=BoundrayCheck(x,ub,lb,dim)
for i=1:size(x,1)
for j=1:dim
if x(i,j)>ub(j)
x(i,j)=ub(j);
end
if x(i,j)Alpha_Score&&Fitness(i)Alpha_Score&&Fitness(i)>Beta_Score&&Fitness(i)
1、粒子群(PSO)优化算法(附完整Matlab代码,可直接复制)
2、灰狼(GWO)优化算法(附完整Matlab代码,可直接复制)
3、正余弦(SCA)优化算法(附完整Matlab代码,可直接复制)
4、萤火虫(FA)优化算法(附完整Matlab代码,可直接复制)