DEAP库文档教程三-----创建类型

本节将继续展示如何通过creator创建类型以及如何使用toolbox如何对复杂问题进行初始化。

Particle的初始化--粒子初始化

一个Particle是另一个特殊类型的个体,这是因为通常情况下它有一个速度,并且有一个最优的位置需要去记忆。这种类型个体的创建与通过list创建类似。现在,speed, best和速度限制将会加入到一个目标中。再一次的,一个初始化函数initParticle()函数也同时可以被注册并产生接受一些参数,包括Particle的个体、大小、领域和速度限制等。

对的,这种初始化方式,大家很容易联想到粒子群算法。

DEAP库文档教程三-----创建类型_第1张图片

A Funky One 

假设你的问题有着极其特别的需求,你同样可以轻松建立一个定制化的个体。下一个个体的创建是一个可以改变的整数和浮点数组成的list,使用initCycle()函数

穿插讲解一下种群初始化函数--initCycle()函数,即循环调用

这个函数,使用生成器函数调用函数容器,该生成器函数对应于seq_func中存在的函数的n倍调用。

Parameters:
  • container – The type to put in the data from func.
  • seq_func – A list of function objects to be called in order to fill the container.
  • n – Number of times to iterate through the list of functions.
Returns:

An instance of the container filled with data from the returned by the functions.

这是不是极大的简化了你初始化种群的方式,想想那些多种群的初始化,是不是就可以通过这里的方式来实现呢。

Population

一个种群的包是最常用的类型。它没有特殊的排序,尽管这通常会使用list来实现。由于包没有特殊的属性,它不需要任何特殊的类。种群的初始化是通过使用toolbox中的initRepeat()函数直接实现的。

这个很好理解,一般情况下,我们将个体重复多次,就直接成了种群了

toolbox.register('population', tools.initRepeat, list, toolbox.individual)

好的,其余有关创建类型的内容,请大家自行到官方文档去学习,今天就先到这里了。

你可能感兴趣的:(官方文档翻译,deap,教程)