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

Machine learning 简单赛车游戏中的机器学习,machine-learning,artificial-intelligence,Machine Learning,Artificial Intelligence,我的任务是创建一个简单的二维视图,从上面的赛车游戏。这场比赛的唯一目标是在尽可能短的时间内取得最好的成绩。玩家可以驾驶汽车,也可以加速或减速。如果运动员离开赛道,比赛就结束了 这一点很简单,但游戏也有人工智能。人工智能的目标是根据人类玩家过去的轨迹,学习轨迹上的“最佳”轨迹 我正在考虑一些函数,它们可以用作培训集: 根据轨迹的拓扑结构对播放器进行跟踪 运动员的速度,作为轨道位置的函数 当然,其他功能或信息也可能有用 可以使用什么样的学习方法来生成有效的轨迹。我的目标不是击败人类选手,而是只到

我的任务是创建一个简单的二维视图,从上面的赛车游戏。这场比赛的唯一目标是在尽可能短的时间内取得最好的成绩。玩家可以驾驶汽车,也可以加速或减速。如果运动员离开赛道,比赛就结束了

这一点很简单,但游戏也有人工智能。人工智能的目标是根据人类玩家过去的轨迹,学习轨迹上的“最佳”轨迹

我正在考虑一些函数,它们可以用作培训集:

  • 根据轨迹的拓扑结构对播放器进行跟踪
  • 运动员的速度,作为轨道位置的函数
当然,其他功能或信息也可能有用


可以使用什么样的学习方法来生成有效的轨迹。我的目标不是击败人类选手,而是只到达赛道的终点。:)

也许你可以试试神经网络

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


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

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

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

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


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

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

据我所知,你的情况是这样的:

  • 你必须从头到尾
  • 你不必反复这样做,就能获得越来越好的“圈”时间
  • 您必须合并任何类型的学习算法(是否有允许哪些学习算法/智能算法的规范?)
  • 你知道地图,包括开始和结束(?)
  • 地图是基于网格的,或者可以很容易地表示为网格(?)
在这种情况下,一个非常简单的模型如下所示:

  • 定义一些描述当前(或相邻)位置的简单特征(矢量)(例如,与终点的角度、与轨迹边缘的距离)
  • 定义一个特征(例如,与饰面的距离)
  • 在每一步中,做一个决定,你将朝哪个方向移动(左、右、前、后)
因此,您有一组输入特性和一个决策问题

  • 您可以定义一个模糊控制系统,为您提供最佳方向。(规则是,如果我靠近边界,然后离开,如果我到达终点,并且离边界足够远,然后向前移动)
  • 更简单的是,您可以构建决策树
  • 你可以构造一个支持向量机或神经网络来选择下一步
(这些不是具体的实施想法,这取决于您选择的内容)


选择很大程度上取决于你使用的工具(Matlab、C++、Python等)和你熟悉的学习算法。我建议选择你最了解的一个,并尝试将模型与之匹配。

为什么要学习,当你可以直接计算从开始到目标的最短路径时?不,我必须在这项任务中使用机器学习:(我的答案有问题吗?这对你不起作用吗?我对你的答案发表了评论。我不知道我的评论在哪里。:SYes,我想到了NNs,但我对它们只有基本的了解,我不知道如何构建这样一个网络。我希望得到一个更具体的答案。:)好吧,这是怎么回事:把轨道分成几个部分“章节,其中每个部分都是一个转弯、直线等。运行一系列人工测试,存储每个部分的结果。当你有这些数据时,从每个领域中挑选最好的并使用它们。它们可能不会完美地啮合,但这应该不会太难修复。仅供参考,这不是机器学习,但你说你需要使用机器学习,也需要使用来自人类的跑步。这是两件独立的事情。你需要使用哪一种?@WonderCsabo这不是第一次在赛车游戏中使用安。科林·麦克雷第二拉力赛用过它。这里有一些你可能会觉得有用的链接。非常有趣的链接。谢谢我从来没有想过ANN会被用于像游戏这样的简单商业产品。@Daniel谢谢!我在最后的实现中使用了这个想法,它非常简单,但很有效。在阅读问题时,强化学习是我想到的第一件事。谢谢!对不起,我接受你的答复耽搁了太久。我用Java实现了这个,并构建了一个决策树。