0

我有一个学校项目,要为 2D 赛车游戏构建一个 AI,它将与其他几个 AI 竞争。

我们获得了一张黑白的赛道位图图像,我们可以在收到地图后为我们的汽车选择基本统计数据(操控、加速度、最大速度和刹车)。AI 连接到游戏的服务器,并每秒向其提供数次当前加速和转向的数字。顺便说一句,我选择的语言是 C++。问题是

  1. 最好的策略或算法是什么(因为我想尝试并获胜)?我目前有一些在网上找到的想法和我自己的一两个想法,但在我开始编写代码之前,我想我的观点是最好的观点之一。
  2. 关于这个问题有什么好书?
  3. 我应该参考哪些网站?
4

3 回答 3

6

这个问题没有“正确答案”——它非常开放,许多不同的选择可能会奏效。

您可能希望将强化学习作为一种尝试让 AI 在选择不同的控制统计数据后最好地确定如何控制汽车的方法。强化学习模型可以训练计算机尝试朝着一个好的系统工作,以便根据底层控制系统进行特定的操作。

要确定您要使用哪些控件,您可以使用某种强化学习方式,或者您可能想要研究可以使用不同控件组合的监督学习算法,看看它们给出的“适合度”有多好特定的地图。例如,您可以将地图分成小块,然后尝试查看哪些控件在最大数量的块中表现良好。

在绘制您想要走的路径方面,A*是一种众所周知的寻找最短路径的算法。就您而言,我不确定它会有多大用处,但它是教科书式的搜索算法。

为了避免对手赛车手并试图将他们推向更棘手的情况,您可能需要开发某种对手建模系统。通用投资组合是做到这一点的一种方法,尽管我不确定它们在这种情况下会有多大用处。一种选择可能是在赛道和对手汽车周围开发一个潜在场,以帮助您的汽车尝试避开障碍物;这实际上可能是比 A* 更好的寻路选择。如果您对战术演习感兴趣,那么简单的极小极大搜索可能是避免被困或找到诱捕对手的好方法。

我不是人工智能专家,但我认为上述链接可能是一个很好的起点。祝你在比赛中好运!

于 2011-02-21T21:57:57.813 回答
3

关于这个问题有什么好书?

我读过的关于这个主题的最好的书是Mat Buckland的“Programming Game AI by Example” 。它有关于路径规划转向行为的章节,以及更多(状态机、图论等)。

于 2011-02-21T22:01:51.380 回答
1

上述所有解决方案都很好,人们已经竭尽全力进行测试。查找“Togelius 和 Lucas”或“Loiacono 和 Lanzi”。他们尝试了神经进化、模仿(通过强化学习完成)、力场等。在我看来,最好的方法是中心线。这将需要一个小时来实施。相比之下,神经进化(例如)既不简单也不快速。我在这方面做了我的论文,如果你有合适的硬件,这很容易需要几个月的时间。

于 2011-04-01T07:00:37.147 回答