💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
在可视化战场上,左半部分有三个友方无人机在随机位置生成,右半部分有两个敌方无人机在随机位置生成。
敌方无人机通过函数控制来采取固定轨迹的移动,友方无人机通过DDPG输出的action进行移动。
任务目标是使得友方无人机可以察觉到敌方无人机的位置,并协同合作不断跟踪两个敌方无人机。
DDPG:
Critic的输入是状态+动作,输出是打分,更新是最小二乘 TD误差。
Actor的输入是状态,输出是一个动作,确定性动作的更新是最大化打分。
critic_target和actor_target都是在计算next_q的时候被使用。
target net网络采用参数软替换,tau设置为0.005(有点高)。
学习率设定为1e-4(有点大)。
折扣因子设定为0.95,即主要朝前看20步(有点小),episode长度为300。
replay buffer设定为2e-6,没有采用PER。
动作的探索噪声采用高斯噪声,整个训练过程固定均值为0标准差为0.15(前期可以尝试增大方差提高探索)。
强化学习相关:
obs,action,reward都没有做归一化
observation space:
状态空间3x2+2x2=10,对应三个友方无人机的xy和两个敌方无人机的xy,因为三个agent共用一个网络,所以把每个step的采样分成三份,每次把需要执行动作的agent的位置放在最前面。
action space:
输出-pi~pi的一个角度,控制agent移动的方向。
reward:
每个agent单独计算奖励。
-
时间惩罚,逗留越长,受到的小惩罚越大。(后来取消agent死亡的设定后,这个惩罚应该没用了)
-
绝对距离奖励,当距离敌方无人机的最小距离大于一定值或小于一定值时,会获得一定惩罚或奖励。
-
相对距离奖励,当友方无人机距离敌方无人机的最短距离更进一步的时候,获得奖励,距离变远的时候,获得惩罚。 通过设计一个距离的势能函数y = dist-5/(1+dist),可以保证在正区间内单调且变化平稳,即agent距离敌人较远时前半部分用于计算相对距离奖励,agent距离敌人较近时后半部分用于计算相对距离奖励。
-
针对出现的三追一的问题做了一些处理:以0.5的概率更换两个敌方无人机输入的位置;如果三个无人机追击目标相同的话,绝对距离奖励减少一半。
📚2 运行结果
运行录像:
部分代码:
# 这里只需要把state输入就可以了 def forward(self, state): q = F.leaky_relu(self.l1(state)) q = F.leaky_relu(self.l2(q)) q = self.bn(q) q = F.leaky_relu(self.l3(q)) q = self.l4(q) # actions_value1 = self.q_eval1(state).cpu().data.numpy().flatten() # action1 = np.argmax(actions_value1) # q = q.cpu().data.numpy().flatten() # q = np.argmax(q) return q class DQN(object): def __init__(self, state_dim, action_dim, max_action): self.q_eval1 = Q_Value(state_dim).to(device) self.q_eval2 = Q_Value(state_dim).to(device) self.q_eval3 = Q_Value(state_dim).to(device)
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]张耀中、许佳林、姚康佳、刘洁凌.基于DDPG算法的无人机集群追击任务[J].航空学报, 2020, 41(10):13.DOI:10.7527/S1000-6893.2020.24000.
[2]李华伟.多无人机协同任务规划研究与实现[D].西安电子科技大学,2014.DOI:10.7666/d.D726818.
[3]Xiaowei FU,Zhe XU,Hui WANG.基于DDPG的无人机追捕任务泛化策略设计[J].西北工业大学学报, 2022, 40(1):47-55.DOI:10.1051/jnwpu/20224010047.
🌈4 Matlab代码实现
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取