创建者

The creator 是一个元工厂,允许创建满足进化算法需求的类。实际上,可以从任何可想象的类型构建新类,从 listsetdictPrimitiveTree 等等,提供了实现遗传算法、遗传编程、进化策略、粒子群优化器等多种算法的可能性。

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 键是要替换的类,而值是替换类。