Python主要智能优化算法库汇总
最近⼏年简单浏览和对⽐了⼀些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据⾃⼰的需求和喜好进⾏选择。
⽂章⽬录
1、DEAP
安装:
pip install deap
优点:
起点⾼,发表在Journal of Machine Learning Research
⽤法灵活,所有模块均可⾃定义
缺点:
上⼿⿇烦⽐较⿇烦
⽐如它是这样设置参数然后完成⼀个简单的函数最⼤优化的:
import random
from deap import creator, base, tools, algorithms
toolbox = base.Toolbox()
def evalOneMax(individual):
return sum(individual),
population = toolbox.population(n=300)
NGEN=40
京东python入门教程
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 = fit
population = toolbox.select(offspring, k=len(population))
top10 = tools.selBest(population, k=10)
速度慢(许多⼈都反应有这个问题)
集成的算法少(当然也可以通过⾃定义来修改,但这样和完全⾃写没多⼤区别)
超过半年没有更新(最近更新也只是安装上的修改)
2、mealpy
安装:
pip install meaply
优点:
算法丰富,集成了现有的62种算法,⽬测应该还在继续更新添加
上⼿容易,代码简单,⽐如对标准函数库的函数进⾏优化:
pe_based.uni_modal import Functions
from mealpy.evolutionary_based.GA import BaseGA
t1 = Functions()
## Setting parameters
objective_func = t1._sum_squres__
problem_size =30
domain_range =[-15,15]
tan sin cos 30 45 60log =True
epoch =100
pop_size =50
pc =0.95
pm =0.025
md = BaseGA(objective_func, problem_size, domain_range, log, epoch, pop_size, pc, pm)
best_position, best_fit, list_loss = md._train__()
print(best_fit)
缺点:
整体设计似乎不太规范,⽂档解释不够javasdk下载
语⾔上似乎还存在⼀点⼩问题,英语应⽤不够规范(这可能也是作者没有发表很好的杂志的原因之⼀)
集成了多种算法但未列举参考⽂献,不⽅便论⽂引⽤
3、scikit-opt (国产良⼼)
安装:
pip install scikit-opt
优点:
上⼿容易,代码简单,尤其许多⽤法很像Matlab。⽐如官⽅⽂档就提供了⼀些例⼦:
中⽂⽂档,并且⽂档很全。。(作者⾃称是京东算法⼯程师,这个库也的确感觉得到⼀些情怀,⽅便实⽤的感觉)在使⽤⽅便的基础上,也提供了不少接⼝⽤于⾃⾏修改。尤其可以。
⼀些较好玩的特性:GPU加速、断点运⾏等。
缺点:
免费ppt模板下载⽬前似乎还没有集成⾜够多的⽅法。⼤类有3类,共7种算法。
算法本⾝的优化似乎还不⾜(未仔细测试)
4、Geatpy2(国产⽤⼼)
安装:
pip install geatpy
或者强制版本
pip install geatpy==2.5.1
优点:
上⼿容易,实现简单
⽂档完整,⽰例丰富(中⽂⽂档)
简单的c语言程序编程
功能齐全,除算法以外也封装了许多实⽤的功能,⽐如数据可视化等
缺点:
代码风格诡异,⽐如
英⽂⽤语不规范,变量命名相对随意,⽐如⼊门⽂档中,将⽬标函数翻译成"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)**s(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
安装:
pip install pygmo
注:安装还依赖如下环境
the , 2.13 +;the ,1.60+;;.
其它可能会⽤到的环境:
;;
优点:
功能丰富
⽀持并⾏和分布式计算(本⾝运⾏效率也很⾼)
⽤法灵活
感觉测试相对稳定(未仔细测试)
缺点:
上⼿相对⿇烦
依赖项较多,尤其要求对应C++版的软件环境
算法有限
注:这个库也吐槽⼀句,⽹传很厉害,但真没看出来除了看起来专业以外有何厉害之处。当然通常以C++为底层的东西有可能在⼤量级问题上的处理更加容易部署,但⼀般的⽤户也⽤不到。
6、pyswarmsxml编辑器安卓版下载中文版
安装:
pip install pyswarms
优点:
简单,易上⼿,基本上也属于⼏⾏代码⼊门型
可视化,尤其动态可视化做得好。(亮点),⽐如画出图形,基本上就是⼀句代码:
plot_contour(pos_history=optimizer.pos_history, mesher=m, designer=d, mark=(0,0))
pos_history_3d = mpute_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(想不到吧)
安装(当然其实当你装上Python的时候它就在了):
pip install scipy
特别说明: scipy作为⼀个相对严谨和‘传统’的数值计算库,基本上常⽤的数值计算⽅法都有涉及。当然数值计算型的库通常都不会把智能优化(启发式算法)作为重点。它集成了⼗分有限的⼏种优化算法:差分进化、模拟退⽕等。但它仍然有不少优点:
优点:
作为严谨的数值计算库,它的正确性和稳定性值得信赖(超过800个contributor,其中有不少是名校的教师、博⼠等)
使⽤⽅便、简单
scipy也可以⾃定义优化算法
缺点:
⾃然就是算法太少了
虽然可以⾃定义,但⿇烦程度⼏乎相当于完全⾃⼰造轮⼦
⼩结
经过⼀番调研,发现在Python的包库⾥⾯有质量的智能算法库还真是⾮常有限(除上述库以外,还有不少⼏个算法就成⼀个库的库,实在不敢恭维,简单玩玩就⾏了)。这⾥个⼈认为可能有以下⼏个⽅⾯:
智能算法本⾝实现并不太难
在当前的⼤环境下,⼤规模的问题下智能算法并不具有明显的优势
专业做算法的通常仍然还是以Matlab为主(尤其数学类的)
智能算法,尤其进化算法,本质上差异并不⼤
或许就是以上原因导致现在我们看不到特别惊艳的库,⽬前稍做得好⼀些的也就是在辅助功能上集成得较好⽽已。
当然,不管怎样,⽬前有这些库的话,对于不是完全专业从事相关算法研究的⼈员⽽⾔也完全够⽤了。就个⼈⽬前体验⽽⾔,综合来看最推荐的库为scikit-opt。当然终归到底,⾃⼰⽤着好就是最好。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。