多目标灰狼优化算法(MGWO)

GWO简介

Mirjalili 等人于2014年提出来的一种群智能优化算法。该算法受到了灰狼捕食猎物活动的启发而开发的一种优化搜索方法,它具有较强的收敛性能、参数少、易实现等特点。
​​​​
社会等级分层:初始化种群,将适应度最好的三个个体标记为 α 、 β 、 σ \alpha、\beta、\sigma αβσ,剩下的狼群为 ω \omega ω,GWO优化过程中主要由每代种群中三个最好的解来指导完成。

位置更新计算

左边图中表示二维的向量及可能的区域,可以看出灰狼的位置根据中间猎物的位置 ( X ∗ , Y ∗ ) (X^*,Y^*) (X,Y)进行更新,通过调节 A → , C → \overrightarrow{A},\overrightarrow{C} A ,C 的值,可以到猎物周围不同的地方。
D → = ∣ C → ⋅ X → p ( t ) − X → ( t ) ∣ A → = 2 a → ⋅ r 1 → − α → C → = 2 ⋅ r 2 → X → ( t + 1 ) = X → p ( t ) − A → ⋅ D → \begin{aligned} &\overrightarrow{D}=\vert \overrightarrow{C}\cdot\overrightarrow{X}_p(t)-\overrightarrow{X}(t)\vert \\ &\overrightarrow{A}=2\overrightarrow{a}\cdot\overrightarrow{r_1}-\overrightarrow{\alpha}\\ &\overrightarrow{C}=2\cdot\overrightarrow{r_2}\\ &\overrightarrow{X}(t+1)=\overrightarrow{X}_p(t)-\overrightarrow{A}\cdot\overrightarrow{D} \end{aligned} D =C X p(t)X (t)A =2a r1 α C =2r2 X (t+1)=X p(t)A D
A是[-2,2],随着迭代次数增加线性减少到[-1,1],此时个体还在对猎物进行广泛搜索,当|A|<1时,开始袭击猎物。 r 1 , r 2 r_1,r_2 r1,r2是[0,1]之间的随机数。种群中所有个体位置更新计算根据上述公式进行计算。
D → α = ∣ C 1 → ⋅ X → α − X → ∣ D → β = ∣ C 2 → ⋅ X → β − X → ∣ D → σ = ∣ C 3 → ⋅ X → σ − X → ∣ X 1 → = X α → − A 1 → ⋅ ( D α → ) X 2 → = X β → − A 2 → ⋅ ( D β → ) X 3 → = X σ → − A 3 → ⋅ ( D σ → ) X → ( t + 1 ) = X 1 → + X 2 → + X 3 → 3 \begin{aligned} &\overrightarrow{D}_\alpha=\vert \overrightarrow{C_1}\cdot\overrightarrow{X}_\alpha-\overrightarrow{X}\vert\\ &\overrightarrow{D}_\beta=\vert \overrightarrow{C_2}\cdot\overrightarrow{X}_\beta-\overrightarrow{X}\vert\\ &\overrightarrow{D}_\sigma=\vert \overrightarrow{C_3}\cdot\overrightarrow{X}_\sigma-\overrightarrow{X}\vert\\ &\overrightarrow{X_1}=\overrightarrow{X_\alpha}-\overrightarrow{A_1}\cdot(\overrightarrow{D_\alpha})\\ &\overrightarrow{X_2}=\overrightarrow{X_\beta}-\overrightarrow{A_2}\cdot(\overrightarrow{D_\beta})\\ &\overrightarrow{X_3}=\overrightarrow{X_\sigma}-\overrightarrow{A_3}\cdot(\overrightarrow{D_\sigma})\\ &\overrightarrow{X}(t+1)=\frac{\overrightarrow{X_1}+\overrightarrow{X_2}+\overrightarrow{X_3}}{3} \end{aligned} D α=C1 X αX D β=C2 X βX D σ=C3 X σX X1 =Xα A1 (Dα )X2 =Xβ A2 (Dβ )X3 =Xσ A3 (Dσ )X (t+1)=3X1 +X2 +X3
上述公式是根据 α β σ \alpha \beta \sigma αβσ三只狼来指导狼群中所有狼群位置更新的公式。

MGWO算法流程

Step1:初始化狼群,计算种群中的非支配解集Archive(大小确定),对Archive中的解进行网格计算求网格坐标值。
迭代开始
Step2:从初始Archive中根据网格选择 α 、 β 、 σ \alpha、\beta、\sigma αβσ,根据三个解进行狼群中所有个体的位置更新。
Step3:全部位置更新之后,计算更新之后种群的非支配解集non_dominates。
Step4:Archive更新—将non_dominates与Archive合并后计算两者的非支配解集,判断是否超过规定的Archive大小,如果超过,根据网格坐标进行删除。
本次迭代结束
Step5:判断是否达到最大迭代次数,是,输出的Archive.否,转Step2.

for it=1:MaxIt
    a=2-it*((2)/MaxIt);
    for i=1:GreyWolves_num
        
        clear rep2
        clear rep3
        
        % Choose the alpha, beta, and delta grey wolves
        Delta=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)>1
            counter=0;
            for newi=1:size(Archive,1)
                if sum(Delta.Position~=Archive(newi).Position)~=0%返回位置不同的个数
                    counter=counter+1;
                    rep2(counter,1)=Archive(newi);
                end
            end
            Beta=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)>2
            counter=0;
            for newi=1:size(rep2,1)
                if sum(Beta.Position~=rep2(newi).Position)~=0
                    counter=counter+1;
                    rep3(counter,1)=rep2(newi);
                end
            end
            Alpha=SelectLeader(rep3,beta);
        end
        
        % Eq.(3.4) in the paper
        c=2.*rand(1, nVar);
        % Eq.(3.1) in the paper
        D=abs(c.*Delta.Position-GreyWolves(i).Position);
        % Eq.(3.3) in the paper
        A=2.*a.*rand(1, nVar)-a;
        % Eq.(3.8) in the paper
        X1=Delta.Position-A.*abs(D);
        
        
        % Eq.(3.4) in the paper
        c=2.*rand(1, nVar);
        % Eq.(3.1) in the paper
        D=abs(c.*Beta.Position-GreyWolves(i).Position);
        % Eq.(3.3) in the paper
        A=2.*a.*rand()-a;
        % Eq.(3.9) in the paper
        X2=Beta.Position-A.*abs(D);
        
        
        % Eq.(3.4) in the paper
        c=2.*rand(1, nVar);
        % Eq.(3.1) in the paper
        D=abs(c.*Alpha.Position-GreyWolves(i).Position);
        % Eq.(3.3) in the paper
        A=2.*a.*rand()-a;
        % Eq.(3.10) in the paper
        X3=Alpha.Position-A.*abs(D);
        
        % Eq.(3.11) in the paper
        GreyWolves(i).Position=(X1+X2+X3)./3;
        
        % Boundary checking
        GreyWolves(i).Position=min(max(GreyWolves(i).Position,lb),ub);
        
        GreyWolves(i).Cost=fobj(GreyWolves(i).Position')';
    end
    
    GreyWolves=DetermineDomination(GreyWolves);
    non_dominated_wolves=GetNonDominatedParticles(GreyWolves);
    
    Archive=[Archive
        non_dominated_wolves];
    
    Archive=DetermineDomination(Archive);
    Archive=GetNonDominatedParticles(Archive);
    
    for i=1:numel(Archive)
        [Archive(i).GridIndex Archive(i).GridSubIndex]=GetGridIndex(Archive(i),G);
    end
    
    if numel(Archive)>Archive_size
        EXTRA=numel(Archive)-Archive_size;
        Archive=DeleteFromRep(Archive,EXTRA,gamma);
        
        Archive_costs=GetCosts(Archive);
        G=CreateHypercubes(Archive_costs,nGrid,alpha);
        
    end
    
    disp(['In iteration ' num2str(it) ': Number of solutions in the archive = ' num2str(numel(Archive))]);
    save results
    
    % Results
    
    costs=GetCosts(GreyWolves);
    Archive_costs=GetCosts(Archive);
    
    if drawing_flag==1
        hold off
        plot(costs(1,:),costs(2,:),'k.');
        hold on
        plot(Archive_costs(1,:),Archive_costs(2,:),'rd');
        legend('Grey wolves','Non-dominated solutions');
        drawnow
    end
    
end

相关论文:【Multi-objective grey wolf optimizer: A novel algorithm for multi-criterion optimization】

  • 7
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 离散多目标灰狼优化算法(Discrete Multi-objective Grey Wolf Optimizer,DMOGWO)是一种应用于离散问题的多目标优化算法,基于灰狼优化算法(Grey Wolf Optimizer,GWO)的思想。与传统的多目标优化算法相比,DMOGWO具有更好的搜索能力和收敛性能。 DMOGWO的基本思想是通过模拟灰狼社会的捕食行为来进行搜索,以寻找离散问题的最优解集。算法的初始化步骤是选择灰狼种群的大小、确定灰狼的位置和目标函数的个数等参数。接下来,根据灰狼的位置和目标函数值,计算其适应度。然后,根据适应度值选择灰狼的领导者,并更新灰狼的位置和速度。在灰狼更新位置的过程中,利用灰狼既有的信息和与其它灰狼的交互信息进行位置迁移和搜索调整,以达到全局最优解的寻找目标。 DMOGWO的优点包括:1)具有较高的搜索能力,可以在较短的时间内找到问题的最优解集;2)具有自适应性,能够根据问题的特点自动调整参数和搜索策略;3)具有较好的收敛性能,可以在多目标搜索空间中有效收敛到最优解;4)具有较好的鲁棒性,对于不同类型的问题均可进行有效的搜索。 DMOGWO在Matlab中的实现较为简单,可以利用Matlab的优化工具箱和灰狼优化算法的基本框架进行编程。首先,定义目标函数和问题约束条件;接着,设置算法的参数,包括灰狼种群大小、迭代次数、搜索范围等;最后,利用迭代循环和灰狼更新位置的过程,逐步寻找离散问题的最优解集。 总之,离散多目标灰狼优化算法是一种应用于离散问题的多目标优化算法,其基本思想是模拟灰狼社会的捕食行为来进行搜索。该算法具有较高的搜索能力和收敛性能,在Matlab中的实现较为简单,可以根据具体问题进行调整和优化。 ### 回答2: 离散多目标灰狼优化算法(Discrete Multi-Objective Grey Wolf Optimization Algorithm)是一种基于自然智能的多目标优化算法,它模拟了灰狼群体在猎食过程中的行为,并通过合理的搜索策略来寻找问题的最优解。 灰狼优化算法的基本思想是将解空间看作是灰狼群体的狩猎场景,灰狼在这个场景中通过个体的位置和适应度值来进行交流和合作。灰狼群体主要包含了一个Alpha狼(即最优解)、Beta狼(即次优解)和Delta狼(即次次优解),它们分别代表了灰狼群体中的最好解、次好解和次次好解。通过模拟灰狼之间的互动行为,算法可以通过迭代优化来逐步逼近最优解。 离散多目标灰狼优化算法的特点在于能够同时考虑多个决策变量和多个目标函数。对于离散问题,算法采用二进制编码的方式来表示解,在交换和变异操作中可以实现对解的改进。多目标问题的处理则采用了非支配排序和拥挤度距离的方法,通过保留一组非支配解来构建一个边界解集,并在选择操作中综合考虑了非支配排序和拥挤度距离,以保证搜索的多样性和收敛性。 在Matlab中实现离散多目标灰狼优化算法,可以先通过一个随机初始种群来初始化灰狼个体,然后采用灰狼的迭代搜索策略对种群进行搜索。具体步骤包括初始化灰狼位置和适应度、计算Alpha、Beta和Delta狼的位置、更新灰狼位置、执行交换和变异操作、计算适应度值和目标函数值、进行非支配排序和计算拥挤度距离、选择新的灰狼个体等。通过迭代优化,最终可以得到一组Pareto最优解。 总之,离散多目标灰狼优化算法是一种有效的多目标优化方法,具有较好的性能和应用价值。在Matlab环境中实现该算法可以通过合理的编程和调参来提高搜索效果,并应用于实际问题的优化求解。 ### 回答3: 离散多目标灰狼优化算法(Multi-objective Discrete Grey Wolf Optimizer,MODGWO)是一种基于灰狼优化算法的多目标优化算法。该算法在解决多目标优化问题时,将解空间划分为多个离散的解集,通过适应度函数对每个解集进行评估和选择。 离散多目标灰狼优化算法的步骤如下: 1. 初始化种群:设定种群大小、迭代次数等参数,随机生成初始种群,每一个个体都代表问题的一个解,并将它进行编码。 2. 确定领导狼:根据每个个体的适应度值,选择全局最优解。 3. 更新狼群的位置:根据领导狼和其他狼之间的位置关系,更新每个狼的位置。 4. 判断边界:若新位置越界,则将狼的位置调整到合法的范围内。 5. 计算个体适应度:通过目标函数计算每个个体的适应度。 6. 更新领导狼:根据多目标优化问题的要求,更新领导狼。 7. 判断停止准则:根据预设的停止准则,判断是否达到了终止条件。 8. 选择更新狼:根据适应度值和目标函数值,选择更新狼群的个体。 9. 转到步骤3:重复执行步骤3到步骤8,直到达到终止条件。 离散多目标灰狼优化算法的优点是能够有效找到多个最优解,并且能够平衡不同目标之间的权衡关系。它在处理多目标优化问题时具有较高的搜索性能和收敛性。 在MATLAB中实现离散多目标灰狼优化算法,可以使用适应度函数来计算狼群中个体的适应度值,并使用循环结构来迭代更新每个个体的位置。同时,还需要定义好种群大小、迭代次数等参数,并设定适当的终止条件。最终,算法会输出多个 Pareto 最优解,供用户选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值