陆军组成EA。需要帮助设计选择和变异操作员

时间:2015-09-25 21:28:00

标签: artificial-intelligence evolutionary-algorithm

我正在尝试为我创建的游戏构建(部分)AI。

问题描述

考虑到一定数量的可用单位,以及敌人的军队(人类玩家)的特定组成,使用进化算法从可用池中创建一个单位组合,以击败敌人的军队。

在这个游戏中有几种类型的单位,其中大多数以摇滚剪刀方式相互竞争,意味着单位类型A将击败B,B将击败C和C将击败A.最昂贵的单位并不总是最好的。如果敌人的军队多样化,我们也需要多样化。

单位成本是对其功率的粗略估计。 1型A成本100的单位约等于10个B型单位,每个成本10。但是,这些单位的 rock-paper-scissors 特征略微偏移。

约束

  1. 保持军队尽可能小。较大的军队需要更多的维护资源来进行战斗。
  2. 保持尽可能小的损失,不应超过战斗的战利品(胜利后的战利品),至少在正常的困难中。
  3. EA Components

    1. 初始化:从可用单元池中随机创建N个合成。
    2. 健身:技术上最复杂,但已经完成:只需在我自己的游戏空间内进行模拟。
    3. 操作员:使用哪些遗传算子来演化每个军队的组成,以便进行改进。到目前为止,我还没有取得多大成功。
    4. 我认为问题的关键在于遗传算子。我尝试了不同的方法,但似乎最好都陷入局部最优或者看起来完全随机(每次针对同一个对手重新运行算法似乎会产生截然不同的结果)。

      我尝试了以下运算符,结果很差甚至没有结果:

      • 对于每个单位,概率 p ,将其类型从A更改为B
      • 对于每个单位,概率 p ,将其替换为B类单位,以便当前成本保持不变。
      • 对于每个单位,概率为 p ,将其删除,无需替换
      • 对于每个构图,概率为 p ,向其中添加1个随机类型单位

      所以,我的问题是,鉴于这个问题描述,什么是体面的变异和组合运算符?我觉得我到目前为止使用的运算符都过于专注于本地环境(添加1,更改1,删除1)并且没有充分利用EA的潜力。

1 个答案:

答案 0 :(得分:0)

我会尝试在不同的小队中分离军队,对于每个单位类型的开头。根据每个小队的大小,你可以将它分成几个较小的小队。这将使您可以选择复制小队并与其他基因组进行交叉以获得更多变化的结果。

如果这没有帮助,我会尝试将小队与其他类型混合,但仍然保持小。他们会怀疑你已经存在的相同突变。

我有类似的问题,我的突变有时太高而其他时间太小,导致你遇到的相同(太随机与局部最优)问题。添加交叉机制和降低突变率同时为我消除了它们。

这是一个3周大的问题,你在同一时间取得了哪些成功?