目录
0 引言
灰狼算法(Grey wolf optimizer,GWO)是学者Mirjalili于2014年基于狼群社会制度提出群智能算法,该算法模拟灰狼种群等级和捕食行为来实现优化搜索目标。
1 数学模型
GWO数学模型主要模拟灰狼社会等级(α、β、δ和ω)制度,高等级狼群带领低等级狼群实现跟踪、包围、追捕和攻击猎物实现捕猎过程。其数学模型如下:
1)社会等级:在GWO算法种,将种群灰狼位置进行按照适应度排列,将最优解、次优解、第三优解灰狼种群位置分布划分为α、β、δ狼。通过这三者狼群带领ω狼捕食。
2)包围猎物:灰狼在捕猎过程中包围着猎物。为了对环绕行为进行数学模型,提出了以下方程式:
式中D为灰狼和猎物距离,X为灰狼位置,Xp为猎物位置,A、C为系数向量,其值如下:
式中a为从2到0线性递减的系数,r1,r2为[0,1]随机向量。
3)狩猎:灰狼在锁定猎物位置,通过社会等级制度较高α、β、δ狼做出引导,迫使其他ω狼群包围猎物和追踪猎物。
式中分别表示α狼、β狼和δ狼与其它灰狼的距离;分别表示α狼、β狼和δ狼的位置;X1、X2和X3分别表示受α狼、β狼和δ狼的影响后w狼调整后的位置。其调整ω狼群追踪猎物趋势如图所示:
4)攻击猎物:灰狼在猎物停止移动时攻击它来捕猎。为了用数学模型来接近猎物,如下式系数向量A所示,随着a线性递减,灰狼出现俩种阶段,当lAl大于1出现全局搜索猎物阶段如下图b所示,当lAl小于1出现局部开发阶段,灰狼会攻击猎物,如下图a所示。
2 优化方式
前篇对BP神经网络原理讲解(BP神经网络原理及Matlab代码复现),从BP神经网络原理讲解中可以发现预测值主要受权值和阈值调整修正完成。因此结合上述GWO原理介绍,可以将BP神经网络权值和阈值作为灰狼种群位置,每一个种群位置对应BP神经网络的预测值,将这个预测值作为适应度更新α、β和δ狼,引导ω狼实现对猎物捕食,从而更新更优狼群位置。
3 Matlab代码
3.1 伪代码
3.2 GWO主函数
%% 主循环
while l<Max_iteration %white(t<最大迭代次数)
for i=1:size(Positions,1) %智能体个数
% 超出边界处理
Flag4ub=Positions(i,:)>ub;
Flag4lb=Positions(i,:)<lb;
Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; %返回限制边界
% 计算狼群的适应度函数
X = reshape(Positions(i,:),1,dim);
fitness = SYD(X,net);
net.trainParam.showWindow = 0; % 关闭训练窗口
% 跟新α,β,δ狼作为最优适应度
if fitness<Alpha_score
Alpha_score=fitness; % α
Alpha_pos=Positions(i,:);
end
if fitness>Alpha_score && fitness<Beta_score
Beta_score=fitness; % β
Beta_pos=Positions(i,:);
end
if fitness>Alpha_score && fitness>Beta_score && fitness<Delta_score
Delta_score=fitness; % δ
Delta_pos=Positions(i,:);
end
end
a=2-l*((2)/Max_iteration); % a是从2到0线性递减的数
% 跟新ω狼寻找猎物
for i=1:size(Positions,1)
for j=1:size(Positions,2)
% 根据α狼群更新位置X1
r1=rand(); % r1是[0,1]随机分布的数;
r2=rand(); % r2是[0,1]随机分布的数;
% 计算A1和C1
A1=2*a*r1-a; % Eq3.3的系数向量
C1=2*r2; % Eq3.4的系数向量
% 计算α狼指导其他狼寻优的位置和距离
D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Eq3.5的距离公式
X1=Alpha_pos(j)-A1*D_alpha; % Eq3.6的位置公式
%根据β狼群更新位置X2
r1=rand();
r2=rand();
A2=2*a*r1-a; % 同上
C2=2*r2; % 同上
D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % 同上
X2=Beta_pos(j)-A2*D_beta; % 同上
%根据Delta狼群更新位置X3
r1=rand();
r2=rand();
A3=2*a*r1-a; % Equation 同上
C3=2*r2; % Equation 同上
D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % 同上
X3=Delta_pos(j)-A3*D_delta; % 同上
%更新后的狼只位置
Positions(i,j)=(X1+X2+X3)/3;% ω狼的位置 Eq3.7
end
end
l=l+1;
Convergence_curve(l)=Alpha_score; % 返回最优α狼作为适应度
end
3.3 GWO-BP
单输出回归预测、多输出回归预测、分类模型、时间序列模型共4个模型: