我正在游戏中进行坦克游戏,你可以在墙上移动坦克并射击其他坦克。
我正试图找到一种制作神经网络的方法,可能是对敌人的强化学习,这样游戏就可以决定哪些坦克应该移动到哪里,如果他们应该通过传递每个物体的属性来射击等。
Attributes:
Enemy -> x,y,width,height,speed,health and other items
Wall -> x,y,width,height
Bullet -> x,y,width,height,speed
Player -> x,y,width,height,speed,health
我计划使用keras python模块创建一个神经网络,但是我找不到设置它的方法,以便输入数据的形状和大小正确,因为会有可变数量的墙和子弹
我想做什么:
action = Network.predict(state)
其中
state = (Enemy, Player, Tuple_of_Wall_Data, Tuple_of_Bullet_Data)
并且行动是敌人应该以形式移动的选项
action = (Direction,Should_Shoot)
TLDR 我的问题是,我如何建立一个神经网络输入层,以便它可以采取(1个敌人,1个玩家,多个墙,多个子弹)并训练神经网络给敌人一个方向,如果它应该使用强化学习开火?
答案 0 :(得分:1)
表示AI代理的游戏状态有三种典型方式:
内部游戏状态,几乎就是你提出的建议 - 游戏中的对象列表,以及它们的原始属性。如果想要使用ML,那么你需要一个处理不同大小的架构,因此你可能最终会得到循环神经网络,逐个处理对象。请注意,这可能是非常不理想的表示。特别是作为一个人类,你没有像这样的游戏状态,你没有得到一个对象流。
全球地图视图。如果游戏有足够小的地图,它可以作为代理的输入全部被填充,最终会有完全可观察到的问题,形式为W x H x K的数据,其中W,H是地图的宽度和高度,K是对象类型的数量(因此您可以获得每个对象的单热编码)
Agent" vision",这可能是现代RL中最受欢迎的一个,其中代理再次以W x H x K呈现,但现在W和H是大小它的愿景(与代理一起移动)。