基于分解的多目标进化优化MOEA/D三种聚合函数的理解

安徽大学 田野老师 platEMO 平台代码网址:https://github.com/BIMK/PlatEMO

NSGA2   MOEA/D   NSGA3    网上写的较好的单独代码分享,供大家学习调试理解:

链接:https://pan.baidu.com/s/1Y-rJWaHODdObiDO4BzuJrg
提取码:mdyb

网上查阅很多资料,基于分解的MOEA的理解汇总(当做自己的笔记记录下)如下:

基于分解的MOEA有三类聚合函数,如下

         对于权重聚合方法,jinTester 给出的解释可能更容易理解,参见https://blog.csdn.net/jinjiahao5299/article/details/76045936

         首先,λ被称之为权重向量,观察和式,这完全就是m维向量的点乘公式嘛。具体的说,在目标空间中,把算法求出的一个目标点和原点相连构造成一个向量,此时,该方法的做法是将该向量与对应权重向量点乘,由向量点乘的几何意义可知,所得的数为该向量在权重向量方向上的投影长度,因为权重向量不变,最大/小化该长度值其实就是在优化该向量。可知若要增大该向量在权重向量上投影的长度,一方面可以增大/减小与权重向量的夹角,另一方面可以增大/减小该向量的长度。样例图如下图。

         图中:考虑红色权重向量,因为是最小化问题,所以减小长度,增大夹角都是可行的方案,绿色为等高线,垂直于权重向量。

        对于切比雪夫聚合方法,Erpim 给出的解释可能更容易理解,参见https://blog.csdn.net/qq_35414569/article/details/79655400

         理解为啥f′1λ1>f′2λ2,这个需要看前提条件的,如果在λ左上方,只有f1和f2发生了变化。你可以移位一下,看作是两个斜率的比较。注意,λ是针对某一个的,是不变的。

     

        jinTester的解释:https://blog.csdn.net/jinjiahao5299/article/details/76045936

      该方法给出的表达式为:

        

 

        注意该方法中不再含有Σ符号,故不能再从向量点乘的角度理解。该方法大致思想是减少最大差距从而将个体逼近PF。等高线示意图如下:

         首先解释等高线为什么是这样的。单看f1函数,即只考虑纵坐标,若两点等值,必然是 式中f1的函数值相等(因为另外两个量是不变的),即纵坐标相等,所以f1函数的等高线是一组平行于横轴的直线。f2类似,为一组平行于纵轴的直线。

        那么,图中的等高线是横竖相交且刚好交在权重向量的方向上的,这是巧合吗?可以稍微来证明一下,可知,对于任何一个可行的切比雪夫值(自己叫的),我们从f1的角度上可以得到一个f1的值y,从f2的角度上可以得到一个f2的值x,他们的切比雪夫值是相等的,自然想到,点(x,y)(图中紫色点)为该切比雪夫值得横纵两条等值线的交点,那么有:λ1*(y-z1)= λ2*(x-z2),化简的(y-z1)/(x-z2)= λ2/λ1,可知该交点位于权重向量的方向上。

        需要注意一点,这里的权重向量起点是Z*,不再是原点。

        此时可知,若某个个体位于其权重向量方向的上部,则max得到的一定是其f1部分,故优化也需要减小其f1的值,即个体向下移动,相反,若在权重向量方向的下部,则应像左移动。以此来保证个体目标值落在黄点附近。

一种可能的个体运动路线如下图橘黄色所示:

 

       

          这里λ和权重聚合方法以及切比雪夫中的定义一致,也即满足λ¡≥0,¡=1,…,m且。既然λ是各分量和为1的向量,而不是单位向量,我认为d2的求解式应该是有问题的,应该是

       

         另外我查阅有些博主也是这么认为的,比如爱吃米饭的小希https://blog.csdn.net/zp18355435850/article/details/80501324

         各个参数含义如下图:

         参见jinTesterhttps://blog.csdn.net/jinjiahao5299/article/details/76045936

可知算法放宽了对算法求出的解得要求,但加入了一个惩罚措施,说白了,就是你可以不把解生成在权重向量的方向上,但如果不在权重向量方向上,你就必须要接收惩罚,你距离权重向量越远,受的惩罚越厉害,以此来约束算法向权重向量的方向生成解。

接下来是关于d1和d2两个参数的计算表达式的含义说明,我依然是从几何角度理解的。

        d1——观察d1的计算表达式,Z*-F(x)可以看做原点到Z*点的向量减去原点到F(x)的向量,得到的是从F(x)出发指向Z*的一个向量,暂且命名为μ,之后μ与λ相乘得到μ在λ方向上的投影,这个长度值与λ的长度值之比为d1。

        d2——其表达式的含义其实也无非就是利用向量运算构造出d2所表示的向量,取模即可得到d2.构造过程如下:

       Z*表红色向量,d1*λ表蓝色向量(因为减法,所以方向取反),红色减蓝色得紫色向量,F(x)表绿色向量,绿色减紫色得黄色向量,即d2表黄色向量的长度。

 

辅助理解MOEA/D算法的

https://www.docin.com/p-1627227465.html [感觉翻译了论文的绝大部分] 

MOEA/D: A Multiobjective Evolutionary Algorithm Based on Decomposition
中文链接:https://wenku.baidu.com/view/d163a04d915f804d2a16c102.html  

文档下载:

链接:https://pan.baidu.com/s/1l5_Eq9ODlYov4XtEK2unsQ
提取码:na3t


 Chithon    http://blog.csdn.net/qithon/article/details/72885053#comments
jinTester    http://blog.csdn.net/jinjiahao5299/article/details/76045936


https://blog.csdn.net/sinat_33231573/article/details/80271801
多目标优化_学习笔记(三)MOEA/D   https://blog.csdn.net/qq_35414569/article/details/79655400 [对这三种方法的解释比较好]  

 

一种基于支配和分解的多目标优化进化算法学习笔记 :https://blog.csdn.net/zp18355435850/article/details/80501324

 

 

posted @ 2020-04-16 21:59  Vae永Silence  阅读(5664)  评论(7编辑  收藏  举报