Python主要智能优化算法库汇总
最近几年简单浏览和对比了一些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择。
文章目录
- 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主要智能优化算法库汇总相关推荐
- python算法库执行效率_Python智能优化算法库小汇总
最近查了一圈python的智能优化算法库,发现在python里面这样的库相对一些传统的语言还真是不太多(比如Matlab).总的看起来似乎起步都还比较晚(个人认为有可能是因为智能算法本身相对复杂并且过 ...
- 【智能优化算法】蚁群算法ACO
文章目录 [智能优化算法] 蚁群算法 1. 简介 1.1 简介 1.2 蚁群流程图 1.3 分类(可以不看) 2. 算法 2.1 参数讲解 2.2 计算公式 1) 转移概率公式 2) 启发式因子计算公 ...
- 智能优化算法之遗传算法(GA)的实现(基于二进制编码,Python附源码)
文章目录 一.遗传算法的实现思路 二.基于二进制编码方式的遗传算法的实现 1.库的导入 2.目标函数 3.个体编码函数 4.个体解码函数 5.选择函数 6.交叉函数 7.变异函数 8.算法主流程 一. ...
- java寻优算法_模拟退火算法SA原理及python、java、php、c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径...
模拟退火算法SA原理及python.java.php.c++语言代码实现TSP旅行商问题,智能优化算法,随机寻优算法,全局最短路径 模拟退火算法(Simulated Annealing,SA)最早的思 ...
- 智能优化算法之灰狼优化算法(GWO)的实现(Python附源码)
文章目录 一.灰狼优化算法的实现思路 1.社会等级结构分级 2.包围猎物 3.攻击猎物 4.搜索猎物 二.算法步骤 三.实例 一.灰狼优化算法的实现思路 灰狼优化算法(Grey Wolf Optimi ...
- 智能优化算法之鸟群算法(BSA)的实现(Python附源码)
文章目录 一.鸟群算法的实现思路 1.飞行行为 2.生产者行为 3.乞讨者行为 4.觅食行为 5.保持警戒行为 二.算法步骤 三.实例 一.鸟群算法的实现思路 鸟群算法(Bird Swarm Alog ...
- 智能优化算法之萤火虫算法(FA)的实现(Python附源码)
一.萤火虫算法的实现思路 萤火虫算法(Firefly Algorithm,FA)是由Yang于2010年提出的一种群智能优化算法,在自然界中,萤火虫之间通过自身发光来吸引异性前来交配以及吸引猎物进行捕 ...
- 《Python智能优化算法:从原理到代码实现与应用》出版啦
<Python智能优化算法:从原理到代码实现与应用> 各位亲爱的小伙伴,让各位久等了.我们撰写的<Python智能优化算法:从原理到代码实现与应用>由电子工业出版社出版了. 本 ...
- 智能优化算法(Ga,PSO,SA)高度模块化(可直接调用)python实现
智能优化算法(Ga,PSO,SA)高度模块化(可直接调用)python实现 为啥做这篇文章 此篇文章基于本人数学建模实验课程的智能算法研究,老师要求用matlab实现一种优化算法分析,并且实现函数封装 ...
最新文章
- 魔与道的反复较量 反垃圾邮件技术
- 想成为一个数据科学家却不知道从何下手?这份路线图带你打开数据科学大门!...
- MongoDB 索引
- 自己动手写操作系统--个人实践
- 汇编中的LABEL详解
- WIN32 窗口枚举和操作
- linux系统创建windows启动盘
- ar软件测试工具_如何为用户测试制作快速的AR原型
- LeetCode 993. 二叉树的堂兄弟节点(层序遍历)
- java二次排序_使用java 实现二次排序
- OpenCV精进之路(二十):工具——图像标注小工具
- [渝粤教育] 西南科技大学 国际贸易理论与实务 在线考试复习资料2021版(1)
- MOSS提升权限方法
- ajax每次只加载3张图片,使用加载图片解决在Ajax数据加载中页面出现短暂空白的问题(推荐)...
- PHP如何在两个大文件中找出相同的记录?
- 蓝牙定位技术工作原理分析
- 华为手机html文件是什么,如何备份华为手机文件
- styl类型文件css,styl样式文件问题:vue重复加载
- opengl——贴图
- zcmu-1957: 乌鸦坐飞机