我的任务是创建一个简单的、2D、俯视视角的赛车游戏。游戏的唯一目标是尽可能在最短的时间内取得最佳成绩。玩家可以控制赛车的方向,并可以加速或减速。如果玩家驶出赛道,游戏就结束了。
目前游戏看似简单,但它还包含了一个AI。AI的目标是根据人类玩家过去的轨迹,学习在赛道上“最优”的行驶路线。
我正在考虑一些功能,这些可以用作训练集:
- 玩家轨迹作为赛道拓扑结构的函数
- 玩家速度作为赛道位置的函数
当然,其他功能或信息也可能有用。
我可以使用哪些学习方法来生成有效的赛道?我的目标不是击败人类玩家,而是仅仅到达赛道的终点。:)
回答:
我主要是在这里进行头脑风暴,但:
据我理解,你的情况大致如下:
- 你需要从起点到达终点
- 你不需要反复进行并取得越来越好的“圈速”
- 你需要整合任何类型的学习算法(是否有关于允许使用哪些学习算法/智能算法的具体规定?)
- 你知道地图,包括起点和终点(?)
- 地图是基于网格的,或者可以轻松表示为网格(?)
在这种情况下,一个非常简单的模型如下:
- 定义一些简单的特征(向量)来描述你当前(或邻近)的位置(例如,距离终点的角度,距离赛道边缘的距离)
- 定义一个优良特征(例如,距离终点)
- 在每一步,做出决定,你将朝哪个方向移动(左、右、前、后)
所以你有一组输入特征和一个决策问题。
- 你可以定义一个模糊控制系统,为你提供最佳方向。(例如,如果我靠近边界,则远离;如果我正朝向终点且离边界足够远,则向前移动)
- 更简单的是,你可以构建一个决策树
- 你可以构建一个支持向量机或神经网络来选择下一步
(这些不是具体的实现建议,这取决于你选择什么)
选择在很大程度上取决于你使用的工具(Matlab、C++、Python等)以及你熟悉的学习算法。我建议选择你最了解的算法,并尝试适应该模型。