制定你自己的策略 : 一个简单的EDA

如在 协方差矩阵自适应进化策略 示例中所示,eaGenerateUpdate() 算法适用于从种群中学习问题分布的算法。这里我们将介绍如何实现一个基于从采样种群中学习到的更新采样函数生成个体的策略。

分布估计

EDA 的基本概念是根据某种分布对 \(\lambda\) 个个体进行采样,并从 \(\mu\) 个最佳个体中估计问题分布。这个非常简单的概念遵循生成-更新逻辑。该策略包含一个随机数生成器,该生成器根据种群进行调整。以下 EDA 类正是这样做的。

一个普通的随机数生成器使用每个维度的特定均值(质心)和标准差(sigma)进行初始化。generate() 方法使用 numpy 在 dim 维度中生成 lambda_ 序列,然后使用这些序列初始化 ind_init 参数中给定类的个体。最后,update() 计算 mu 个最佳个体的平均值(中心),并估计每个个体所有属性的方差。一旦调用 update(),分布参数就会改变,并且可以生成新的人口。

所需对象

需要两个类,一个最小化适应度和一个将适应度与实际值结合的个体。此外,我们将使用 numpy.ndarray 作为我们个体的基类。

运算符

The eaGenerateUpdate() algorithm requires to set in a toolbox an evaluation function, an generation method and an update method. We will use the method of an initialized EDA. For the generate method, we set the class that the individuals are transferred in to our Individual class containing a fitness.

完整的 examples/eda/fctmin