最近几年简单浏览和对比了一些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择。

文章目录

    • 1、DEAP
  • 2、mealpy
    • 3、scikit-opt (国产良心)
    • 4、Geatpy2(国产用心)
    • 5、pygmo2
    • 6、pyswarms
    • 7、SciPy(想不到吧)
    • 小结
1、DEAP

项目地址:https://github.com/DEAP/deap

安装

pip install deap

优点

  • 起点高,发表在Journal of Machine Learning Research
  • 用法灵活,所有模块均可自定义

缺点

  • 上手麻烦比较麻烦

比如它是这样设置参数然后完成一个简单的函数最大优化的:

import random
from deap import creator, base, tools, algorithmscreator.create("FitnessMax", base.Fitness, weights=(1.0,))
creator.create("Individual", list, fitness=creator.FitnessMax)toolbox = base.Toolbox()toolbox.register("attr_bool", random.randint, 0, 1)
toolbox.register("individual", tools.initRepeat, creator.Individual, toolbox.attr_bool, n=100)
toolbox.register("population", tools.initRepeat, list, toolbox.individual)def evalOneMax(individual):return sum(individual),toolbox.register("evaluate", evalOneMax)
toolbox.register("mate", tools.cxTwoPoint)
toolbox.register("mutate", tools.mutFlipBit, indpb=0.05)
toolbox.register("select", tools.selTournament, tournsize=3)population = toolbox.population(n=300)NGEN=40
for gen in range(NGEN):offspring = algorithms.varAnd(population, toolbox, cxpb=0.5, mutpb=0.1)fits = toolbox.map(toolbox.evaluate, offspring)for fit, ind in zip(fits, offspring):ind.fitness.values = fitpopulation = toolbox.select(offspring, k=len(population))
top10 = tools.selBest(population, k=10)
  • 速度慢(许多人都反应有这个问题)

  • 集成的算法少(当然也可以通过自定义来修改,但这样和完全自写没多大区别)

  • 超过半年没有更新(最近更新也只是安装上的修改)

2、mealpy

项目地址:https://github.com/thieunguyen5991/mealpy

安装

pip install meaply

优点

  • 算法丰富,集成了现有的62种算法,目测应该还在继续更新添加
  • 上手容易,代码简单,比如对标准函数库的函数进行优化:
    from opfunu.type_based.uni_modal import Functionsfrom mealpy.evolutionary_based.GA import BaseGAt1 = Functions()## Setting parametersobjective_func = t1._sum_squres__problem_size = 30domain_range = [-15, 15]log = Trueepoch = 100pop_size = 50pc = 0.95pm = 0.025md = BaseGA(objective_func, problem_size, domain_range, log, epoch, pop_size, pc, pm)best_position, best_fit, list_loss = md._train__()print(best_fit)

缺点

  • 整体设计似乎不太规范,文档解释不够
  • 语言上似乎还存在一点小问题,英语应用不够规范(这可能也是作者没有发表很好的杂志的原因之一)
  • 集成了多种算法但未列举参考文献,不方便论文引用
3、scikit-opt (国产良心)

项目地址:https://github.com/guofei9987/scikit-opt

官文文档地址:https://scikit-opt.github.io/scikit-opt/#/zh/README

安装

pip install scikit-opt

优点

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

  • 中文文档,并且文档很全。大佬的CSDN主页。(作者自称是京东算法工程师,这个库也的确感觉得到一些情怀,方便实用的感觉)

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

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

缺点

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

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

4、Geatpy2(国产用心)

项目地址:https://github.com/geatpy-dev/geatpy

官网地址:http://geatpy.com/

安装:

pip install geatpy

或者强制版本

pip install geatpy==2.5.1

优点

  • 上手容易,实现简单
  • 文档完整,示例丰富(中文文档)
  • 功能齐全,除算法以外也封装了许多实用的功能,比如数据可视化等

缺点

  • 代码风格诡异,比如
  • 英文用语不规范,变量命名相对随意,比如入门文档中,将目标函数翻译成"aimFunc",变量名称XM?等。
def aimFunc(self, pop): # 目标函数Vars = pop.Phen # 得到决策变量矩阵XM = Vars[:,(self.M-1):]g = 100 * (self.Dim - self.M + 1 + np.sum(((XM - 0.5)**2 - np.cos(20 * np.pi * (XM - 0.5))), 1, keepdims = True))ones_metrix = np.ones((Vars.shape[0], 1))f = 0.5 * np.fliplr(np.cumprod(np.hstack([ones_metrix, Vars[:,:self.M-1]]), 1)) * np.hstack([ones_metrix, 1 - Vars[:, range(self.M - 2, -1, -1)]]) * np.tile(1 + g, (1, self.M))pop.ObjV = f # 把求得的目标函数值赋值给种群pop的ObjV
  • 文档开展还显得比较稚嫩,比如主页文档就用插件显示,官网体验还欠些火候

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

5、pygmo2

项目地址:https://github.com/esa/pygmo2

安装

 pip install pygmo

:安装还依赖如下环境

  • the pagmo C++ library, 2.13 +;the Boost serialization library,1.60+;NumPy;cloudpickle.

其它可能会用到的环境:

  • dill;Matplotlib;NetworkX

优点

  • 功能丰富
  • 支持并行和分布式计算(本身运行效率也很高)
  • 用法灵活
  • 感觉测试相对稳定(未仔细测试)

缺点

  • 上手相对麻烦
  • 依赖项较多,尤其要求对应C++版的软件环境
  • 算法有限

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

6、pyswarms

项目地址:https://github.com/ljvmiranda921/pyswarms

安装

pip install pyswarms

优点

  • 简单,易上手,基本上也属于几行代码入门型
  • 可视化,尤其动态可视化做得好。(亮点),比如画出图形,基本上就是一句代码:
plot_contour(pos_history=optimizer.pos_history, mesher=m, designer=d, mark=(0,0))

pos_history_3d = m.compute_history_3d(optimizer.pos_history) # preprocessing
animation3d = plot_surface(pos_history=pos_history_3d,mesher=m, designer=d,mark=(0,0,0))

缺点

  • 算法少。只有基于PSO的各类问题的算法(本质上其实就只是一个算法)
  • 灵活度不够。
  • 起点低。发表的论文既没进入CCF推荐,也没进入SCI。同时虽然号称有许多研究论文用过,但仔细看级别都不高(基本都属于三无型)
7、SciPy(想不到吧)

项目地址:https://github.com/scipy/scipy

官网:https://www.scipy.org/

官方文档: https://docs.scipy.org/doc/

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

pip install scipy

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

优点:

  • 作为严谨的数值计算库,它的正确性和稳定性值得信赖(超过800个contributor,其中有不少是名校的教师、博士等)
  • 使用方便、简单
  • scipy也可以自定义优化算法

缺点:

  • 自然就是算法太少了
  • 虽然可以自定义,但麻烦程度几乎相当于完全自己造轮子
小结

经过一番调研,发现在Python的包库里面有质量的智能算法库还真是非常有限(除上述库以外,还有不少几个算法就成一个库的库,实在不敢恭维,简单玩玩就行了)。这里个人认为可能有以下几个方面:

  • 智能算法本身实现并不太难
  • 在当前的大环境下,大规模的问题下智能算法并不具有明显的优势
  • 专业做算法的通常仍然还是以Matlab为主(尤其数学类的)
  • 智能算法,尤其进化算法,本质上差异并不大

或许就是以上原因导致现在我们看不到特别惊艳的库,目前稍做得好一些的也就是在辅助功能上集成得较好而已。

当然,不管怎样,目前有这些库的话,对于不是完全专业从事相关算法研究的人员而言也完全够用了。就个人目前体验而言,综合来看最推荐的库为scikit-opt。当然终归到底,自己用着好就是最好。

Python主要智能优化算法库汇总相关推荐

  1. python算法库执行效率_Python智能优化算法库小汇总

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

  2. 【智能优化算法】蚁群算法ACO

    文章目录 [智能优化算法] 蚁群算法 1. 简介 1.1 简介 1.2 蚁群流程图 1.3 分类(可以不看) 2. 算法 2.1 参数讲解 2.2 计算公式 1) 转移概率公式 2) 启发式因子计算公 ...

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

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

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

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

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

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

  6. 智能优化算法之鸟群算法(BSA)的实现(Python附源码)

    文章目录 一.鸟群算法的实现思路 1.飞行行为 2.生产者行为 3.乞讨者行为 4.觅食行为 5.保持警戒行为 二.算法步骤 三.实例 一.鸟群算法的实现思路 鸟群算法(Bird Swarm Alog ...

  7. 智能优化算法之萤火虫算法(FA)的实现(Python附源码)

    一.萤火虫算法的实现思路 萤火虫算法(Firefly Algorithm,FA)是由Yang于2010年提出的一种群智能优化算法,在自然界中,萤火虫之间通过自身发光来吸引异性前来交配以及吸引猎物进行捕 ...

  8. 《Python智能优化算法:从原理到代码实现与应用》出版啦

    <Python智能优化算法:从原理到代码实现与应用> 各位亲爱的小伙伴,让各位久等了.我们撰写的<Python智能优化算法:从原理到代码实现与应用>由电子工业出版社出版了. 本 ...

  9. 智能优化算法(Ga,PSO,SA)高度模块化(可直接调用)python实现

    智能优化算法(Ga,PSO,SA)高度模块化(可直接调用)python实现 为啥做这篇文章 此篇文章基于本人数学建模实验课程的智能算法研究,老师要求用matlab实现一种优化算法分析,并且实现函数封装 ...

最新文章

  1. 魔与道的反复较量 反垃圾邮件技术
  2. 想成为一个数据科学家却不知道从何下手?这份路线图带你打开数据科学大门!...
  3. MongoDB 索引
  4. 自己动手写操作系统--个人实践
  5. 汇编中的LABEL详解
  6. WIN32 窗口枚举和操作
  7. linux系统创建windows启动盘
  8. ar软件测试工具_如何为用户测试制作快速的AR原型
  9. LeetCode 993. 二叉树的堂兄弟节点(层序遍历)
  10. java二次排序_使用java 实现二次排序
  11. OpenCV精进之路(二十):工具——图像标注小工具
  12. [渝粤教育] 西南科技大学 国际贸易理论与实务 在线考试复习资料2021版(1)
  13. MOSS提升权限方法
  14. ajax每次只加载3张图片,使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题(推荐)...
  15. PHP如何在两个大文件中找出相同的记录?
  16. 蓝牙定位技术工作原理分析
  17. 华为手机html文件是什么,如何备份华为手机文件
  18. styl类型文件css,styl样式文件问题:vue重复加载
  19. opengl——贴图
  20. zcmu-1957: 乌鸦坐飞机

热门文章

  1. 波士顿大学数学与计算机科学,2021战报 | 美国波士顿大学金融数学硕士录取
  2. LVS的DR模实战演示
  3. T-SQL编程基础-基本语法
  4. Halcon 标定与准确测量
  5. js获取元素提示信息
  6. PHP经验总结(一)序言
  7. JavaWeb学习笔记——JSTL核心标签库
  8. 隐藏头视图即隐藏UINavigationBar
  9. linux 列出特定时间内修改的文件
  10. 哲理故事与管理之道(3)-不要吝惜赞美