神经网络对连续蛇游戏的帮助

vla*_*048 6 artificial-intelligence neural-network genetic-algorithm

我正在尝试为"连续蛇"游戏实现AI.它与普通的蛇游戏非常不同,至少就人工智能而言.基本上,蛇的驾驶有点像汽车,而且两个玩家中的第一个撞到了他的小道,或者另一个小跑失去了比赛.屏幕也围绕着它的边界.

如果您查看我当前进度的视频,您可以更好地理解它:https: //www.youtube.com/watch?v = i9qU-r4COQ8

这不是太糟糕,但它仍然无法击败我(我是黄色的).获胜的人工智能理想情况下需要展示这些行为:

  1. 避免墙壁
  2. 注意它可以"缩短我"的时刻(当我在我旁边时).
  3. 避免"缩短".
  4. 了解当前2d空间的拓扑结构,试图将我封闭在更小的空间中/保护自己更大的空间.

我目前的方法使用NEAT算法(http://www.cs.ucf.edu/~kstanley/neat.html).它是一种遗传算法,可以在几代人之间发展神经网络.它学会了如何在某种程度上做1,2和3(但不是很好),但不知道4.

对于输入,我正在使用:

  • 相对于我们的对手角度
  • 对手与我们的距离
  • 对手前往相对于我们
  • 通过一定量的树搜索在某些方向探测的智能光线(见视频)

我现在有点卡住了,想知道:

  • 我应该研究什么类型的算法?Recurrent/RealTime/Continous/Unsupervised神经网络,......关于这些以及它们如何应用于我的问题的解释会很棒.
  • 我应该研究哪些特定的算法?
  • 我可以使用哪些其他输入?人类玩家可以看到游戏中的所有像素,这比我简单的输入信息要多得多.但我不认为将我的例子中的200x200像素输入我的NN就可以了.也许如果我将它们离散化并使它们相对于AI位置/标题......听起来很棘手.

如果有人想看到它(C#),我很乐意让我的代码可用.

谢谢!

小智 -1

首先,如果你想要好的结果,请使用深度卷积 q 学习,它将图像作为输入。为了进一步改进,您可以输入三到四个连续图像的堆栈,这将有助于确定方向。我认为您不需要使用 lstm 来解决这个问题,堆栈多个帧就可以了。为了进一步改进,您可以将相同的代码转换为决斗网络。

如果您喜欢快速结果较少计算,您可以使用增强随机搜索,但如果不小心训练,它可能会进入局部最大值。