简单赛车游戏中的机器学习

3
我的任务是创建一个简单的俯视视角二维赛车游戏。在这个游戏中唯一的目标就是尽可能快地完成比赛。玩家可以操纵车辆并加速或减速。如果玩家驶出赛道,游戏将结束。
到目前为止,游戏很简单,但它也有人工智能功能。AI的目标是学习基于人类玩家过去的行径,优化最佳赛道追踪。
我正在考虑一些函数,这些函数可以用作训练集:
- 玩家的追踪随赛道拓扑结构变化的函数 - 玩家速度与赛道位置的函数
当然,其他函数或信息可能也有用。
我可以使用哪些学习方法来生成有效的赛道呢?我的目标不是打败人类玩家,而仅仅是通过赛道的终点。 :)

1
为什么要学习,当你可以直接计算从起点到目标的最短路径呢? - Thomas Jungblut
不好意思,我必须在这个任务中使用机器学习。 :( - WonderCsabo
我的回答有什么问题吗?那对你不起作用吗? - Daniel
我评论了你的答案。但我不知道我的评论在哪里。:S - WonderCsabo
3个回答

2

我主要是在这里进行头脑风暴,但:

据我了解,你的情况大致如下:

  • 您需要从起点走到终点
  • 您不必重复这样做并取得越来越好的“圈”时间
  • 您必须纳入任何类型的学习算法(是否有规定允许使用哪些学习算法/智能算法?)
  • 您知道地图,包括起点和终点(?)
  • 地图是基于网格的或可以轻松表示为网格(?)

在这种情况下,一个非常简单的模型如下:

  • 定义一些简单特征(向量),描述您当前(或相邻)位置(例如与终点的角度,距离赛道边缘的距离)
  • 定义一个良好的特征(例如距离终点的距离)
  • 在每个步骤中,做出决策,您将朝哪个方向移动(左、右、前、后)

因此,您有一组输入特征和一个决策问题。

  • 您可以定义一个模糊控制系统,提供最佳方向。(例如,IF我靠近边界,则移开,IF我朝着终点前进并且离边缘足够远,则向前移动)
  • 更简单的是,您可以构建一个决策树
  • 您可以构建SVM或神经网络来选择下一步

(这些不是具体的实现想法,这取决于您的选择)

选择严重依赖于您使用的工具(Matlab、C ++、Python等)以及您熟悉哪种学习算法。我建议选择您最了解的那个,并尝试将模型适应该算法。


谢谢!抱歉我回答有点晚。我用Java实现了这个,建立了一个决策树。 - WonderCsabo

1
也许你可以尝试神经网络?
“在大多数情况下,神经网络是一种自适应系统,在学习阶段改变其结构。神经网络用于建模输入和输出之间的复杂关系或在数据中查找模式。”

http://en.wikipedia.org/wiki/Artificial_neural_network


是的,我想到了神经网络,但我只有基础知识,并不知道如何构建这样一个网络。我希望得到更具体的答案。 :) - WonderCsabo
1
好的,那么这个怎么样:将赛道分成几个“部分”,每个部分都是一个弯道、直道等。进行一系列人类测试,为每个部分存储结果。当你有了这些数据后,从每个区域中选择最好的并使用它们。它们可能不完全匹配,但修复起来不应该太难。顺便说一下,这不是机器学习,但你说你需要使用机器学习,并且使用人类的运行。这两件事是独立的。你需要使用哪一个? - Daniel
@WonderCsabo 运用ANN进行赛车游戏并不是第一次了。Colin McRae Rally 2就使用了它。这里有一些您可能会发现有用的链接。http://togelius.blogspot.ca/2007/08/how-better-ai-can-make-racing-games.html http://www.ai-junkie.com/misc/hannan/hannan.html http://www.generation5.org/content/2001/hannan.asp - Pedrom
非常有趣的链接。谢谢!我从未想过人工神经网络会被用于像游戏这样简单的商业产品中。 - WonderCsabo
@Daniel 谢谢!我在我的最终实现中使用了这个想法,它非常简单,但很有效。 - WonderCsabo
@WonderCsabo,很高兴它对您有用:)随意将答案标记为有帮助;) - Daniel

0

我认为更重要的是找出如何表示您的环境和该情况下的“可能”行动,模型只是将它们连接起来的工具。

在我看来,您可以尝试使用“距离道路左/右边缘到您的汽车的距离”,“当前汽车速度”和“汽车与道路方向之间的角度差异”等功能。这些将成为您的模型输入。

然后,将它们与汽车的可用操作相关联,“向左转”/“向右转”/“加速/减速”,“游戏继续/结束”或其他内容。这些将成为您的模型输出。

如果您要使用神经网络,我想到了两种训练模型的方法。 1. 您可以玩游戏,并在应用动作于汽车时记录下输入。 2. 制作一个算法,随机驾驶汽车以采样训练数据,并选择有效的数据来训练您的模型。

我不熟悉强化学习,但我仍然认为它与此相关,您也可以深入研究并尝试一下。


当我阅读问题时,强化学习是我首先想到的东西。 - Emile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接