本节将继续展示如何通过creator创建类型以及如何使用toolbox如何对复杂问题进行初始化。
Particle的初始化--粒子初始化
一个Particle是另一个特殊类型的个体,这是因为通常情况下它有一个速度,并且有一个最优的位置需要去记忆。这种类型个体的创建与通过list创建类似。现在,speed, best和速度限制将会加入到一个目标中。再一次的,一个初始化函数initParticle()函数也同时可以被注册并产生接受一些参数,包括Particle的个体、大小、领域和速度限制等。
对的,这种初始化方式,大家很容易联想到粒子群算法。
A Funky One
假设你的问题有着极其特别的需求,你同样可以轻松建立一个定制化的个体。下一个个体的创建是一个可以改变的整数和浮点数组成的list,使用initCycle()函数
穿插讲解一下种群初始化函数--initCycle()函数,即循环调用
这个函数,使用生成器函数调用函数容器,该生成器函数对应于seq_func中存在的函数的n倍调用。
Parameters: |
|
---|---|
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)
好的,其余有关创建类型的内容,请大家自行到官方文档去学习,今天就先到这里了。