我的任务是从上面的赛车游戏创建一个简单的 2D 视图。这场比赛的唯一目标是尽可能及时取得最好的成绩。玩家可以驾驶汽车并可以加速或减速。如果玩家离开赛道,则游戏结束。
在这一点上很简单,但游戏也有一个 AI。AI 的目标是根据人类玩家过去的轨迹来学习赛道上的“最佳”轨迹。
我正在考虑一些功能,这些可以用作训练集:
- 作为轨道拓扑的函数的玩家追踪
- 播放器的速度作为轨道位置的函数
当然,其他功能或信息也可能有用。
学习方法可以用来产生有效的轨道。我的目标不是击败人类玩家,而是只到达赛道的尽头。:)
我的任务是从上面的赛车游戏创建一个简单的 2D 视图。这场比赛的唯一目标是尽可能及时取得最好的成绩。玩家可以驾驶汽车并可以加速或减速。如果玩家离开赛道,则游戏结束。
在这一点上很简单,但游戏也有一个 AI。AI 的目标是根据人类玩家过去的轨迹来学习赛道上的“最佳”轨迹。
我正在考虑一些功能,这些可以用作训练集:
当然,其他功能或信息也可能有用。
学习方法可以用来产生有效的轨道。我的目标不是击败人类玩家,而是只到达赛道的尽头。:)
我主要是在这里集思广益,但是:
据我了解,您的情况是这样的:
在这种情况下,一个非常简单的模型如下:
所以你有一组输入特征和一个决策问题。
(这些不是具体的实现思路,这取决于您选择的内容)
选择很大程度上取决于您使用的工具(Matlab、C++、Python 等)以及您熟悉的学习算法。我建议选择你最了解的那个,并尝试为它拟合一个模型。
也许你可以试试神经网络?
“在大多数情况下,神经网络是一个在学习阶段改变其结构的自适应系统。神经网络用于对输入和输出之间的复杂关系进行建模或在数据中寻找模式。”
我认为更重要的是弄清楚如何表示您的环境和针对这种情况的“可能”行动,模型只是将它们联系起来的东西。
在我看来,您可以尝试“从道路的左/右边缘到您的汽车的距离”、“当前车速”和“汽车与道路方向之间的角度差异”等功能。这些将是您的模型输入。
然后接下来将它们与汽车的可用动作相关联,“左转”/“右转”/“加速/减速”,“游戏继续/结束”或其他东西。这些将是您的模型输出。
如果你要使用神经网络,我想出了两种方法来训练你的模型。1.您可以玩您的游戏,并让您的程序登录输入任何时候对汽车应用一个动作。2.制作一个随机驾驶汽车的算法对训练数据进行采样,并选择有效的算法来训练你的模型。
我不熟悉强化学习,但我仍然认为它是相关的,您也可以深入研究并尝试一下。