优化
定义遗传算法
在讨论 如何优化 cBot 时,我们提到可以使用遗传算法方法来优化 cBot。 在本指南中,我们将详细解释它是什么以及它如何工作。
遗传算法方法基于自然选择理论。 该理论指出,只有最适合的个体才能存活下来进行后续繁殖。
在 cBot 优化中,每次优化通过被视为一个个体。 为了评估个体通过,遗传算法会为每次通过计算一个特定的适应度分数,并将该分数与所有其他通过进行比较。
为了使其工作,遗传算法需要一个初始种群。 为了生成初始种群,优化器将运行几次不同的通过,使用随机化的参数。 在创建初始种群后,算法将开始寻找最适合的优化通过的过程。 这个过程会一直持续,直到子代通过的适应度分数开始停滞并收敛。 此时,算法停止。
遗传算法阶段
任何遗传算法都有以下阶段。
graph TB
B([选择]) ==> C([交叉]);
C ==> D([突变]);
D ==> B; 这些阶段解释如下。
选择
在这个阶段,算法使用各自的适应度分数找到两个最适合的优化通过。
交叉
在找到两个最适合的优化通过后,算法使用它们来创建新的子代(或后代)通过,方法是使用两个父代通过的参数值组合。
示例
如果您的 cBot 有四个不同的优化参数,算法将从一个父代获取第一和第二个参数的子代通过值,从第二个父代获取第三和第四个参数。
变异
在这个阶段,算法通过随机修改一个或多个参数值来使子代通过发生变异。
变异阶段之后,优化器将运行一个新的子代优化通过。 随后,它将重复所有阶段,但仅当子代通过的适应度分数高于最后一次最佳优化通过时才会这样做。 这样的结果意味着还有改进的空间,表明应该继续优化。
否则,算法将增加其停滞计数器。 如果停滞计数器达到算法停滞期参数的值,优化过程将自动停止。
遗传算法参数
遗传算法在其生命周期中使用几个参数。 这些参数不能更改。
| 参数 | 定义 |
|---|---|
| 种群规模 | 种群的最大规模或每次优化迭代中进行的最大通过次数。 |
| 最大迭代次数 | 算法执行的最大优化迭代次数。 |
| 停滞期 | 停滞计数器的最大值。 如果达到这个值,算法将停止。 |
| 精英百分比 | 这个值用于从当前算法迭代中选择适应度分数最高的 X% 个体。 这些通过将存活到下一次迭代。 |
| 锦标赛规模百分比 | 这个值用于从一次迭代中选择 X% 的个体来寻找父代通过。 |
| 迁移百分比 | 这个值用于在每次新迭代或种群生成期间添加 X% 的随机创建的通过。 |
| 变异百分比 | 子代通过中要变异的参数的百分比。 |
| 变异概率百分比 | 要进行变异的子代通过的百分比。 不包括在这个百分比内的通过将不会经历变异阶段。 |