帕累托包络的选择算法(PESA-II)(Matlab代码实现)

作品简介


1 概述

进化算法3作为一类启发式搜索算法,已被成功应用于多目标优化领域,发展成为一个相对较热门的研究方向–进化多目标优化。进化算法通过在代与代之间维持由潜在解组成的种群来实现全局搜索,这种从种群到种群的方法对于搜索多目标优化问题的Pareto最优解集是很有用的。

基于帕累托包络的选择算法II(PESA-II)是一种多目标进化优化算法,它利用遗传算法的机制和基于帕累托包络的选择。PESA-II 使用外部存档来存储近似的帕累托解决方案。父项和变种人是根据基于存档成员的地理分布创建的网格从外部存档中选择的。这与MOPSO算法中使用的机制非常相似。实际上,PESA-II是一种多目标遗传算法.

2 PESAII 算法简介

PESAII为求解多目标问题的一种经典进化算法。该算法设置了一个外部种群和一个内部种群。进化的时候,将内部种群中的非支配个体加入到外部种群,并淘汰外部种群中的支配个体。当外部种群数目达到上限的时候,采用删除外部种群中拥挤系数最小的个体;当个体的拥挤系数相同的时候,随机删除一个,重复该过程直到种群数目满足上限。每次进化,都会将内部种群清空,然后从外部种群中选出个体,按照一定的概率进行交叉,变异得到新的个体,并将这些新的个体加入到内部种群。该算法最终的解就是外部种群的个体,即若干个的Pareto最优解,用户可以根据需要选择适当的解。详细介绍见第4部分。

3 运行结果

​编辑

4 Matlab代码实现 

本文仅展现部分代码,全部代码和文章讲解点击链接:

帕累托包络的选择算法(PESA-II)(Matlab代码实现)

function [y1, y2] = Crossover(x1, x2, params)

    gamma = params.gamma;
    VarMin = params.VarMin;
    VarMax = params.VarMax;
    
    alpha = unifrnd(-gamma, 1+gamma, size(x1));
    
    y1 = alpha.*x1+(1-alpha).*x2;
    y2 = alpha.*x2+(1-alpha).*x1;
    
    y1 = min(max(y1, VarMin), VarMax);
    y2 = min(max(y2, VarMin), VarMax);

end

5 结果分析

结果分析分析实验结果可以发现:PSO算法求解的结果依赖于不同目标的权重系数;当需要着重优化某目标时,需要修改对应的权重;为获得多个不同结果,需将算法运行多次。虽然PSO算法单次远行时间比PESAII 短,但是获取多个解的时候,PESAII所需时间反而更少。

6 参考文献

[1]陈浩,杜斌,黄可为.PESAⅡ算法求解基于PCVRP的热轧批量计划问题[J].控制工程,2011(S1):86-88120

创作时间:2022-09-19 19:34:58