3

我的任务是从上面的赛车游戏创建一个简单的 2D 视图。这场比赛的唯一目标是尽可能及时取得最好的成绩。玩家可以驾驶汽车并可以加速或减速。如果玩家离开赛道,则游戏结束。

在这一点上很简单,但游戏也有一个 AI。AI 的目标是根据人类玩家过去的轨迹来学习赛道上的“最佳”轨迹。

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

  • 作为轨道拓扑的函数的玩家追踪
  • 播放器的速度作为轨道位置的函数

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

学习方法可以用来产生有效的轨道。我的目标不是击败人类玩家,而是只到达赛道的尽头。:)

4

3 回答 3

2

我主要是在这里集思广益,但是:

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

  • 你必须从头到尾
  • 您不必重复执行此操作并获得越来越好的“单圈”时间
  • 您必须结合任何类型的学习算法(是否有规范允许哪些学习算法/智能算法?)
  • 你知道地图,包括开始和结束(?)
  • 地图是基于网格的,或者可以很容易地表示为网格 (?)

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

  • 定义一些描述您当前(或相邻)位置的简单特征(矢量)是(例如,距离终点的角度,距离轨道边缘的距离)
  • 定义一个好的特征(例如距离完成的距离)
  • 在每一步中,做出决定,您将向哪个方向移动(左,右,前进,后退)

所以你有一组输入特征和一个决策问题。

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

(这些不是具体的实现思路,这取决于您选择的内容)

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

于 2013-05-16T10:55:38.797 回答
1

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

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

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

于 2013-05-15T16:25:45.373 回答
0

我认为更重要的是弄清楚如何表示您的环境和针对这种情况的“可能”行动,模型只是将它们联系起来的东西。

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

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

如果你要使用神经网络,我想出了两种方法来训练你的模型。1.您可以玩您的游戏,并让您的程序登录输入任何时候对汽车应用一个动作。2.制作一个随机驾驶汽车的算法对训练数据进行采样,并选择有效的算法来训练你的模型。

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

于 2013-05-16T06:45:57.517 回答