创建者¶
The creator
是一个元工厂,允许创建满足进化算法需求的类。实际上,可以从任何可想象的类型构建新类,从 list
到 set
、dict
、PrimitiveTree
等等,提供了实现遗传算法、遗传编程、进化策略、粒子群优化器等多种算法的可能性。
- deap.creator.create(name, base[, attribute[, ...]])[源代码]¶
在
creator
模块中创建一个名为 name 的新类,该类继承自 base。新类可以通过传递给函数 create 的后续关键字参数来定义属性。如果参数是一个类(没有括号),则在初始化新对象的实例时调用 __init__ 函数,并将返回的实例作为类的实例的属性添加。否则,如果参数不是一个类(例如int
),它将作为类的“静态”属性添加。- 参数:
name – 要创建的类的名称。
base – 一个可供继承的基类。
attribute – 在实例化此类时添加的一个或多个属性,可选。
以下用于创建一个继承自标准
list
的类Foo
,并具有一个属性bar
为空字典,以及一个静态属性spam
初始化为 1。:create("Foo", list, bar=dict, spam=1)
上面的这一行与在
creator
模块中定义如下内容完全相同。class Foo(list): spam = 1 def __init__(self): self.bar = dict()
The 创建类型 tutorial gives more examples of the creator usage.
警告
如果你继承自
numpy.ndarray
,请参阅 tutorials/advanced/numpy 教程和 One Max 问题:使用 Numpy 示例。
- deap.creator.class_replacers = {<class 'numpy.ndarray'>: <class 'deap.creator._numpy_array'>, <class 'array.array'>: <class 'deap.creator._array'>}¶
Python 标准库以及第三方库中的一些类可能与 DEAP 中使用的逻辑部分不兼容。为了缓解这个问题,方法
create()
使用字典 class_replacers 来识别提供的基类类型是否存在问题,如果是,则新类继承自替换类而不是原始基类。class_replacers 键是要替换的类,而值是替换类。