我试图在网格世界导航任务中进行多agent强化学习,在这个任务中,多个agent试图在避免与固定障碍的碰撞和相互碰撞的同时,共同达到多个目标。作为一种约束,每个代理只能在有限的范围内看到自己周围的情况。
因此,在较高的层次上,每个代理的状态应该既包含有助于避免冲突的信息,又包含引导其实现目标的信息。我正在考虑通过在代理的状态中包含一个矩阵来实现前者,该矩阵由围绕代理的网格单元组成,它将显示agent的障碍所在。但是,我不知道如何将目标导航信息包含在这个矩阵之上。目前,我只是扁平矩阵和附加所有相关的目标位置在末尾,并使用这一状态。
例如,对于如下所示的网格世界(0表示空单元格,1表示代理,2表示障碍,3表示目标):
[[0 0 0 0 0 0 2 2 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 2 2 0 0 0 0 0 0]
[0 3 2 2 0 0 0 0 0 2]
[0 0 0 0 0 0 0 0 0 2]
[0 0 0 0 1 0 0 0 0 2]
[2 0 0 0 0 2 2 0 3 0]
[2 0 0 0 0 2 2 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 2 0 0 1 0 0 0 0]]row5 col4的代理可以看到它周围的distance1中的以下单元:
[[0. 0. 0.]
[0. 1. 0.]
[0. 0. 2.]]矩阵扁平化后变成:
[0,0,0,0,1,0,0,0,2]row3 col1的目标相对于上述代理的位置是(5-3=2,4-1=3)。
row6 col8的目标相对于上述代理的位置是(5-6=-1,4-8=-4)。
因此,在附加相对位置后,代理的状态变为:
[0,0,0,0,1,0,0,0,2,2,3,-1,-4](另一种药剂的类似过程)
这是一种合理的国家设计方法吗?我主要关心的是,RL可能无法区分平坦矩阵和相对距离之间的区别。如果我的担忧是有根据的,你能就我应该如何设计这个国家提出一些建议吗?
提前感谢!
编辑:为了验证我的担忧,我使用PG增强算法训练了一个代理。就像我担心的那样,经纪人学会了避开障碍,但在其他情况下,他们只是随机地移动,而没有朝着目标前进。
发布于 2021-12-27 07:10:35
我没有找到改善状态设计的方法,但我确实找到了一个解决办法,使我的PG网络模块。
我简单地把我的PG网络分成两部分--一个是从上述状态中获取扁平网格矩阵部分,另一个是接收相对目标位置。然后,我将两个子网络的输出连在一起,并通过一个softmax层传递它们,以得到最终的策略。
如果您需要更多的详细信息,可以查看我的代码这里 (相关代码在MARL_PolicyGradient.py、MARL_env.py和MARL_networks.py中)。祝好运!
https://stackoverflow.com/questions/70432613
复制相似问题