我有一个学校项目,以建立一个2D赛车游戏的人工智能,它将与其他几个认可机构竞争。
我们有一个黑白位图图像的赛车轨道,我们可以选择基本的统计为我们的汽车(处理,加速,最高速度和刹车)后,我们收到地图。AI连接到游戏的服务器,并为当前的加速和方向盘提供几次第二个数字。顺便说一下,我选择的语言是C++。问题是
发布于 2011-02-21 21:57:57
这个问题没有“正确的答案”--它是相当开放的--而且许多不同的选择可能会解决。
您可能想看看reinforcement learning作为一种方法,试图让人工智能最好地决定如何控制汽车一旦它选择了不同的控制统计数字。强化学习模型可以训练计算机向一个良好的系统努力工作,以便在底层控制系统中进行特殊的操作。
为了确定您想要使用哪些控件,您可以使用一些强化学习,或者您可能希望研究supervised learning算法,这些算法可以在不同的控件组合中使用,并查看它们对特定地图的“适合”有多好。例如,您可以将映射分解为小块,然后尝试查看哪些控件在最大数量的块中表现良好。
在绘制出您想要走的路径方面,A*是一种著名的最短路径查找算法。在你的例子中,我不知道它有多有用,但它是教科书上的知情搜索算法。
为了避免对手赛车手,并试图把他们推向更复杂的情况,你可能需要开发某种类型的对手建模系统。通用投资组合是实现这一目标的一种方法,但我不确定它们在这种情况下会有多大用处。一个选择可能是开发一个围绕赛道和对手的汽车的potential field,以帮助您的汽车试图避免障碍;这实际上可能是一个更好的选择,比A*寻找路径。如果您对战术演习感兴趣,那么直接的minimax搜索可能是避免被困或找到捕获对手的方法的好方法。
我不是人工智能专家,但我认为上述链接可能是一个很好的起点。祝比赛好运!
发布于 2011-02-21 22:01:51
关于那件事有什么好书?
我读过的关于这个主题的最好的书是马特·巴克兰的“编程游戏人工智能范例”。它有关于路径规划和转向行为的章节,还有更多的章节(状态机、图论,列表继续)。
发布于 2011-04-01 07:00:37
上面所有的解决方案都是好的,人们已经花了很长的时间来测试它们。查一查“托格利厄斯和卢卡斯”或“洛伊科诺和兰子”。他们尝试过神经进化,模仿(通过强化学习),力场,等等。在我看来,最好的方法是中心线。这将需要一个小时的实施。相反,神经进化(例如)既不容易,也不快。我完成了我的论文,如果你有合适的硬件,它可以很容易地花上几个月的时间。
https://stackoverflow.com/questions/5071640
复制相似问题