三分钟入门PlatEMO(基于MATLAB的进化多目标优化平台)+platEMO3.0版本更新


相信大家点开这篇文章,应该也或多或少知道PlatEMO这个平台,PlatEMO现在也逐步成为学习多目标优化方向的baseline,在这个平台更方便、更便捷,也能够同时对其他算法进行对比。基于目前实验任务,现在需要熟悉PlatEMO这个平台,并想要把实际研究问题进行运用,现在先简要介绍一下PlatEMO这个MATLAB平台。

PlatEMO 简介

在这里插入图片描述
PlatEMO是由田野等学者共同开发的基于MATLAB多目标进化平台,主要优点:

  • 100+开源进化算法
  • 200+开源多目标测试问题
  • 强大的图形用户界面,可并行执行实验
  • 通过一键操作生成Excel或LaTeX表格格式的结果
  • 将继续包含最先进的算法

包含了50种多目标优化算法,110个多目标优化问题。
在这里插入图片描述
在这里插入图片描述
显示了PlatEMO在一些具有3个目标的MOP的帕累托最优前沿上采样的参考点,而其他任何现有的EMO库都没有提供这样的参考点。
在这里插入图片描述
同时也跟现有的5个库进行对比
在这里插入图片描述
PlatEMO提供了多种不同类型的MOEA和MOPS,其中MOEA的类型包括遗传算法、差分算法、粒子群优化算法、模因算法、分布估计算法、代理辅助进化算法以及多目标、多目标、组合、大规模和昂贵的MOPS优化问题。

PlatEMO体系结构

文件介绍

PlatEMO根目录下有六个文件夹和一个接口函数main.m。
在这里插入图片描述

  • \Algorithms:用于存储PlatEMO中的所有MOEA,其中每个MOEA都有一个独立子文件夹,所有相关功能都在其中。如上图可以看到,子文件夹\Algorithms\NSGA-II包含三个函数NSGAi.m
  • CrowdingDistance.m和Environment-Selection.m,它们分别用于执行主循环、计算拥挤距离和执行NSGA-II的环境选择。
  • \Problems:包含许多用于存储基准MOPS的子文件夹。如上图可以看到,子文件Problems\DTLZ包含15个DTLZ测试问题.
  • \Operators:存储所有运算符
  • \Metrics:性能指标
  • \Public:用于存储一些公共类和函数,如GLOBAL.m和INDIVIDUAL.m,这是PlatEMO中的两个类,分别表示参数设置和个人定义。
  • \GUI存放了创建PlatEMO图形用户界面的所有功能,用户无需阅读或修改。

体系结构

PlatEMO也有一个简单的体系结构,它只涉及两个类,即全局类GLOBAL和个体类INDIVDUAL,用于存储所有参数并连接所有组件(例如MOEA、MOPS和操作符)。
所有算法函数的统一接口。
GLOBAL:表示所有的参数设置,包括MOEA函数算法的处理、MOP函数问题的处理、算子函数操作符的处理以及与环境有关的其他参数(种群大小、目标数量、决策变量的长度、适应度评估的最大次数等)。例如:方法Initialization()可以生成指定大小的随机初始种群,方法Variation()可以生成一组具有指定父代的子代。在这里插入图片描述
INDIVDUAL:它的对象完全是MOEA中的个体,单个对象包含四个属性,即dec、obj、con和add,dec是单个对象的决策变量数组,是在实例化对象时分配的。obj和con分别存储在分配了dec之后计算的个体的目标值和约束值。属性add用于存储某些特殊操作符的个体的附加属性。

PlatEMO运行原理

在没有图形用户界面的情况下,PlatEMO运行MOEA的顺序图。在这里插入图片描述

  1. 接口main.m首先调用算法函数(例如,NSGAI.m),
  2. 该算法通过调用其方法Initialization()从全局对象获得初始种群(即,单个对象的数组)。
  3. 算法开始进化,直到满足终止准则,其中以适应度评估的最大次数作为PlatEMO中所有MOEA的终止准则。
  4. 在一般MOEA的每一代中,执行交配池选择,以便从当前种群中选择一定数量的父代,然后使用这些父代通过调用全局对象的方法Variation()来生成后代。
  5. Variation()将父代传递给运算符函数(例如,dem),该函数用于根据父代计算子代的决策变量。
  6. 操作符函数调用单个类来实例化子代对象,其中子代的目标值是通过调用问题函数(例如,DTLZ1.m)来计算的。
  7. 该算法在得到子代后,对当前种群和子代进行环境选择,为下一代选择种群。
  8. 当实例化的个体对象数量超过适应度评估的最大数量时,算法将终止,并输出最终种群。

下载+运行PlatEMO

下载

PlatEMO 2.9的发行要点,添加一种用于约束优化的算法(即CMOEA-MS),一种用于大规模优化的算法(即DGEA),一种用于昂贵的优化的算法(即MESMO)和一种用于特征选择的算法(即DAEA)。该平台目前有122种算法。
下载地址:https://github.com/BIMK/PlatEMO
本人之前也上传到csdn上,需要直接访问即可https://download.csdn.net/download/qq_36317312/12889129

运行PlatEMO

PlatEMO提供了两种运行方式:

  1. 是在没有输入参数的情况下调用main()接口,就可以在图形用户界面上运行,然后用户可以通过简单的一键操作对拖把执行MOEA;(without GUI)
  2. 是可以在没有图形用户界面的情况下运行,用户可以通过带输入参数的main()调用main()在拖把上执行一次MOEA。(GUI)
命令模式

通过调用main(‘name’,value,‘name’,value,…)直接运行指定算法、问题和设置
在这里插入图片描述
-algorithm. 要执行的MOEA的函数。
-problem. 待解决的MOP。
-N. MOEA的种群规模。注意,它被固定在某些MOEAs(例如moea .m)中的某些特定值上,因此这些MOEAs的实际种群大小可能并不完全等于这个参数。
-M. MOP的目标数目。注意,在不可伸缩的MOPs(例如ZDT1.m)中,目标的数量是恒定的,因此这个参数对于这些MOPs是无效的。
-D. MOP决策变量的个数。注意,在某些MOP中,决策变量的数量是常量或固定到某些特定整数上的(例如:ZDT5.m),因此决策变量的实际数量可能并不完全等于这个参数。
-evaluation. 函数评价的最大数目。
-run. 运行数。如果用户希望为相同的算法、问题、M和D参数保存多个结果,则在每次运行时修改此参数,使结果的文件名不同。
-save. 保存的种群。如果将该参数设置为0(默认值),则会在终止后显示结果图;否则,在进化过程中获得的种群将保存在一个名为的文件中Data\algorithm\algorithm_problem_M_D_run.mat。例如:如果save为5并且evaluation是20000,评价数量为4000、8000、12000、16000、20000时得到的种群将被保存。
-outputFcn. 每次生成后调用的函数,通常不需要修改。
注意,用户不需要分配所有参数,因为每个参数都有一个默认值。
下面就简单演示一下
选择的是NSGAII的算法+DTLZ2 的问题,种群大小为100,评价最大数目为10000

main('-algorithm',@NSGA-II,'-problem',@DTLZ2,'-N',100,'-evaluation',10000);

在这里插入图片描述
最终也能看到True PF
在这里插入图片描述

图形界面模式(GUI)

通过调用main()可运行图形界面

main()

在这里插入图片描述
测试模式:单个算法运行细节研究
在这里插入图片描述
实验模式:多个算法的批量性能对比
在这里插入图片描述
具体功能块:
在这里插入图片描述
PlatEMO测试模块界面如上图所示。各区域管制的职能如下:
Region A. 选择要执行的MOEA和MOP。
Region B.设置所选MOEA和MOP的参数。每个参数的值应该是一个标量。注意这里的公共参数N,M,D和evaluation都视为MOP的参数。如果将参数设置为空,则该参数将等于其默认值。
Region C.根据当前配置执行MOEA。
Region D.显示光标移动到的区域B中的参数的介绍。
Region E.显示优化过程中的当前种群。
Region F.放大,缩小,平移或旋转E区域的轴。
Region G.在新的标准MATLAB图中打开E区域的坐标轴,可以对坐标轴进行更多的操作,例如保存坐标轴。
Region H.选择要显示在E区域轴线上的数据,包含种群的pareto front,种群的pareto集合,MOP的真实pareto front和任何性能度量的收敛轮廓。
Region I.控制优化过程,即,开始,暂停,停止,后退和前进。
Region J.显示其中一个历史结果。
Region K.显示结果的最终种群的性能度量值。
Region L.显示执行的详细信息。
用户打开测试模块后,首先选择要在A区域执行的MOEA和MOP,并在B区域设置参数,然后按下区域C按钮执行算法。实时种群将显示在E区域的轴线上,用户可以使用I区域的按钮来控制优化过程。算法结束后,通过选择J区域的弹出菜单,可以重新显示所有的历史结果。

在这里插入图片描述
PlatEMO实验模块界面如上图所示。各区域管制的职能如下:
Region A. 选择要执行的MOEA和MOP。
Region B.设置所选MOEA和MOP的参数。MOPs里的每个参数的值都可以是一个向量。因此,MOEAs可以在相同的MOP上以不同的设置执行。
Region C.设置每个文件中保存的种群数量。例如,如果种群大小为5,评估的数量为20000,评价数量为4000,8000,12000,16000和20000时的种群被保存。
Region D.设置每个MOP上每个MOEA的运行次数。
Region E.设置保存实验设置的文件路径。用户还可以打开现有的配置文件来加载实验设置。所有结果都将保存在文件路径的同一文件夹中。
Region F.按顺序或并行执行实验。
Region G.显示实验的统计结果。
Region H.指定表中显示的数据类型。
Region I.将表格保存为Excel或LaTeX格式。
Region J.选择表中显示的数据,包括最终总体的任何性能度量值。
Region K.控制优化过程,即,开始,暂停,停止。
Region L.右键单击一个单元格,以显示种群的Pareto front,种群的pareto集合,或度量值的收敛轮廓。
用户打开实验模块,首先选择在区域A中执行的MOEAs和MOPs,并在区域B中设置它们的参数,在区域C中设置保存的种群数量,在区域D中设置运行的数量。选择需要对比的算法以及问题,最后运行结果可以显示出来,实验结束后,按下I区按钮,可以将表中数据以Excel或LaTeX格式保存。

PlatEMO扩展

PlatEMO的扩展主要是允许用户在其中添加自己的MOEA、MOP、Operators and Performance indicators.

向PlatEMO添加新算法

用户只需按照PlatEMO的要求对其算法的matlab函数的输入和输出稍作修改,并将该函数(.m文件)放在根目录的\Algorithms文件夹中。
可以根据NSGAII主函数源代码的案例研究,来看一下
在这里插入图片描述
MOEA的主函数有一个输入参数和零个输出参数,其中唯一的输入参数表示当前运行的全局对象。然后,通过调用Global.Initialization()生成初始种群,并计算每个个体的非支配前沿数和拥挤距离(第2-4行)。在每一代中,都会调用函数Global.NotT ermination()来检查是否满足终止条件,并将变量Population传递给该函数作为最终输出(第5行)。然后,依次执行交配池选择、后代生成和环境选择(第6-9行)。
除了函数的接口,MOEA至少需要执行以下三个操作:通过Global.Initialization()获取初始种群,通过Global.NotT remination()检查优化状态并输出最终种群,通过Global.Variation()生成后代,其中所有这三个函数都由全局对象提供。

向PlatEMO添加新问题

MOP函数的所有.m文件都存储在\Problems文件夹中,将算法放在根目录下。
选择了DTLZ2的源代码,其中任何MOP所需的公共代码都带有下划线
在这里插入图片描述
NSGAII的函数DTLZ2()包含3个输入参数和1个输出参数。输入参数Operation决定要执行的操作;Global参数表示全局对象;当Operation设置为不同的值时,参数Input有不同的含义,输出参数varargout也有不同的含义。与每次运行中只调用一次的MOEA函数不同,MOP函数可以针对不同的操作调用多次。
MOP函数包含三个独立的操作:生成随机决策变量(第3-10行),计算目标值和约束值(第11-23行),以及对真正的帕累托前沿上的参考点进行采样(第24-27行)。

向PlatEMO添加新的运算符和性能指标

基于二进制编码的进化运算符的源代码(即EAbinary.m),其中运算符函数的.m文件都存储在文件夹\Operators中。运算符函数有两个输入参数,一个表示全局对象(即全局),另一个表示父代群体(即父代),它还有一个输出参数表示生成的子代(即子代)。
在这里插入图片描述
源代码可以看出,操作符函数的主要任务是根据Parent的值生成子代,其中EAbinary()执行代码第6-11行的单点交叉和第12-13行的逐位变异。然后,生成并返回子代的各个对象(第14行)。

显示了IGD的源代码,其中所有这些性能指标函数都存储在文件夹\Metrics中。
IGD()的输入参数由两部分组成:总体的目标值(即PopObj)和在真实Pareto前沿上采样的参考点(即Pf)。
在这里插入图片描述
可以使用MATLAB提供的内置函数pDist2()来计算PF中的每个点到PopObj中的点的最小距离的平均值。

这就是PlatEMO平台的大致内容,后期我也会结合自己方向更新一篇关于拓展功能部分,主要是将一些实际应用问题来用多目标优化算法来解决,同时将算法和问题添加到PlatEMO平台中。

非常感谢晓风wangchao的博客,给了我很大的帮助,同时也参考了一些内容,有兴趣大家也可以看一下https://blog.csdn.net/qq_40434430/article/details/88366639

最后看了这篇文章:[1]: Ye Tian, Ran Cheng, Xingyi Zhang, and Yaochu Jin, “PlatEMO: A MATLAB platform for evolutionary multi‐objective optimization [educational forum],” IEEE Computational Intelligence Magazine, 2017, 12(4): 73‐87.
已经上传:https://download.csdn.net/download/qq_36317312/13492629

PlatEMO 3.0版本

  1. 添加了20多个单目标进化算法和100多个单目标测试问题。平台目前含有150个算法和339个测试问题,涉及单目标优化、多目标优化、超多目标优化、组合优化、大规模优化、约束优化、多模态优化、昂贵优化、稀疏优化和偏好优化,测试问题包含机器学习、数据挖掘、网络科学、信号处理、调度、经济和工程中的实际问题。
  2. 全新开发的整体框架和图形界面,带有更多的模块及更强大的功能;
  3. 基于标签的过滤系统,使用户可以准确地选择针对不同类型问题的算法;
  4. 更加方便的问题定义方式,用户无需编写独立的代码文件即可自定义问题;
  5. 更加多样化的结果展示方式,问题的真实前沿面和可行区域可随种群一起展示;
  6. 提供中文用户手册。

中文用户手册已经上传:https://download.csdn.net/download/qq_36317312/15580717
PlatEMO3.0文件资源:https://download.csdn.net/download/qq_36317312/15580736
有需要的小伙伴,也可以访问BIMK实验室的github链接:https://github.com/BIMK/PlatEMO

猜你喜欢

转载自blog.csdn.net/qq_36317312/article/details/109625180