DEAP
DEAP是一个新颖的进化计算框架,用于快速原型设计和测试想法。它旨在使算法明确化和数据结构透明化。它与多进程和SCOOP等并行化机制完美兼容。
DEAP包含以下特性:
- 使用任何可想象的表示方式的遗传算法
- 列表、数组、集合、字典、树、Numpy数组等
- 使用前缀树的遗传编程
- 松散类型、强类型
- 自动定义函数
- 进化策略(包括CMA-ES)
- 多目标优化(NSGA-II、NSGA-III、SPEA2、MO-CMA-ES)
- 多种群的协同进化(合作和竞争)
- 评估的并行化(以及更多)
- 存储种群中最优个体的名人堂
- 定期对系统进行快照的检查点
- 包含最常见测试函数的基准模块
- 进化的谱系(与NetworkX兼容)
- 替代算法示例:粒子群优化、差分进化、分布估计算法
下载
根据Python社区接受的PEP 438,我们已将DEAP的源代码发布到PyPI。
你可以在以下地址找到最新版本:https://pypi.python.org/pypi/deap/。
文档
DEAP文档请参见DEAP用户指南。
要获取最新文档,请切换到doc
子文件夹并输入make html
,文档将位于_build/html
下。你需要安装Sphinx来构建文档。
笔记本
另外请查看我们新的笔记本示例。使用Jupyter笔记本,你可以单独导航和执行每个代码块,了解每行代码的作用。你可以使用页面底部的笔记本查看器链接在线查看笔记本,或下载笔记本,导航到下载目录并运行
jupyter notebook
安装
我们建议你使用easy_install或pip在系统上安装DEAP。其他安装方法如apt-get、yum等通常提供的是过时版本。
pip install deap
可以使用以下命令安装最新版本
pip install git+https://github.com/DEAP/deap@master
如果你想从源代码构建,请下载或克隆仓库并输入
python setup.py install
构建状态
DEAP的构建状态可在Travis-CI上查看:https://travis-ci.org/DEAP/deap。
要求
DEAP的最基本功能需要Python2.6。为了结合工具箱和多进程模块,需要Python2.7来支持pickle部分函数。CMA-ES需要Numpy,我们推荐使用matplotlib来可视化结果,因为它与DEAP的API完全兼容。
自0.8版本起,DEAP可以直接与Python 3兼容。安装过程会自动使用2to3将源代码转换为Python 3,但这需要setuptools<=58
。建议使用pip install setuptools==57.5.0
来解决此问题。
示例
以下代码简要展示了使用DEAP实现Onemax问题优化的遗传算法有多简单。更多示例请参见这里。
import random
from deap import creator, base, tools, algorithms
creator.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 = fit
population = toolbox.select(offspring, k=len(population))
top10 = tools.selBest(population, k=10)
如何引用DEAP
使用DEAP生成结果的科学论文作者鼓励引用以下论文。
@article{DEAP_JMLR2012,
author = " F\'elix-Antoine Fortin and Fran\c{c}ois-Michel {De Rainville} and Marc-Andr\'e Gardner and Marc Parizeau and Christian Gagn\'e ",
title = { {DEAP}: Evolutionary Algorithms Made Easy },
pages = { 2171--2175 },
volume = { 13 },
month = { jul },
year = { 2012 },
journal = { Journal of Machine Learning Research }
}
关于DEAP的出版物
- François-Michel De Rainville, Félix-Antoine Fortin, Marc-André Gardner, Marc Parizeau and Christian Gagné, "DEAP -- Enabling Nimbler Evolutions", SIGEVOlution, vol. 6, no 2, pp. 17-26, February 2014. 论文
- Félix-Antoine Fortin, François-Michel De Rainville, Marc-André Gardner, Marc Parizeau and Christian Gagné, "DEAP: Evolutionary Algorithms Made Easy", Journal of Machine Learning Research, vol. 13, pp. 2171-2175, jul 2012. 论文
- François-Michel De Rainville, Félix-Antoine Fortin, Marc-André Gardner, Marc Parizeau and Christian Gagné, "DEAP: A Python Framework for Evolutionary Algorithms", in !EvoSoft Workshop, Companion proc. of the Genetic and Evolutionary Computation Conference (GECCO 2012), July 07-11 2012. 论文
使用DEAP的项目
- Ribaric, T.和Houghten, S. (2017年6月)。用于改进椭圆曲线密码系统密码分析的遗传编程。2017年IEEE进化计算大会(CEC)论文集(第419-426页)。IEEE出版。
- Ellefsen, Kai Olav、Herman Augusto Lepikson和Jan C. Albiez。"多目标覆盖路径规划:实现复杂现实世界结构的自动检查"。应用软计算61 (2017): 264-282。
- S. Chardon, B. Brangeon, E. Bozonnet, C. Inard (2016),单户住宅的建造成本和能源性能:从集成设计到自动优化,建筑自动化,第70卷,第1-13页。
- B. Brangeon, E. Bozonnet, C. Inard (2016),集体住宅的综合改造和真实产品数据库的优化过程,建筑模拟优化,第531-538页,纽卡斯尔,英国。
- Randal S. Olson, Ryan J. Urbanowicz, Peter C. Andrews, Nicole A. Lavender, La Creis Kidd和Jason H. Moore (2016)。通过树形管道优化实现生物医学数据科学自动化。进化计算应用,第123-137页。
- Randal S. Olson, Nathan Bartley, Ryan J. Urbanowicz和Jason H. Moore (2016)。评估用于自动化数据科学的树形管道优化工具。GECCO 2016会议论文集,第485-492页。
- Van Geit W, Gevaert M, Chindemi G, Rössert C, Courcol J, Muller EB, Schürmann F, Segev I和Markram H (2016)。BluePyOpt:利用开源软件和云基础设施优化神经科学中的模型参数。神经信息学前沿 10:17. doi: 10.3389/fninf.2016.00017 https://github.com/BlueBrain/BluePyOpt
- Lara-Cabrera, R., Cotta, C.和Fernández-Leiva, A.J. (2014)。RTS游戏中美学地图进化的几何vs拓扑测量,娱乐计算。
- Macret, M.和Pasquier, P. (2013)。使用多目标遗传算法自动调谐OP-1合成器。第10届声音与音乐计算会议(SMC)论文集。(第614-621页)。
- Fortin, F. A., Grenier, S.和Parizeau, M. (2013年7月)。推广改进的非支配排序运行时复杂度算法。第十五届遗传与进化计算年会论文集(第615-622页)。ACM出版。
- Fortin, F. A.和Parizeau, M. (2013年7月)。重新审视NSGA-II的拥挤距离计算。第十五届遗传与进化计算年会论文集(第623-630页)。ACM出版。
- Marc-André Gardner, Christian Gagné和Marc Parizeau。基于隐马尔可夫模型的组合优化估计分布算法。遗传与进化计算会议(GECCO 2013)计算机论文集,2013年7月。
- J. T. Zhai, M. A. Bamakhrama和T. Stefanov。"在硬实时系统中映射流应用程序时利用刚好足够的并行性"。设计自动化会议(DAC 2013),2013年。
- V. Akbarzadeh, C. Gagné, M. Parizeau, M. Argany, M. A Mostafavi,"基于视线覆盖的传感器布置优化概率感知模型",已被IEEE仪器仪表测量汇刊接受,2012年。
- M. Reif, F. Shafait和A. Dengel。"元学习数据集生成"。德国人工智能会议(KI'12)论文集。2012年。
- M. T. Ribeiro, A. Lacerda, A. Veloso和N. Ziviani。"多目标推荐系统的帕累托高效混合"。推荐系统会议(RecSys'12)论文集。2012年。
- M. Pérez-Ortiz, A. Arauzo-Azofra, C. Hervás-Martínez, L. García-Hernández和L. Salas-Morera。"一个学习用户偏好的多目标设施布局优化系统"。工业和环境应用软计算模型国际会议(SOCO'12)论文集。2012年。
- Lévesque, J.C., Durand, A., Gagné, C.和Sabourin, R.,ROC空间中生成分类器集成的多目标进化优化,遗传与进化计算会议(GECCO 2012),2012年。
- Marc-André Gardner, Christian Gagné和Marc Parizeau,"使用基于直方图的接受-拒绝方法控制遗传编程中的膨胀",遗传与进化计算会议(GECCO 2011)论文集,2011年。
- Vahab Akbarzadeh, Albert Ko, Christian Gagné和Marc Parizeau,"使用CMA-ES的地形感知传感器部署优化",自然并行问题求解(PPSN 2010)论文集,Springer出版,2010年。
- DEAP在TPOT中使用,这是一个使用遗传编程优化机器学习管道的开源工具。
- DEAP也在ROS中作为优化包使用 http://www.ros.org/wiki/deap。
- DEAP是PyXRD的可选依赖项,PyXRD是为无序层状结构X射线衍射分析开发的矩阵算法的Python实现。
- DEAP在glyph中使用,这是一个用于符号回归的库,应用于MLC。
- DEAP在Sklearn-genetic-opt中使用,这是一个使用进化编程来微调机器学习超参数的开源工具。
如果你想在这里列出你的项目,请发送给我们一个链接和简短描述,我们很乐意添加。