一种基于分解的多目标优化算法:MOEA/D

实验目的

本次实验以测试函数ZDT1为例,用MOEA/D算法得到最佳帕累托解集。

帕累托解

在约束空间之内,再也找不到比解A更好的解了,那么A就是其中一个帕累托最优解。

ZDT1测试函数

是一个两目标问题,其函数如下:
一种基于分解的多目标优化算法:MOEA/D

MOEA/D算法思想

MOEA/D是一种基于分解的多目标进化算法,它将多目标优化问题转化为一系列单目标优化子问题,然后利用一定数量相邻问题的信息,采用进化算法对这些子问题同时进行优化。由于分解操作的存在,该方法在保持解的分布性方面有着很大优势,而通过分析相邻问题的信息来优化,能避免陷入局部最优。
本文MOEA/D采用的分解策略:切比雪夫法。

下边简述一下相关基本概念,不懂概念可以暂时有个印象,本文着重写算法过程,建议根据算法进行理解,另外,由于以下部分涉及公式较多,本人在word写的,为防止乱码,故截图。

切比雪夫法

一种基于分解的多目标优化算法:MOEA/D

算法大体框架

一种基于分解的多目标优化算法:MOEA/D

用MOEA/D算法解决测试问题:

一种基于分解的多目标优化算法:MOEA/D
一种基于分解的多目标优化算法:MOEA/D
权重向量weights矩阵如下,每个种群的距离可对权重向量借助欧式距离得出。
一种基于分解的多目标优化算法:MOEA/D
distance是得出的距离矩阵:
一种基于分解的多目标优化算法:MOEA/D
对于101个种群来讲,每一个种群都有离它距离最近的T个邻居,而neighbour存的便是离每个种群最近的种群编号!!!
一种基于分解的多目标优化算法:MOEA/D
随机生成种群chrom矩阵,1个种群,30个自变量,故101x30,由于自变量均在[0,1]之间,所以矩阵值均在[0,1]之间。
一种基于分解的多目标优化算法:MOEA/D
而将每个种群的自变量代入ZDT1函数便可得到目标函数1即f1(x)和目标函数2即f2(x):如下为目标矩阵obj
一种基于分解的多目标优化算法:MOEA/D
z矩阵是拿到每个目标函数的最小值:
一种基于分解的多目标优化算法:MOEA/D
一种基于分解的多目标优化算法:MOEA/D
以对当前种群(oldpoint种群)进行操作为例:
一种基于分解的多目标优化算法:MOEA/D
randarray为随机生成的1xV矩阵,且值在[0,1],可以看到如果randarray对应值<变异率,则在select中设为1,否则置0
一种基于分解的多目标优化算法:MOEA/D
一种基于分解的多目标优化算法:MOEA/D
再对select为1的自变量值进行变异,结果就在oldpoint种群的基础上得到了新种群newpoint:
一种基于分解的多目标优化算法:MOEA/D
一种基于分解的多目标优化算法:MOEA/D
因为得到的新种群有可能自变量值超过[0,1],所以将不合法的值替换为边界值。
一种基于分解的多目标优化算法:MOEA/D
这里用正太分布产生的随机值矩阵可由以下函数得到:
newparam = min(max(normrnd(newpoint,sigma),min_range),max_range);
一种基于分解的多目标优化算法:MOEA/D
这里切比雪夫聚合即由切比雪夫函数计算结果即可。
一种基于分解的多目标优化算法:MOEA/D
这里得到了由切比雪夫法分解策略得到的ZDT1函数帕累托解集。
一种基于分解的多目标优化算法:MOEA/D

最后代码在本人上传的资源里,基本每行都有注释!https://download.****.net/download/qq_42517365/12314175