基础¶
The base
模块提供了构建进化算法的基本结构。它包含了 Toolbox
,用于存储进化操作符,以及一个虚拟的 Fitness
类,作为任何个体适应度成员的基类。
工具箱¶
- class deap.base.Toolbox[源代码]¶
一个包含进化操作符的工具箱。首先,工具箱包含一个
clone()
方法,该方法复制传递给它的任何元素,此方法默认使用copy.deepcopy()
函数。以及一个map()
方法,该方法将作为第一个参数传递的函数应用于作为后续参数传递的可迭代对象的每一项,此方法默认使用map()
函数。您可以使用register()
方法将任何其他函数填充到工具箱中。工具箱的具体用法在 创建类型 教程中展示了初始化过程,在 运算符和算法 教程中展示了工具容器的使用。
- register(alias, method[, argument[, ...]])[源代码]¶
在工具箱中以 alias 名称注册一个 函数。您可以提供默认参数,这些参数将在调用注册函数时自动传递。固定的参数可以在函数调用时被覆盖。
- 参数:
alias – 操作符在工具箱中将使用的名称。如果别名已经存在,它将覆盖已经存在的操作符。
function – 别名所引用的函数。
argument – 一个或多个参数(以及关键字参数),在调用时自动传递给注册的函数,可选。
以下代码块是工具箱使用方法的一个示例。:
>>> def func(a, b, c=3): ... print a, b, c ... >>> tools = Toolbox() >>> tools.register("myFunc", func, 2, c=4) >>> tools.myFunc(3) 2 3 4
注册的函数将被赋予属性
__name__
设置为别名,并且__doc__
设置为原始函数的文档。如果存在,__dict__
属性也将用原始函数的实例字典进行更新。
健身¶
- class deap.base.Fitness([values])[源代码]¶
适应度是衡量解决方案质量的一个指标。如果提供了 values 作为元组,适应度将使用这些值进行初始化,否则它将是空的(或无效的)。
- 参数:
values – 适应度的初始值作为元组,可选。
适应度可以使用
>
,<
,>=
,<=
,==
,!=
进行比较。这些运算符的比较是按字典顺序进行的。最大化与最小化通过weights
和适应度values
之间的乘法来处理。如果适应度在额外元素之前相等,则比较可以在不同大小的适应度之间进行,较长的适应度将被视为优于较短的适应度。在 创建类型 教程中创建了不同类型的适应性。
备注
在比较被**最小化**的适应度值时,
a > b
将返回True
如果 a 比 b 更小。- dominates(other, obj=slice(None, None, None))[源代码]¶
如果 self 的每个目标都不比 other 的相应目标严格差,并且至少有一个目标严格更好,则返回 true。
- 参数:
obj – 切片指示在哪些目标上进行支配测试。默认值是 slice(None),表示所有目标。
- property valid¶
评估一个适应度是否有效。
- property values¶
适应度值。直接使用
individual.fitness.values = values
来设置适应度,使用del individual.fitness.values
来清除(使无效)适应度。未加权的适应度可以通过individual.fitness.values
直接访问。