最近查了一圈python的智能优化算法库,发现在python里面这样的库相对一些传统的语言还真是不太多(比如Matlab)。总的看起来似乎起步都还比较晚(个人认为有可能是因为智能算法本身相对复杂并且过于专业,多数应该还是集中在专业做优化的圈子里)。
具体的代码示例我们放在了CSDN的原文里,可以自行查阅:https://blog.csdn.net/cauchy7203/article/details/107572673
目前总结了以下库:
1、DEAP
2、mealpy
3、scikit-opt (国产良心)
4、Geatpy2(国产用心)
5、pygmo2
6、pyswarms
7、SciPy
项目地址:https://github.com/DEAP/deap
安装:
pip install deap
优点:
缺点:
项目地址:https://github.com/thieunguyen5991/mealpy
安装:
pip install meaply
优点:
缺点:
项目地址:https://github.com/guofei9987/scikit-opt
官文文档地址:https://scikit-opt.github.io/scikit-opt/#/zh/README
安装:
pip install scikit-opt
优点:
缺点:
项目地址:https://github.com/geatpy-dev/geatpy
官网地址:http://geatpy.com/
安装:
pip install geatpy
或者强制版本
pip install geatpy==2.5.1
优点:
缺点:
XM
?等。注:这个项目得多补充几句,目测应该是硕士生写的。总体的设计、DEMO、文档上给人感觉都远不如上面几个老练(尤其和DEAP相比)。但几个学生跨校合作,在不长的时间内能够完成如此完整的一个工作也实非易事。也希望他们能够继续进步。综合来看,这个项目个人认为属于国产用心。
项目地址:https://github.com/esa/pygmo2
安装:
pip install pygmo
注:安装还依赖如下环境
其它可能会用到的环境:
优点:
缺点:
注:这个库也吐槽一句,网传很厉害,但真没看出来除了看起来专业以外有何厉害之处。当然通常以C++为底层的东西有可能在大量级问题上的处理更加容易部署,但一般的用户也用不到。
项目地址:https://github.com/ljvmiranda921/pyswarms
安装:
pip install pyswarms
优点:
缺点:
项目地址:https://github.com/scipy/scipy
官方文档: https://docs.scipy.org/doc/
安装(当然其实当你装上Python的时候它就在了):
pip install scipy
特别说明: scipy作为一个相对严谨和‘传统’的数值计算库,基本上常用的数值计算方法都有涉及。当然数值计算型的库通常都不会把智能优化(启发式算法)作为重点。它集成了十分有限的几种优化算法:差分进化、模拟退火等。但它仍然有不少优点:
优点:
缺点:
后续如果再发现好用的库我们会继续更新,如果大家有好的建议也欢迎评论补充!
没想到这么个小破文章居然招来了两位作者( @幼鹰me @秋宏 )的亲自回复,实在惭愧。
这个笔记其实是疫情期间无聊的时候自己整理的。东看西看觉得还是应该总结一下,方便自己以及时不时查看一下。所以在用词上就很随意,想到哪就把最直观的感受记了下来,一些“点评”若有冒犯还请多见谅。
关于“国产XX”的说法,当时在调研的时候真的是比较激动,感觉在这个方面终于看到了国产的漂亮的开源项目了,所以写着写着就不由自主地加上了这么两处标记。说实在地对两个项目sciki-opt
和Geatpy2
的作者们是深感敬意。自己也尝试过做一些开源,但都很难坚持下来,学习、工作、生活多重压力下想保持一点情怀是真的不容易。所以衷心希望这些优秀的国产库能越来越多。当然,也不想说什么任重道远。开不开源的并不是我们的责任。更多的是希望这种氛围和环境能慢慢形成,我想只要国产的好东西变多了,自然而然地就会吸引更多的人来加入。大家其乐融融一边讨论一边完善,我想这件事情就自然会慢慢变得更好吧。