移植指南

DEAP 开发的高速度和我们拒绝受制于向后兼容性有时会给我们的用户带来一些轻微的困扰。这份简明的指南应该能帮助你将代码从最新版本减去 0.1 迁移到当前版本。

一般

  1. 来自 algorithms 模块的算法现在返回一个包含两个元素的元组:种群和一个 Logbook

  2. 将每个对 DTM 的调用替换为对 SCOOP 的调用。

  3. 数据的统计和记录由两个不同的对象完成:StatisticsLogbook。阅读关于 记录统计数据 的教程。

  4. EvolutionLogger 替换为 Logbook

  5. tools.mean()tools.var()tools.std()tools.median() 的使用替换为它们的 Numpy 等效函数。

  6. 如果适应度有多个目标,在注册统计函数时添加关键字参数 axis=0

遗传算法 (GA)

  1. 将每个调用 cxTwoPoints() 函数的地方替换为调用 cxTwoPoint() 函数。

  2. 移除任何对 cTools 的导入。如果你需要一个更快的非支配排序实现,使用 sortLogNondominated()

  3. 当继承自 Numpy 时,您必须手动复制切片并用 numpy 比较器比较个体。请参阅 继承自 Numpy 教程。

遗传编程 (GP)

  1. 在每次调用 addEphemeralConstant() 时,将 name 指定为第一个参数。

  2. 将每个对 lambdify()evaluate() 的调用替换为对 compile() 的调用。

  3. 在创建原始树类时,从每个 create() 调用中移除 pset 属性。

  4. 在工具箱中,将原语集注册为以下变异操作符的 pset 参数:mutUniform()mutNodeReplacement()mutInsert()

  5. 将每个对函数 genRamped() 的调用替换为对函数 genHalfAndHalf() 的调用。

  6. 将每个对 stringify() 的调用替换为对 str() 的调用,或者完全移除该调用。

  7. 将每个对 lambdifyADF() 的调用替换为对 compileADF() 的调用。

  8. 将装饰器 staticDepthLimit()staticSizeLimit() 替换为 staticLimit()。要指定深度、大小或任何其他属性的限制,现在需要指定一个 key 函数。更多信息请参阅 staticLimit() 文档。

强类型遗传编程 (STGP)

  1. PrimitiveSetTyped 方法现在要求类型参数必须定义为类而不是字符串,例如 float 而不是 "float"

进化策略 (ES)

  1. 将每个调用 cxESTwoPoints() 函数的地方替换为调用 cxESTwoPoint()

仍然有问题?

我们忽略了某些东西,你的代码仍然无法工作?没问题,请在 deap 用户列表 http://groups.google.com/group/deap-users 上联系我们,我们会立即帮你解决问题。