1 简介

灰狼优化算法作为一种群体智能算法,不可避免地会产生陷入局部寻优和收敛速度慢的问题.本文提出一种混合的改进策略,把动态权重和动态种群的结合起来,在提高收敛速度的同时,产生较好的解.通过多组基准测试函数进行验证,实验结果表明在收敛速度和搜索能力方面都表现的更好.

【优化求解】基于混合策略灰狼算法求解单目标优化问题(EPDGWO) matlab代码_d3

【优化求解】基于混合策略灰狼算法求解单目标优化问题(EPDGWO) matlab代码_优化算法_02

2 部分代码


% Grey Wolf Optimizer
function [Alpha_score,Alpha_pos,Convergence_curve]=GWO(SearchAgents_no,Max_iter,lb,ub,dim,fobj)

% initialize alpha, beta, and delta_pos
Alpha_pos=zeros(1,dim);
Alpha_score=inf; %change this to -inf for maximization problems

Beta_pos=zeros(1,dim);
Beta_score=inf; %change this to -inf for maximization problems

Delta_pos=zeros(1,dim);
Delta_score=inf; %change this to -inf for maximization problems

%Initialize the positions of search agents
Positions=initialization(SearchAgents_no,dim,ub,lb);

Convergence_curve=zeros(1,Max_iter);

l=0;% Loop counter

% Main loop
while l<Max_iter
   for i=1:size(Positions,1)  
       
      % Return back the search agents that go beyond the boundaries of the search space
       Flag4ub=Positions(i,:)>ub;
       Flag4lb=Positions(i,:)<lb;
       Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;               
       
       % Calculate objective function for each search agent
       fitness=fobj(Positions(i,:));
       
       % Update Alpha, Beta, and Delta
       if fitness<Alpha_score 
           Alpha_score=fitness; % Update alpha
           Alpha_pos=Positions(i,:);
       end
       
       if fitness>Alpha_score && fitness<Beta_score 
           Beta_score=fitness; % Update beta
           Beta_pos=Positions(i,:);
       end
       
       if fitness>Alpha_score && fitness>Beta_score && fitness<Delta_score 
           Delta_score=fitness; % Update delta
           Delta_pos=Positions(i,:);
       end
   end
   
   
   % a decreases linearly fron 2 to 0
    a=sin(((l*pi)/Max_iter)+pi/2)+1;
   % Update the Position of search agents including omegas
   for i=1:size(Positions,1)
       for j=1:size(Positions,2)     
                      
           r1=rand(); % r1 is a random number in [0,1]
           r2=rand(); % r2 is a random number in [0,1]
           
           A1=2*a*r1-a; % Equation (3.3)
           C1=2*r2; % Equation (3.4)
           
           D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); % Equation (3.5)-part 1
           X1=Alpha_pos(j)-A1*D_alpha; % Equation (3.6)-part 1
                      
           r1=rand();
           r2=rand();
           
           A2=2*a*r1-a; % Equation (3.3)
           C2=2*r2; % Equation (3.4)
           
           D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); % Equation (3.5)-part 2
           X2=Beta_pos(j)-A2*D_beta; % Equation (3.6)-part 2       
           
           r1=rand();
           r2=rand(); 
           
           A3=2*a*r1-a; % Equation (3.3)
           C3=2*r2; % Equation (3.4)
           
           D_delta=abs(C3*Delta_pos(j)-Positions(i,j)); % Equation (3.5)-part 3
           X3=Delta_pos(j)-A3*D_delta; % Equation (3.5)-part 3             
           
           Positions(i,j)=(X1+X2+X3)/3;% Equation (3.7)
           
       end
   end
   l=l+1;    
   Convergence_curve(l)=Alpha_score;
end


3 仿真结果

【优化求解】基于混合策略灰狼算法求解单目标优化问题(EPDGWO) matlab代码_d3_03

【优化求解】基于混合策略灰狼算法求解单目标优化问题(EPDGWO) matlab代码_d3_04

4 参考文献

[1]牛家彬等. "一种基于混合策略的灰狼优化算法." 齐齐哈尔大学学报:自然科学版 34.1(2018):5.

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

【优化求解】基于混合策略灰狼算法求解单目标优化问题(EPDGWO) matlab代码_d3_05