platEMO是Ye Tian等学者写的一款基于MATLAB的多目标优化工具,为新入门的同学或者开发者提供了很大的便利,其今年已经发布到PlatEMO 2.0版本了。这款工具主要具有以下的几个特点:
1.完全由MATLAB开发,不需要任何其它库。
2.包括现有的90个流行的MOEAs,包括遗传算法、差分进化、粒子群优化、模因算法、分布估计算法和基于代理模型的算法。其中大多数是2010年以后在顶级期刊上发表的代表性算法。
3.用户可以显示各种图形,包括结果的pareto front,真实的pareto front等等。
4.强大友好的GUI,可以不用编辑任何代码。
5.可以直接生成Excel或者LaTex。
最近闲来无事,想把这款好用的工具介绍给大家,platEMO还有一个交流群,里面有很多大佬哦,下面附上QQ群号码:100065008。
接下来说一下如何下载这款强大的工具。
下载:访问原作者的github直接下载就行啦:https://github.com/BIMK/PlatEMO
链接里也有说明文档,推荐大家直接看官方文档,本人的表述如果有误,欢迎批评指正。这个博客都是对2.0版本的使用说明等。
先简介一下下载文件夹的结构:PlatEMO文件夹里共有六个子文件夹和一个.m文件,每一个简介如下:
1.main.m:PlatEMO的唯一接口,调用这个函数来运行平台。
2.Algorithms:用于存储所有MOEAs的源代码。
3.GUI:用于存储代码以建立PlatEMO的GUI。
4.Metrics:用于存储所有性能指标的源代码。
5.Operators:用于存储所有操作符的源代码。
6.Problems:用于存储所有MOPs的源代码。
7.Public:用于存储公共类和实用程序函数。
所有文件都是开源的,里面有详细解释。
直接将matlab当前目录切换到你下载的文件夹里就可以使用platEMO了!
用户可以使用输入参数调用接口函数main()来运行PlatEMO的命令模式。如果没有任何参数的话,那么将运行GUI模式。main()课接受的参数如下表。注意,用户不需要分配所有参数,因为每个参数都有一个默认值。
-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. 每次生成后调用的函数,通常不需要修改。
例如:使用下面的命令在WFG1上运行RVEA,其种群大小为200和10个目标,最终结果将显示出来:
main('-algorithm',@RVEA,'-problem',@WFG1,'-N',200,'-M',10);
使用以下命令在WFG2上运行KnEA,并在KnEA和WFG2中设置参数:
main('-algorithm',{@KnEA,0.4},'-problem',{@WFG2,6});
每个MOEA和MOP的具体参数可以在对应函数头部的注释中找到。使用以下命令在DTLZ5上运行AR-MOEA10次,最终保存种群:
1. for r = 1 : 10
2. main('-algorithm',@ARMOEA,'-problem',@DTLZ5,'-save',1,
'-run',r);
3. end
用户可以通过以下命令运行PlatEMO的GUI模式:
main();
然后在GUI上可以看到两个模块,即测试模块和实验模块。测试模块用于每次在MOP上执行一个MOEA,结果将以图的形式显示。实验模块将同时在几个MOPs上执行多个MOEAs。统计结果将列在表格中。
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中设置运行的数量。然后按下F区域的两个按钮中的一个开始实验。统计结果将显示在G区域的表格中,用户可以使用K区域的按钮来控制优化过程。实验结束后,按下I区按钮,可以将表中数据以Excel或LaTeX格式保存。
或者,用户可以通过按区域K中的按钮加载现有配置,然后开始实验。如果在E区域给定的文件夹中已经存在任何结果文件,则将加载结果文件,而不是执行算法。
以上是platEMO的简单用法,下次博客更新如何使用platEMO编写算法,目标函数等扩展操作。
[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.