我正在尝试为我创建的游戏构建(部分)AI。
问题描述
考虑到一定数量的可用单位,以及敌人的军队(人类玩家)的特定组成,使用进化算法从可用池中创建一个单位组合,以击败敌人的军队。
在这个游戏中有几种类型的单位,其中大多数以摇滚剪刀方式相互竞争,意味着单位类型A将击败B,B将击败C和C将击败A.最昂贵的单位并不总是最好的。如果敌人的军队多样化,我们也需要多样化。
单位成本是对其功率的粗略估计。 1型A成本100的单位约等于10个B型单位,每个成本10。但是,这些单位的 rock-paper-scissors 特征略微偏移。
约束
EA Components
我认为问题的关键在于遗传算子。我尝试了不同的方法,但似乎最好都陷入局部最优或者看起来完全随机(每次针对同一个对手重新运行算法似乎会产生截然不同的结果)。
我尝试了以下运算符,结果很差甚至没有结果:
所以,我的问题是,鉴于这个问题描述,什么是体面的变异和组合运算符?我觉得我到目前为止使用的运算符都过于专注于本地环境(添加1,更改1,删除1)并且没有充分利用EA的潜力。
答案 0 :(得分:0)
我会尝试在不同的小队中分离军队,对于每个单位类型的开头。根据每个小队的大小,你可以将它分成几个较小的小队。这将使您可以选择复制小队并与其他基因组进行交叉以获得更多变化的结果。
如果这没有帮助,我会尝试将小队与其他类型混合,但仍然保持小。他们会怀疑你已经存在的相同突变。
我有类似的问题,我的突变有时太高而其他时间太小,导致你遇到的相同(太随机与局部最优)问题。添加交叉机制和降低突变率同时为我消除了它们。
这是一个3周大的问题,你在同一时间取得了哪些成功?