游戏中的遗传算法

时间:2010-10-10 09:13:07

标签: genetic-algorithm

我必须做一个关于遗传算法的术语项目,我有想法调整第一人称射击游戏机器人的特征(即要使用的武器等)。例如,我将以字符串的形式表示特征,前10位代表选择武器1的概率,接下来10位代表选择武器2的概率等等。因此,我将得到最佳字符串,从而能够弄清楚什么应该是我应该使用的最佳武器。

我面临的一个明显问题是如何找到健身值。我的想法是,如果我想找到一个字符串的适应性,我强迫机器人使用相应的武器并对其进行游戏,并使用机器人的最终得分作为健身。问题是我需要玩一大堆游戏。

我可以做某种模拟吗?例如,我可以以某种方式得到一个函数f,我将在其中提供机器人的特征(例如:武器等),它会返回相应的适应值吗?开源FPS游戏提供这样的库吗?

另一种选择是进入游戏的源代码,然后继续模拟各种场景并注意每个场景中的得分。我宁愿没有进入游戏源的额外复杂性,因为这是一个短暂的(1个月)项目。

感谢。

4 个答案:

答案 0 :(得分:4)

我认为你的项目对于一个月的项目非常复杂。

这不是那么令人兴奋,但也许你可以看一下棋盘游戏或纸牌游戏的策略。这是一个更简单的情况,许多游戏可以轻松快速地模拟,允许您使用遗传算法找到一个良好的游戏策略。它将教你遗传算法的原理,而不需要你理解模拟第一人称射击游戏所需的大量源代码。

答案 1 :(得分:2)

我同意Mark Byers的观点,对于为期一个月的项目来说,这有点过于雄心勃勃。

无论如何,您可能需要查看NERO(神经演化机器人操作员),这是一款基于Ken Stanley算法NEAT(增强拓扑的神经演化)的游戏。

您可能还想查看Stanley的论文:

针对不同语言存在多种NEAT实现,因此这可能是一个开始。

答案 2 :(得分:0)

你的健身功能可以是给定机器人对待坐鸭对手多少DPS。例如。让机器人攻击玩家,不要反击。

您可以记住健身,因此不必重复测试重复的个体。


或者,你可以通过将2个人放在对方的队伍中,看看谁杀了谁来使最适者的生存成为文字。

因为从技术上讲,你不需要健身功能,只是一种比较个体的方法。

为了减少比较次数,可以通过锦标赛比较每一代的个人,例如

A 
  }-> A
B
        }-> C
C
  }-> C
D

表明前两个人是C,然后是A.

答案 3 :(得分:0)

您可以使用现有的机器人生成数据(如果有的话),如果可以的话。

或者,您可以使用Autohotkey(搜索谷歌)生成一系列按键和鼠标按键,并使机器人以某种方式自动播放。