最近查了一圈python的智能优化算法库,发现在python里面这样的库相对一些传统的语言还真是不太多(比如Matlab)。总的看起来似乎起步都还比较晚(个人认为有可能是因为智能算法本身相对复杂并且过于专业,多数应该还是集中在专业做优化的圈子里)。

目前总结了以下库:

1、DEAP

2、mealpy

3、scikit-opt (国产良心)

4、Geatpy2(国产用心)

5、pygmo2

6、pyswarms

7、SciPy

1、DEAP

安装:

pip install deap

优点:起点高,发表在Journal of Machine Learning Research

用法灵活,所有模块均可自定义

缺点:上手麻烦比较麻烦

2、mealpy

安装:

pip install meaply

优点:算法丰富,集成了现有的62种算法,目测应该还在继续更新添加

上手容易,代码简单,比如对标准函数库的函数进行优化:

缺点:整体设计似乎不太规范,文档解释不够

语言上似乎还存在一点小问题,英语应用不够规范(这可能也是作者没有发表很好的杂志的原因之一)

集成了多种算法但未列举参考文献,不方便论文引用

3、scikit-opt (国产良心)

安装:

pip install scikit-opt

优点:上手容易,代码简单,尤其许多用法很像Matlab。比如官方文档就提供了一些例子:使用遗传算法进行曲线拟合

中文文档,并且文档很全。大佬的CSDN主页。(作者 @幼鹰me 曾经是京东算法工程师,现在是蚂蚁算法工程师,这个库也的确感觉得到一些情怀,方便实用的感觉)

在使用方便的基础上,也提供了不少接口用于自行修改。尤其可以自定义算子。

一些较好玩的特性:GPU加速、断点运行等。

缺点:目前似乎还没有集成足够多的方法。大类有3类,共7种算法。

算法本身的优化似乎还不足(未仔细测试)

4、Geatpy2(国产用心)

安装:

pip install geatpy

或者强制版本

pip install geatpy==2.5.1

优点:上手容易,实现简单

文档完整,示例丰富(中文文档)

功能齐全,除算法以外也封装了许多实用的功能,比如数据可视化等

缺点:代码风格诡异

英文用语不规范,变量命名相对随意,比如入门文档中,将目标函数翻译成"aimFunc",变量名称XM?等。

文档开展还显得比较稚嫩,比如主页文档就用插件显示,官网体验还欠些火候

注:这个项目得多补充几句,目测应该是硕士生写的。总体的设计、DEMO、文档上给人感觉都远不如上面几个老练(尤其和DEAP相比)。但几个学生跨校合作,在不长的时间内能够完成如此完整的一个工作也实非易事。也希望他们能够继续进步。综合来看,这个项目个人认为属于国产用心。

5、pygmo2

安装:

pip install pygmo

注:安装还依赖如下环境

其它可能会用到的环境:

优点:功能丰富

支持并行和分布式计算(本身运行效率也很高)

用法灵活

感觉测试相对稳定(未仔细测试)

缺点:上手相对麻烦

依赖项较多,尤其要求对应C++版的软件环境

算法有限

注:这个库也吐槽一句,网传很厉害,但真没看出来除了看起来专业以外有何厉害之处。当然通常以C++为底层的东西有可能在大量级问题上的处理更加容易部署,但一般的用户也用不到。

6、pyswarms

安装:

pip install pyswarms

优点:简单,易上手,基本上也属于几行代码入门型

可视化,尤其动态可视化做得好。(亮点),比如画出图形,基本上就是一句代码:

缺点:算法少。只有基于PSO的各类问题的算法(本质上其实就只是一个算法)

灵活度不够。

起点低。发表的论文既没进入CCF推荐,也没进入SCI。同时虽然号称有许多研究论文用过,但仔细看级别都不高(基本都属于三无型)

7、SciPy(想不到吧)

安装(当然其实当你装上Python的时候它就在了):

pip install scipy

特别说明: scipy作为一个相对严谨和‘传统’的数值计算库,基本上常用的数值计算方法都有涉及。当然数值计算型的库通常都不会把智能优化(启发式算法)作为重点。它集成了十分有限的几种优化算法:差分进化、模拟退火等。但它仍然有不少优点:

优点:作为严谨的数值计算库,它的正确性和稳定性值得信赖(超过800个contributor,其中有不少是名校的教师、博士等)

使用方便、简单

scipy也可以自定义优化算法

缺点:自然就是算法太少了

虽然可以自定义,但麻烦程度几乎相当于完全自己造轮子

后续如果再发现好用的库我们会继续更新,如果大家有好的建议也欢迎评论补充!

写在后面没想到这么个小破文章居然招来了两位作者( @幼鹰me @秋宏 )的亲自回复,实在惭愧。

这个笔记其实是疫情期间无聊的时候自己整理的。东看西看觉得还是应该总结一下,方便自己以及时不时查看一下。所以在用词上就很随意,想到哪就把最直观的感受记了下来,一些“点评”若有冒犯还请多见谅。

关于“国产XX”的说法,当时在调研的时候真的是比较激动,感觉在这个方面终于看到了国产的漂亮的开源项目了,所以写着写着就不由自主地加上了这么两处标记。说实在地对两个项目sciki-opt和Geatpy2的作者们是深感敬意。自己也尝试过做一些开源,但都很难坚持下来,学习、工作、生活多重压力下想保持一点情怀是真的不容易。所以衷心希望这些优秀的国产库能越来越多。当然,也不想说什么任重道远。开不开源的并不是我们的责任。更多的是希望这种氛围和环境能慢慢形成,我想只要国产的好东西变多了,自然而然地就会吸引更多的人来加入。大家其乐融融一边讨论一边完善,我想这件事情就自然会慢慢变得更好吧。

python算法库执行效率_Python智能优化算法库小汇总相关推荐

  1. 智能优化算法:帝国主义竞争算法-附代码

    智能优化算法:帝国主义竞争算法-附代码 文章目录 智能优化算法:帝国主义竞争算法-附代码 1.算法原理 1.1 帝国集团的初始化 1.2 帝国集团内部调整 1.3 交换帝国和殖民地的位置 1.4 帝国 ...

  2. 智能优化算法:多元宇宙优化算法-附代码

    智能优化算法:多元宇宙优化算法-附代码 文章目录 智能优化算法:多元宇宙优化算法-附代码 1.算法原理 2.算法流程图 3.算法结果 4.参考文献 5.MATLAB代码 6.python代码 摘要:多 ...

  3. 智能优化算法:正余弦优化算法-附代码

    智能优化算法:正余弦优化算法-附代码 文章目录 智能优化算法:正余弦优化算法-附代码 1.算法原理 2.算法流程 3.算法结果 4.参考文献 5.MATLAB代码 6.Python代码 摘要:正 余 ...

  4. 智能优化算法:蚁狮优化算法-附代码

    智能优化算法:蚁狮优化算法-附代码 文章目录 智能优化算法:蚁狮优化算法-附代码 1.算法原理 1.1 蚂蚁的随机游走 1.2蚁狮对蚂蚁随机游走的影响 1.3自适应机制 1.4 精英策略 2.算法步骤 ...

  5. 为什么只有状态转移算法才是真正意义上的智能优化算法,其它的都是“假冒伪劣”?

    0 旁白 长期以来,"论文为王"的观念被推崇至上,没有论文就没有发言权,发表了大量学术论文才能高谈阔论.坐而论道,以至于出现"大家都忙着写论文,没有时间搞科研" ...

  6. 智能优化算法:天牛须搜索算法

    往期内容: 智能优化算法(一):海鸥算法原理及Matlab代码 智能优化算法(二):海鸥算法之改进篇 智能优化算法(三):基于量子的鸽群优化算法 智能优化算法(四):基于Powell优化的鸽群优化算法 ...

  7. 智能优化算法之遗传算法(GA)的实现(基于二进制编码,Python附源码)

    文章目录 一.遗传算法的实现思路 二.基于二进制编码方式的遗传算法的实现 1.库的导入 2.目标函数 3.个体编码函数 4.个体解码函数 5.选择函数 6.交叉函数 7.变异函数 8.算法主流程 一. ...

  8. java寻优算法_模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径...

    模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...

  9. 智能优化算法之灰狼优化算法(GWO)的实现(Python附源码)

    文章目录 一.灰狼优化算法的实现思路 1.社会等级结构分级 2.包围猎物 3.攻击猎物 4.搜索猎物 二.算法步骤 三.实例 一.灰狼优化算法的实现思路 灰狼优化算法(Grey Wolf Optimi ...

最新文章

  1. Ubuntu 16.04 安装Django
  2. python进行ocr识别图片上的中文
  3. Hadoop学习之MapReduce(四)
  4. 进程共享变量#pragma data_seg用法
  5. 计算机采购类增值税税率是多少,各个行业的税率是多少?
  6. 最近30分钟合约市场爆仓842万美元
  7. 抛开 Android 不谈,谁是最受欢迎的 Linux 发行版?
  8. 拿什么奉献给你,我的敏感信息(转)
  9. java 局域网广播_java UDP实现局域网广播 | 学步园
  10. 一起学ORBSLAM2(6)ORBSLAM中的特征匹配
  11. 电脑网速正常就是打开网页慢是什么原因啊?
  12. 单片机实验(十一)单片机独立按键控制LED
  13. 深度linux如何安装迅雷,deepin官方论坛-深度科技官网旗下网站
  14. bootstrap开发微信公众号后台界面
  15. mysql 日志重做,設置MySQL重做日志大小
  16. 如何使用火焰图对Spark的executor的CPU使用率进行profile?具体步骤,如何操作?
  17. Linux驱动学习12(初步认识内存管理)
  18. 【luogu P3426】SZA-Template(字符串)(KMP)
  19. POJ-29932996
  20. 使用MMX/SSE汇编指令集优化视频开发

热门文章

  1. 【记录】饥荒联机版+个人云服务器搭建(2020.6.19)
  2. 恭喜ULAM团队在数字版权领域的研究上有了新突破
  3. DG备库delay设置备库延时apply archivelog 但不延时传送归archivelog
  4. iOS UIWebView 缩放
  5. BAT三巨头之云产品角逐
  6. k8s使用(kubernetes)
  7. 求500以内的10个最大素数及其和,并分别输出这10个最大素数及其和。
  8. 《陈海贤---如何面都不确定》有感
  9. 实践数据湖iceberg 第二十四课 iceberg元数据详细解析
  10. C/C++使用Windows的API实现共享内存以及同步