700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > GWO灰狼优化算法以及Matlab代码

GWO灰狼优化算法以及Matlab代码

时间:2019-09-06 12:05:09

相关推荐

GWO灰狼优化算法以及Matlab代码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

GWO灰狼算法原理进化更新位置更新(紧随3只头狼) GWO灰狼算法流程图GWO优化算法matlab代码main函数适应度函数GWO主体代码测试结果F1~ F6测试问题

GWO灰狼算法原理

灰狼算法:种群个体的位置更新主要是跟随alpha、beta、delta三只头狼的所在位置进行迭代更新。

灰狼种群结构:

进化更新

Xp为猎物的位置,A和C属于系数向量,a是随迭代过程线性减少的数值从2→0

位置更新(紧随3只头狼)

X(t+1)为狼个体紧随头狼更新后的位置。

GWO灰狼算法流程图

GWO优化算法matlab代码

main函数

close all;clear all;clc;% N种群大小% Dim个体维度% T最大迭代次数% ub上界% lb下界% X_prey最好的个体% G_best存储每次迭代后的最好个体的适应度值N=300;Dim=30;T=500;ub=30;lb=-30;[X_prey,G_best]=GWO(Dim,ub,lb,N,T);figure,plot(G_best,'Color','blue');xlim([1,500]);

适应度函数

function my_fitness=my_function(X)%F1测试问题[-100,100] min=0% o=sum(X.^2);% my_fitness=o;%F2测试问题[-10,10] min=0;% o=sum(abs(X))+prod(abs(X));% my_fitness=o;%F3测试问题——结果极差 min=0% dim=size(X,2);% o=0;% for i=1:dim%o=o+sum(X(1:i))^2;% end% my_fitness=o;%F4测试问题——结果极差[-100,100] min=0% o=max(abs(X));% my_fitness=o;%F5测试问题[-30,30] min=0% dim=size(X,2);% my_fitness=sum(100*(X(2:dim)-(X(1:dim-1).^2)).^2+(X(1:dim-1)-1).^2);%F6测试问题[-100,100] min=0o=sum(abs((X+.5)).^2);my_fitness=o;end

GWO主体代码

function [X_prey,G_best]=GWO(Dim,ub,lb,N,T)%% 初始化种群Pop=zeros(N,Dim);for i=1:Nfor j=1:DimPop(i,j)=lb+rand().*(ub-lb);endendX_prey=zeros(T,Dim);%% 初始化% 计算所有个体的适应度for i=1:Nfitness(i)=my_function(Pop(i));end% 种群进行分等级排序[sort_fitness,sort_index]=sort(fitness);% 更新alpha、beta、delta狼个体X_alpha=Pop(sort_index(1),:);X_beta=Pop(sort_index(2),:);X_delta=Pop(sort_index(3),:); %% 进化操作for t=1:Ta=2-t*(2/T);for i=1:Nfor j=1:Dim% 跟随alpha、beta、deltar1=rand();r2=rand();A1=2.*a.*r1-a;C1=2.*r2;D_alpha=abs(C1.*X_alpha(j)-Pop(i,j));X_one(i,j)=X_alpha(j)-A1.*D_alpha;r1=rand();r2=rand();A2=2.*a.*r1-a;C2=2.*r2;D_beta=abs(C2.*X_beta(j)-Pop(i,j));X_two(i,j)=X_delta(j)-A2.*D_beta;r1=rand();r2=rand();A3=2.*a.*r1-a;C3=2.*r2;D_delta=abs(C3.*X_delta(j)-Pop(i,j));X_three(i,j)=X_delta(j)-A3.*D_delta;% 跟随3只头狼,新的个体位置X_new(i,j)=(X_one(i,j)+X_two(i,j)+X_three(i,j))./3;endend% 计算所有个体的适应度值for i=1:NFlag4Up=X_new(i,:)>ub;Flag4Lp=X_new(i,:)<lb;X_new(i,:)=(X_new(i,:).*(~(Flag4Up+Flag4Lp)))+Flag4Up.*ub+Flag4Lp.*lb;%修正y=my_function(X_new(i,:));if y<my_function(Pop(i,:))fitness(i)=y;Pop(i,:)=X_new(i,:);%替换个体endend % 种群进行分等级排序[sort_fitness,sort_index]=sort(fitness);% 更新alpha、beta、delta狼个体X_alpha=Pop(sort_index(1),:);X_beta=Pop(sort_index(2),:);X_delta=Pop(sort_index(3),:);X_prey(t,:)=X_alpha;G_best(t)=my_function(X_alpha);%每次迭代最好的个体的适应度值endend

测试结果F1~ F6测试问题

F1

F2

F3

F4

F5

F6

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。