【发布时间】:2017-12-18 04:35:58
【问题描述】:
这是对这个问题中给出的答案的回应: How to create a good evaluation function for a game?,尤其是@David(这是第一个答案)。
背景:我正在使用遗传算法来优化游戏代理中的超参数,该代理使用 minimax / alpha beta 剪枝(迭代加深)。特别是,我想使用遗传算法优化启发式(评估)函数参数。我使用的评价函数是:
f(w) = w * num_my_moves - (1-w) * num_opponent_moves
唯一要优化的参数是 [0,1] 中的 w。
我是这样编写遗传算法的:
- 创建一个由 100 个代理组成的随机群体
- 让他们随机玩 1000 场比赛并替换。
- 让父母成为表现最好的代理人,并混入一些表现较差的代理人,以实现遗传多样性。
- 随机繁殖一些父母来创造孩子。 * 育种过程:我们将孩子定义为父母体重的平均值。 即 childWeight = 0.5(father.w+ mother.w)
- 新种群由父母和新创建的孩子组成。
- 随机变异 1% 的人口如下:newWeight = agent.x + random.uniform(-0.01,0.01) 并考虑微不足道的边界情况(即适当地小于零和大于一)。
- 进化 10 次(即为新种群重复)
我的问题:请评估上面的粗体点。特别是,有没有人有更好的繁殖方式(而不是简单地平均父权重),有没有人有更好的变异方式,而不是仅仅添加 random.uniform(-0.01,0.01)?
【问题讨论】:
标签: optimization artificial-intelligence genetic-algorithm depth-first-search game-theory