遗传算法中的最优种群大小,变异率和配合率

Jan*_*sen 8 genetic-programming genetic-algorithm

我为比赛写了一个游戏程序,它依赖于大约16个浮点"常量".改变常数可以并将对比赛风格和成功率产生巨大影响.

我还编写了一个简单的遗传算法来生成常数的最优值.但是,该算法不会生成"最佳"常数.

可能的原因:

  • 该算法有错误(暂时将其排除在外!)
  • 人口很少
  • 变异率很高
  • 配合率可能会更好

算法如下:

  • 首先创建初始种群
  • 分配每个成员的初始常量(基于我的偏差乘以0.75和1.25之间的随机因子)
  • 对于每一代人群,成员都配对进行游戏比赛
  • 获胜者被克隆两次,如果平局被克隆一次
  • 如果random()小于突变率,则克隆会突变一个基因
  • 突变将随机常数乘以0.75和1.25之间的随机因子
  • 在固定的时间间隔,取决于配偶率,成员配对,基因混合

我目前的设置:

  • 人口:40(至低)
  • 突变率0.10(10%)
  • 交配率0.20(每5代)

人口规模,变异率和配合率的更好价值是什么?

我们欢迎猜测,不会有精确的价值!此外,如果您有类似遗传算法的见解,您想分享,请这样做.

PS:有问题的游戏比赛,如果有人有兴趣:http://ai-contest.com/

Joe*_*ein 2

你的突变大小让我惊讶地高。它还存在一些固有的偏差——当前值越大,突变就越大。

你可能会考虑

  1. 有一个(小得多!)较小的突变
  2. 给突变一个固定的范围
  3. 以不同的方式分布突变大小 - 例如,您可以使用平均值为 1 的正态分布。

RA Fisher 曾经将突变大小与显微镜聚焦进行了比较。如果你改变焦点,你可能会朝着正确的方向前进,也可能会朝着错误的方向前进。然而,如果你相当接近最佳值并且经常转动它 - 要么你会走错方向,要么你会超出目标。因此,更微妙的调整通常会更好!