我正在尝试为一个“连续的蛇”游戏实现一个人工智能。它与普通的蛇游戏有很大的不同,至少就AI而言是如此。基本上,蛇的驾驶有点像汽车,两个玩家中第一个撞到他的踪迹或其他玩家的踪迹的人输掉了比赛。此外,屏幕还会环绕其边界。
如果你看一段我目前进展的视频,你会更好地理解它:https://www.youtube.com/watch?v=i9qU-r4COQ8
不算太差,但还是打不倒我(我是黄色的)。理想情况下,获胜的人工智能需要展示这些行为:
<代码>G210
我目前的方法使用的是整洁算法(http://www.cs.ucf.edu/~kstanley/neat.html)。这是一种遗传算法,可以在几代人的时间里进化神经网络。它在一定程度上学会了如何做1、2和3(但不是很好),但对4一无所知。
对于输入,我使用:
<代码>F221
不过我现在有点卡住了,我想知道:
,
,
,
如果有人想看我的代码,我很乐意提供(C#)。
谢谢!
发布于 2019-08-16 23:06:41
这里的主要问题是你的学习算法没有足够的信息(除非你正在使用递归特性)。基本上,每一帧你都要求它通过几个距离传感器在迷宫中导航--这是不可能的。
singhV之前说的是真的-为了获得好的结果,学习算法的输入必须是图像(以及你自己的头部位置和角度)。您可以将分辨率降低一点,然后转换为单色以提高效率。
至于你的问题:*循环网络是可以记住以前的状态的网络,并基本上像“记忆”一样使用它。这不是这项任务所需要的(除非你真的想保持输入的原样,但然后蛇就必须学会“记住”它看到的所有东西-这将是非常令人印象深刻的,但太难了)*无监督:这意味着没有“例子”可供学习,而是通过正/负反馈学习(丢失=坏)。您的网络是无人监督的。*实时/连续-不知道,除了2007年微软的一些研究外,我什么也没找到:https://www.microsoft.com/en-us/research/publication/continuous-neural-networks/
顺便说一句,整洁是相当整洁的,我很高兴我遇到了这个!
发布于 2020-06-06 06:39:28
我还不能发表评论,所以我会在这里发表我的建议,但我不希望这是对你问题的完整回答,只是为你提供一些想法。
1)尝试输入可供您的“蛇”移动的区域。这可能并不容易做到,您将不得不采取一些假设。例如:假设对手走的路线使你的面积最小,或者更简单,对手保持相同的方向。
2)尝试输入攻击性策略,即计算对手可用区域。该算法可以尝试最大化你的面积,同时最小化对手的面积。
3)最后,尝试一些与人工神经网络不同的东西。如果你将你的问题表述为最小化/最大化任务,你可以使用很多方法来解决它。
顺便说一句,很酷的东西!
发布于 2019-05-30 05:31:31
首先,如果你想得到好的结果,可以使用深度卷积Q学习,它将图像作为输入。为了进一步改进,你可以输入三到四个连续图像的堆栈,这将对确定方向有很大帮助。我不认为你需要使用lstm来解决这个问题,堆叠多个帧可以很好地解决。为了进一步改进,您可以将相同的代码转换为决斗网络。
如果你喜欢快速结果,和较少的计算,你可以使用增强随机搜索,但如果不仔细训练,它可能会陷入局部最大值。
https://stackoverflow.com/questions/23970045
复制相似问题