我用simulink做多智能体强化学习路径规划,遇到了一些问题,然后得到了解决办法,下面是一些记录。

**问题:**智能体在遇到障碍物后并不能立即停止,RL agent不能及时接收到isdone信号。
**解决:**在 rlTD3AgentOptions 里(TD3也可以是其他的,如DDPG),设置SampleTime = 0.1 ,然后模型求解器里设置变步长。
(采样时间影响的是模型的运行速度)
还要注意环境输出的isdone与RL agent接收的isdone之间有没有做其他耗时的操作。

**问题:**我在重置函数里设置了智能体初始位置随机,随后也设置了目标点随机。这两个的设置都有间距阈值,如果不满足阈值,就重新生成。我的环境大小是2*2,一开始设置初始位置的时候,间距阈值为0.4,然后设置目标点间距阈值设置为0.6,于是问题就出现了。程序会在运行几个回合后卡住,也不报错,其实就是卡在了重置函数这里。
**解决:**目标点间距阈值设置过大,使得程序一直在尝试重新生成符合间距阈值的目标点,将目标点的间距阈值减小就好。

**问题:**训练时一旦有一个RL agent的isdone为true,那么这个训练回合就会停止,使得其他智能体得不到充分训练。我想要某个智能体到达目标或碰到障碍物时停止,其他智能体继续寻找路径,直到所有的智能体的isdone都为true,该回合才结束。

直到所有的智能体的isdone都为true,该回合才结束。

这个好解决,只要把输出的isdone一下,然后连接到所有的RL agent的isdone接口上就好,但是这样就造成了某个智能体的isdone为true时,这个智能体不能停下来,而是继续运行,如此的话就永远没办法结束一个回合,直到到达回合最大步数。

**解决:**在RL agent输出端用switch模块判断一下就好
在这里插入图片描述
在这里插入图片描述
其实在写这篇博客之前,我已经用这种方法了,但是那时没有解决问题。是因为一个低级的不能再低级的错误,如图,我把小车的速度接口连错了,把1车的速度连到了2车上,把2车的速度连到了4车上,等等。
在这里插入图片描述
训练时,有时小车会处于原地绕圈的状态,这是训练的正常现象,只要不是每个回合都绕圈就行。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐