我为一场比赛编写了一个游戏程序,它依赖于一些 16 个浮点“常量”。改变一个常数可以而且将会对演奏风格和成功率产生巨大的影响。
我还编写了一个简单的遗传算法来生成常数的最佳值。然而,该算法不会生成“最佳”常量。
可能的原因:
- 算法有错误(暂时排除这个!)
- 人口太少
- 变异率太高了
- 配偶率可能会更好
算法是这样的:
- 首先创建初始种群
- 分配每个成员的初始常数(基于我的偏差乘以 0.75 和 1.25 之间的随机因子)
- 每一代人口中的成员都配对进行游戏匹配
- 获胜者复制两次,如果平局则复制一次
- 如果 random() 小于突变率,则克隆会突变一个基因
- 突变将随机常数与 0.75 到 1.25 之间的随机因子相乘
- 以固定的时间间隔,取决于交配率,成员配对和基因混合
我目前的设置:
- 人口:40(低)
- 变异率 0.10 (10%)
- 交配率 0.20(每 5 代)
种群规模、变异率和交配率的更好值是多少?
欢迎猜测,不期望确切的值!另外,如果您对类似的遗传算法有见解,您愿意分享,请这样做。
PS:有问题的游戏比赛,如有兴趣:http ://ai-contest.com/