机器学习简单的赛车游戏

时间:2013-05-15 16:23:41

标签: machine-learning artificial-intelligence

我的任务是从赛车游戏上方创建一个简单的2D视图。本游戏中唯一的目标就是尽可能及时地达到最佳效果。玩家可以驾驶汽车并加速或减速。如果玩家从赛道上退出,游戏就结束了。

此时很简单,但游戏也有人工智能。人工智能的目标是根据人类玩家过去的描述,在轨道上学习“最佳”追踪。

我正在考虑一些功能,这些可以用作训练集:

  • 跟踪播放器作为轨道拓扑的功能
  • 播放器的速度作为曲目位置的函数

当然,其他功能或信息可能很有用。

可以使用哪些学习方法来制作有效的曲目。我的目标不是击败人类玩家,而是要到达赛道尽头。 :)

3 个答案:

答案 0 :(得分:2)

我大多只是在这里集思广益,但是:

据我了解,你的情况是这样的:

  • 你必须从开始到结束
  • 你不必反复做这件事,实现更好更好的“圈速”
  • 你必须采用任何类型的学习算法(是否有规范允许学习算法/智能算法?)
  • 你知道地图,包括开始和结束(?)
  • 地图是基于网格的,或者可以很容易地表示为网格(?)

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

  • 定义描述当前(或邻近)位置的一些简单要素(向量)(例如,从“完成”的角度,距离轨道边缘的距离)
  • 定义良好特征(例如距离完成的距离)
  • 在每一步中,做出决定,你将朝哪个方向移动(左,右,前,后)

因此,您有一组输入功能和决策问题。

  • 您可以定义一个模糊控制系统,为您提供最佳方向。 (像我这样的规则,我接近边界然后离开,如果我前往终点并且远离边界,那么继续前进)
  • 更简单,您可以构建决策树
  • 您可以构建一个选择下一步的SVM或神经网络

(这些不是具体的实施思路,取决于你的选择)

选择在很大程度上取决于您使用的工具(Matlab,C ++,Python等)以及您熟悉的学习算法。我建议选择你认识最好的那个,并尝试使用一个模型。

答案 1 :(得分:1)

也许你可以试试神经网络?

“在大多数情况下,神经网络是在学习阶段改变其结构的自适应系统。神经网络用于建模输入和输出之间的复杂关系或在数据中找到模式。”

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

答案 2 :(得分:0)

我认为弄清楚如何代表你的环境以及针对这种情况的“可能”行动更为重要,模型只是链接它们的一种方式。

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

接下来将它们与汽车的可用动作相关联,“向左转”/“向右转”/“加速/减速”,“游戏继续/结束”或其他。这些将是您的模型输出。

如果您要使用NN,我会想出两种方法来训练您的模型。 1.您可以玩游戏,并在操作适用于汽车时随时记录您的程序输入。 2.制作一个随机驾驶汽车的算法,对训练数据进行采样,并选择有效的训练模型进行训练。

我不熟悉强化学习,但我仍然认为它是相关的,你也可以深入研究并试一试。