DEAP(Distributed Evolutionary Algorithms in Python)1.2.2文档(一)

DEAP文档

(不准确翻译,用于自学,如若有误请谅解。原链接:https://deap.readthedocs.io/en/master/)

DEAP是一个新的用于快速验证和测试新想法的演化计算框架。它致力于直接地构建算法和数据结构的简单化。它可以很好地应用在并行机制中,例如多任务处理和SCOOP(这是啥?)中。下面的文档将会展示许多关键概念以及构建你自己的演化算法时的一些特征。

第一步

    1、总览(从这里开始)

    2、安装

    3、如何进入端口?(porting guide)

基础教程

    Part1:创造类型

    Part2:操作与算法

    Part3:记录数据

    Part4:使用多进程

进阶教程

    遗传程序设计(GP)

    检查点?(checkpoint)

    收敛控制

    针对最优解的基准测试(BBOB)

    与numpy的继承关系

例子

库引用

亮点 & 贡献 & 相关

-----------------------------------------分割线------------------------------------

2018.09.02  第一步

1、总览

如果你已经习惯于其他的演化计算框架,你将会发现我们在DEAP中所做的事情是不同的。我们提供了创建适当类型的方法,而不是限制你使用预定义类型。我们使得你能够定制你的初始化选项而不是封闭它。我们希望你能够更明智地选择一些操作而不是使用预定义好的。我们允许你能够写一个适合于你自己需求的算法而不是仅仅提供许多封闭的算法。这个教程将通过说明DEAP的每一个程序组成来快速地展示DEAP的所有内容。

2、类型

首先要做的事情是思考适合你问题的类型。然后,不像之前的方法那样为你提供一些可用类型的列表,DEAP会为你构建适合你自己的。这个操作需要使用creator模块。创建一个合适的类型可能听起来很难,但是creator使得这个过程变得十分简单。事实上,这通常在单行操作上实现。例如:下面为一个最小值优化问题创建一个FitnessMin class,并且会从刚刚设置好的适应度列表中再创造一个individual class

C1P1   

这就是它了!更多的创建类可以在基础教程的Part1中找到。

3、初始化

一旦你创建了一个你需要为它们填充一些随机值的类型,DEAP可以通过简单的方法去完成它。Toolbox是一个包含了所有的初始化工具的容器,它可以做你需要它去完成任何事情。下面代码的目标就是去为个体和种群随机地生成浮点数类型的初始值。


C1P2

这个产生初始种群的生成功能,是通过个体自身不断进行随机生成完成的。这个功能和它的默认参数已经被放入了toolbox中。例如,调用toolbox.population()将会有可能立即创建一个种群,更多的初始化方法将会在基础教程的Part1中以及后面的例子中讲到。

4、操作

除了一些在tools模式下已经设定好的东西以外,操作与初始化类似。一旦你选择了一个最好的,简单的在toolbox中注册它们。除此之外你必须创造你的评估函数,下面展示具体的做法


C1P3

这些已经注册的函数会被toolbox重命名,使得遗传算法(广义)不会依赖于操作的名称。还要注意的是,适应度本身是可以迭代的,这就是为什么evaluate函数必须返回元组的原因。更多的细节在后面中会说到。

5、算法

现在一切都准备就绪了,我们可以自己来写一个算法了。它通常在一个main()中执行。为了实现这个目标我们将简单地写一个迭代算法


C1P4

使用在algorithm中四个已有的算法也是可以的,或者在这个模块中搭建一些其它区域的变化也是可行的。

6、总结

演化计算的步骤无非就是适应度函数设计+种群初始化+针对种群的操作(交叉变异等)+选择与复制(轮盘赌等),设计不同的适应度函数以及不同类型的种群可以解决不同的问题。

在这一节中,教程大致介绍了上述四个核心步骤的基本操作,并给出了一个寻找最大和的实例。

关键的步骤似乎均在toolbox中,无论是初始化还是遗传操作还是最后的选择,均可以使用toolbox对其进行register,一旦register一种方法,并搭建好计算框架便可以是一种新的模型,这可能就是前言中所说的“灵活性”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,422评论 25 708
  • 带头头出来吃午餐,写作业。 我昨天欠这人一顿萨莉亚,今天中午补上。等待送餐的过程中,我和头头分享自由书写,分享我写...
    一点小爱的黄山阅读 308评论 1 1
  • 读它吧! 做菜需要食谱,食材、佐料、火候、时间,有了方法和规则才能做出美味的食物,那么阅读呢,我们都会阅读,阅读如...
    豌豆妈育儿阅读 885评论 3 9
  • 今天上晚班,早上7点起床,洗被子,洗衣服,吃早餐,把事情做完了,才9:30,离上班还有那么长时间,好无聊啊,是不是...
    慧蘭阅读 215评论 0 1