随着模型越来越复杂,优化目标越来越多,传统算法都慢慢地无法胜任复杂优化任务,更为智能的优化方法也就应运而生了。其中有一类是进化优化算法,这类算法的思想来源是自然界的“优胜劣汰”法则,通过不停地保留好的个体最终达到优化目的。IEEE下有IEEE Transactions on Evolutionary Computation是为这类算法而开的。
算法是好,但初学者要如何尽快地用它来解决自己的优化模型呢,毕竟不能都去研究实现这类算法。为了帮助读者更快地能够使用算法,本文将介绍一些比较流行的优化框架。使用优化框架,你不用再管算法如何实现,而只需要选择算法、编制优化问题,编译运行,相信会大大地降低优化研究的门槛。
PlatEMO
PlatEMO是安徽大学BIMK团队(生物智能与知识发现研究所Institute of Bio-inspired Intelligence and Mining Knowledge)开发的一款以进化算法为基础的多目标优化框架库,这个库是由田野同学、程然博士、张兴义老师和金耀初老师开发。PlatEMO使用Matlab平台搭建而成,并带有GUI界面,是一款易用性、功能性和扩展性俱佳的优化工具。当前,该工具可在Windows、Linux双平台稳定使用了,对于Macos平台,开发人员还在验证测试中。对于Matlab熟悉的同学相信可以很快上手部署自己的优化模型使用PlatEMO进行多目标优化。
PlatEMO的特色主要有以下几点:
50+的开源优化算法,包括常用的NSGA-II、GDE3及MOEA-D等等
100+的开源多目标优化测试例题,包括常用的ZDT系列、DTLZ系列及WFG系列
可以通过界面完成优化实验
可以一键导出优化结果至Excel以及Latex
目前始终在维护并不断地有新算法的添加
Matlab开发对于数据有丰富的展现形式
BIMK上PlatEMO的主页链接:http://bimk.ahu.edu.cn/12957/list.htm
PlatEMO Github主页:https://github.com/BIMK/PlatEMO,主页介绍中有QQ群联系方式,入门级别的一些中文资料可参考:https://blog.csdn.net/qq_40434430/article/details/88366639以及该博主所发布的其它关于PaltEMO的文章。
PlatEMO综述文章:Tian Y, Cheng R, Zhang X, et al. PlatEMO: A MATLAB platform for evolutionary multi-objective optimization[J]. IEEE Computational Intelligence Magazine, 2017, 12(4): 73-87.
Jmetal
Jmetal是一个优秀的启发式算法(包含进化算法)开源框架,Github项目主页为https://github.com/jMetal。当前Jmetal已经进入了Jmetal5.0时代了。Jmetal框架成熟,同样也是适用于作为优化算法的测试以及二次开发的原始框架。Jmetal项目中包含了对最初的Java版本的全面介绍。虽然这些介绍十分精简,但对于深入理解Jemtal 的设计思路是有益的。
Jmetal的特点主要有以下几点:
Jmetal分支众多,包含java版本、python版本以及c++版本
30+的优化算法,包含单目标、多目标优化
除常用ZDT系列等例题,还包含CEC2009、CEC2018等优化竞赛例题
目前始终在维护并不断地有新算法的添加
变量编码形式较多
版本模块化很强易开发,且有着很好的性能
遗憾的是Jmetal当前并没有GUI界面,这对于想要使用这一优化工具的新手来说显得有一点不友好,但好在Jemtal版本有着较为详细的配置手册(限于Java\python版本),且python版本借助于所在平台可以干很多可视化的事。下图例:
Jmetal5(java)的介绍主页:http://jmetal.github.io/jMetal/ (Jmetal开发者连网页代码都开源了==)
Jmetal-cpp的介绍主页:http://jmetalcpp.sourceforge.net/
Jmetal-Py的综述文章:Benitez-Hidalgo A, Nebro A J, Garcia-Nieto J, et al. jMetalPy: a Python Framework for Multi-Objective Optimization with Metaheuristics[J]. arXiv preprint arXiv:1903.02915, 2019.
MOEA FRAMEWORK
MOEA Framework(以下简称MOEA)框架是David Hadka等人开发的一款开源Java优化框架。MOEA也是为多目标优化而开发,但同时也是包含许多单目标优化算法的,它的特性总结起来有以下几点:
40+的开源优化算法(有些是从jmetal和pisa等拿过来的),常用的测试例题
易扩展性
并行支持好,无需进行并行代码的编写
内含有丰富的测试算法的工具
为企业提供专业支持
比较详细的使用文档
如果当前你的计算机带有JDK(可以打开java文件),可以运行MOEA给的运行实例(主页右侧),感受一下。
MOEA的主页链接:http://moeaframework.org/
MOEA的Github链接:https://github.com/MOEAFramewor