【问题标题】:Army Composition EA. Need help designing Selection and Mutation Operator陆军组成 EA。需要帮助设计选择和变异算子
【发布时间】:2015-09-25 21:27:59
【问题描述】:

我正在尝试为我创建的游戏构建(部分)人工智能。

问题描述

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

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

单位成本是对其功率的粗略估计。 1 个 A 类单位成本 100 大约等于 10 个 B 类单位,每个单位成本 10。然而,这略微被单位的石头剪刀布特性所抵消。

约束

  1. 尽量减少军队。更大的军队需要更多的维持资源来进行战斗。
  2. 尽量减少损失,永远不要超过战斗的战利品(胜利后的战利品),至少对于正常的困难。

EA 组件

  1. 初始化:从可用单元池中随机创建 N 个组合。
  2. 健身:技术上最复杂,但已经完成:只需在我自己的游戏空间内进行模拟。
  3. 操作员:使用哪些基因操作员来进化每个军队的组成以可能得到改进。到目前为止,我在这方面还没有取得太大的成功。

我相信,问题的关键在于遗传算子。我尝试了不同的方法,但似乎所有方法充其量都陷入局部最优或完全随机(针对同一对手的算法每次重新运行似乎会产生截然不同的结果)。

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

  • 对于每个单元,以 p 的概率将其类型从 A 更改为 B
  • 对于每个单位,以 p 的概率将其替换为尽可能多的 B 类单位,因此当前成本保持不变。
  • 对于每个单元,以 p 的概率将其删除而不替换
  • 对于每个组合,以概率 p 向其中添加 1 个随机类型的单元

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

【问题讨论】:

  • 你是如何准确计算适应度的?
  • 我只是模拟战斗并比较结果。我的损失与敌人(玩家)的战利品。净总数可以是正数或负数。维护费用被添加到损失中,以集中为针对特定战斗量身定制的更小更具体的军队。否则,在压倒性胜利中由所有可能的单位组成的最大军队永远是最好的。

标签: artificial-intelligence evolutionary-algorithm


【解决方案1】:

我会尝试将军队分成不同的小队,一开始就针对每种单位类型。根据每个小队的规模,您可以将其分成几个较小的小队。这将使您可以选择复制小队并与其他基因组进行交叉以获得更多样化的结果。

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

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

这是一个 3 周前的问题,在此期间你有任何成功吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    相关资源
    最近更新 更多