这个是我对于我的大创项目的构思,随着时间逐渐更新
项目概要
我们的项目平台来自挑战杯揭绑挂帅的无人机对抗项目,但是在由于时间原因,并未考虑强化学习,所以现在通过大创项目来弥补遗憾
我们项目分为三部分,分为虚拟机,态势系统,和运行程序端(使用主机)
虚拟机内包含各种无人机信息,并封装为接口供windows端控制
态势系统主要是用来显示战场的情况,使得态势可视化
运行程序端编写程序进行无人机控制
启动顺序为
虚拟机-》态势系统-》运行程序端
项目学习基础
强化学习:
学习马尔可夫决策决策过程(MDP)
学习强化学习主要算法:
值迭代法,策略梯度法 重点学习PPO和DDPG
如果对于强化学习公式的了解较少的可以观看b站上的课程
【强化学习的数学原理】课程:从零开始到透彻理解(完结)_哔哩哔哩_bilibili
由于这里我们目前所使用的公式原因,先学习
了解仿真平台
对于各种API的研究(前期工作)
理解无人机的各种参数
对于linux系统的了解(前期工作)
学习一些基础操作,并对于其提供的虚拟机实现了解
对于强化学习接口搭建(完成Gym接口)封装Linux接口作为训练环境
首先利用PPO/DDPG训练单无人机基础移动(边界避障,上下限制)
进行侦察训练,导弹躲避训练
然后再加入对抗系统,使得无人机与敌机进行交互
首先是蓝方设计固定策略进行训练
然后红蓝方都进行强化学习训练
目前较为适合的最终算法(改进的MADDPG)
基础知识
Linux
一些基础linux命令总结为linux命令
如下
然后需要查看shell脚本
这里推荐黑马程序员的课程
强化学习
然后是强化学习的基础知识
马尔可夫决策
基本元素
-
状态集(State Space)
记为 S,表示系统可能处于的所有状态的集合。例如,在一个迷宫环境中,每个格子可以看作一个状态;在资源分配问题中,状态可以是当前资源的使用量、剩余量等的组合。
-
动作集(Action Space)
记为 A,表示在每个状态下可执行的所有动作。例如,在迷宫中可向上、下、左、右移动;在资源分配问题中可以为"给某个任务分配多少资源"等不同策略选项。
-
状态转移概率(Transition Probability)
记为 P(s′∣s,a),表示当前处于状态 s,执行动作 a 之后,转移到下一状态 s′ 的概率。这也是"马尔可夫"性质的来源:转移只与当前状态和当前动作相关,而与之前的历史状态无关。
-
奖励函数(Reward Function)
记为 R(s,a)或 R(s,a,s′),表示在状态 s 执行动作 a并转移到状态 s′时得到的即时回报。这个回报值可能是正的(奖励)或负的(惩罚)。
-
折扣因子(Discount Factor)
记为 γ,取值范围通常在 [0,1] 之间。它用于平衡短期和长期收益的重要性:当 γ越接近 1 时,更注重长期回报;当 γ越小,越关注即时回报。
决策过程
-
观察状态
系统(或智能体)观察当前状态 s。
-
选择动作
根据一定的策略(policy)π\piπ,在状态 sss 下选择一个动作 aaa。策略 π\piπ 可以理解为一个函数或规则,用于指定在不同状态下执行哪一个动作。
-
环境反馈
- 状态转移:在环境中执行动作 aaa 后,系统会随机地转移到下一个状态 s′s's′(由转移概率 P(s′∣s,a)P(s' \mid s,a)P(s′∣s,a) 决定)。
- 得到奖励:与此同时,系统给予执行该动作的即时回报 R(s,a)R(s,a)R(s,a) 或 R(s,a,s′)R(s, a, s')R(s,a,s′)。
-
更新决策
基于新的状态 s′s's′ 和获得的奖励,智能体可以对其策略 π\piπ 进行更新或继续保持不变,具体取决于使用的算法(例如价值迭代、策略迭代、Q 学习、深度强化学习等)。
-
进入下一轮决策
新的状态 s′s's′ 成为当前状态,系统重复上述过程,直到达到终止条件(如达到目标状态、达到最大交互步数、收敛到稳定策略等)
PPO
![](https://i-blog.csdnimg.cn/direct/87fb2c4c9df84d2795f098b8add23ba9.png)
DDPG
![](https://i-blog.csdnimg.cn/direct/74086e7a57c44526aa118d34700f94f8.png)
![](https://i-blog.csdnimg.cn/direct/32555c358d9d42c098a591d3a09bfeb8.png)
note:无人机飞行是连续的动作,使用 DDPG
聚焦连续动作空间,使用确定性策略和 Critic-Q 网络来估计动作价值,具备较高的数据利用效率,但也对训练稳定性和超参数选择有更高要求。
MADDPG
多无人机对战是多智能体和DDPG的结合
- 集中式 Critic :在训练过程中,每个智能体的 Critic 都可以访问 全局信息,包括所有智能体的状态和动作。这使得 Critic 在更新时对环境动态和其他智能体决策有更全面的认识,缓解了环境非平稳问题。
- 分散式 Actor:在执行阶段,每个智能体只基于自身的局部观测来进行决策,保持灵活性与可扩展性。
![](https://i-blog.csdnimg.cn/direct/7077c49bf43f44bda28e3cde235d8f0a.png)
初步研究
动作设置:
我们使用机动号操作无人机进行对战,一共执行五个状态,平飞,俯冲,平飞加减速,爬升,转弯
奖励函数设置
?
初步设计为分为多个阶段,进行分开训练,分为巡航,进攻,躲避,撤退四个策略,通过条件进行状态转移
开始设计初步的奖励和惩罚函数
巡航:
奖励项:侦察到敌方无人机,侦察到敌方无人机时的高度差
惩罚项:碰撞到边界
进攻:
奖励项:导弹命中敌方无人机
惩罚项:敌方无人机脱离我方锁定
躲避:
奖励:躲避敌方导弹
撤退:
奖励:??
惩罚:被敌方无人机侦测