首发于公众号“一颗螺丝丁”,欢迎关注!

优化无处不在,无论你是不是从事优化研究,你都或多或少地面临研究模型优化问题。解决优化问题的算法被统称为优化算法,但优化算法的类型是非常多的。在机器学习中,大家都十分熟悉梯度下降法,在物理模型优化中,大家都熟悉牛顿法,而这些都是较为传统的优化算法了。随着模型越来越复杂,优化目标越来越多,传统算法都慢慢地无法胜任复杂优化任务,更为智能的优化方法也就应运而生了。其中有一类是进化优化算法,这类算法的思想来源是自然界的“优胜劣汰”法则,通过不停地保留好的个体最终达到优化目的。IEEE下有IEEE Transactions on Evolutionary Computation是为这类算法而开的。进化算法中最为人熟知的应该是遗传算法了,经过几十年的发展,现在进化算法家族已经枝繁叶茂了,重要的是越来越多的领域都开始使用这类算法解决一些实际难题了。关于遗传算法的通俗解释,大家可参阅科学松鼠会的这篇文章:https://songshuhui.net/archives/10462。而其余的进化类算法框架几乎与遗传算法相一致,有兴趣的可以查找更多的文献了解。

算法是好,但初学者要如何尽快地用它来解决自己的优化模型呢,毕竟不能都去研究实现这类算法。为了帮助读者更快地能够使用算法,本文将介绍一些比较流行的优化框架。使用优化框架,你不用再管算法如何实现,而只需要选择算法、编制优化问题,编译运行,相信会大大地降低优化研究的门槛。

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版本有着较为详细的配置手册(限于Javapython版本),且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/MOEAFramework

其它一些不再更新的多目标优化框架

  1. PISA (https://sop.tik.ee.ethz.ch/pisa/)

PISA Logo
PISA是苏黎世联邦理工学院ETH Zurich的Eckart Zitzler教授领导开发的一款多目标优化框架。熟悉进化算法理论的应该知道Zitzler是个大牛,不过目前他已从ETH Zurich离开,PISA由其他人接手。PISA在功能性上还可以,但是对于初学者来说,它的配置“过于复杂”了。从它的Bug日志来看,PISA也似乎有几年没有更新维护了,因而这个项目可能也终止了。

  1. OTL (https://github.com/O-T-L)

TL LogoOTL诞生于国内进化算法研究专家郑金华老师的实验室。OTL目前似乎是不再继续维护了,而且平台采用C++和Python混合编程搭建,对初学者有一定的门槛要求,尽管提供了安装教程,但涉及到boost以及CMake等的配置,所以本文不对该框架进行过多描述了,有兴趣的可访问Github主页访问,其中附有一篇OTL综述文献可供参考学习。

  1. OPT4J (http://opt4j.sourceforge.net/)

OPT4J 是一个开源的基于java的进化计算框架。它包含SPEA2、NSGA2、差分进化、粒子群优化和模拟退火等常用算法。基准测试集包括ZDT、DTL、WFG和背包问题。OPT4J 为配置提供图形用户界面以及优化过程的可视化。可惜当前最新Release停留在2015年。

  1. Watchmaker Framework (https://watchmaker.uncommons.org/index.php)

watchmaker是一个基于Java开发的多目标优化框架,由个人开发者负责。它具有可视化优化过程,并行支持等特性,但是主要以遗传算法为主,当前Github上的最后一次commit是2017年,对于主体代码的维护似乎不再支持。主页上提供了比较全面的API说明,使用手册。感兴趣的可以自行了解。

  1. ParadisEO(http://paradiseo.gforge.inria.fr/index.php)

ParadisEO是一个基于c++开发的多目标优化框架,有着很好的设计理念,可以在windows、Linux以及macos上运行。其中包含一些常用的算法与测试例题。当前events更新到2012年,所以应该也是不再维护了。

至此,本文介绍了一些优化框架,后续可能会带来更多的文章,敬请关注。感谢您的阅读!

差分进化算法_想用遗传算法?来看看这些已为你做好的开源优化框架相关推荐

  1. 差分进化算法_特邀嘉宾 | 科普差分进化算法(创新奇智运筹优化算法工程师朱小龙博士)...

    文案:段克邪 排版:随心390 hello,大家好.各位可点击此处,访问公众号官方店铺.谨防上当受骗,感谢各位支持! 今天我们有幸请到创新奇智运筹优化算法工程师朱小龙博士为大家科普差分进化算法,本次推 ...

  2. 差分进化算法_差分进化算法

    差分进化算法(Differential Evolution Algorithm,DE)是一种高效的全局优化算法.是一种模拟生物进化的随机模型,通过反复迭代,使得那些适应环境的个体被保存了下来.它的进化 ...

  3. 差分进化算法_基于差分进化的水泥烧成系统动态优化算法

    基于差分进化的水泥烧成系统动态优化算法 郝晓辰, 冀亚坤, 郑立召, 史鑫, 赵彦涛 燕山大学电气工程学院,河北 秦皇岛 066004 [摘  要]针对水泥烧成过程的资源浪费以及难以建立有效数学机理模 ...

  4. 差分进化算法_基于状态估计反馈的策略自适应差分进化算法

    差分进化算法框架下,借鉴闭环控制思想,设计状态评价因子,通过计算种群个体的进化状态估计值,实现变异策略的自适应切换,指导下一代种群的进化,以提高算法搜索性能. 王柳静, 张贵军, 周晓根. 基于状态估 ...

  5. 2018-4-7 差分进化算法

    首先差分进化算法是进化算法的一种,它包括变异,交叉,选择,边界检测. 来源: 差分进化算法_百度百科 https://baike.baidu.com/item/%E5%B7%AE%E5%88%86%E ...

  6. 优化算法:粒子群算法,遗传算法,差分进化算法

    目录 1.粒子群算法(PSO) 2.遗传算法 3.差分进化算法 1.粒子群算法(PSO) 整个粒子群优化算法的算法框架如下: step1种群初始化,可以进行随机初始化或者根据被优化的问题设计特定的初始 ...

  7. 遗传算法 差分进化算法 粒子群优化算法区别

    一 遗传算法 遗传算法(GA)作为一种经典的进化算法,自 Holland提出之后在国际上已经形成了一个比较活跃的研究领域. 人们对 GA 进行了大量的研究,提出了各种改进算法用于提高算法的收敛速度和精 ...

  8. 机器学习中四类进化算法的详解(遗传算法、差分进化算法、协同进化算法、分布估计算法)

    1.遗传算法(Genetic Algorithm,GA) GA算法原理 首先我们来介绍进化算法的先驱遗传算法,遗传算法(Genetic Algorithm,简称GA)是一种最基本的进化算法,它是模拟达 ...

  9. 一文了解差分进化算法的前世今生

    文章目录 综合表现 流程概述 初始化 变异 交叉 选择 算法特点 算法改进 变异算子 种群数量 N P NP NP 缩放因子 F F F和变异率 C r Cr Cr 改进DE排名 发展方向 超参数改进 ...

最新文章

  1. Linux系统的常用命令的使用
  2. python绘制坐标点画出半径_24行Python代码让小球“弹”起来
  3. 在PowerPoint 2010中将鼠标用作激光笔
  4. 使用js将后台返回的数据转换成树形结构
  5. 【转】Magento2 数据库操作
  6. 蜗牛学习正则表达式 教程 工具一网打尽
  7. 微信小程序-测试游戏生成六边多边形
  8. CSS学习总结(4)——盒模型/背景属性
  9. AutoCAD实用小技巧教程。
  10. HDMI接口简介---分辨率 时钟频率 lane速率计算
  11. mysql时间戳里取小时
  12. 基于Unity3D的Xml文件的存储的实现
  13. 区别 chown和chmod的用法
  14. docker(十五):docker-swarm三节点集群搭建
  15. pdf怎么压缩又小又清晰?
  16. Java项目一(案例):家庭收支记账软件
  17. 魔绑广告病毒感染量提升 ROOT控制手机并下载其他病毒
  18. python matplotlib 画DW检验图自相关图
  19. 【心善渊Selenium3.0基础】— 15、Selenium中单选按钮和多选按钮的操作
  20. 数据压缩第六周作业——DPCM预测编码

热门文章

  1. connection_reset -101
  2. 最大值最小值算法(象棋博弈)
  3. 【史上最强代码编辑器VS Code】之VS Code 在线听网易云音乐
  4. BUUCTF RE WP31-32 [WUSTCTF2020]level1、[GWCTF 2019]xxor
  5. 开学季·DGUT立Flag =W=
  6. 在互联网行业断断续续这四年间
  7. 2022年上海市安全员C证考试内容及上海市安全员C证考试技巧
  8. 重磅!实在智能首创“智能融合拾取”技术!
  9. 分享一款市面比较好用的收款工具, SHOUK8 个人微信支付宝收款工具 微信支付宝财付通免签约收款即时到帐辅助
  10. QStringList去除重复项