首页 / 资讯中心 / 文章详情

强化学习动态调度多目标粒子群:多无人机路径规划新思路

强化学习动态调度多目标粒子群:多无人机路径规划新思路 ★ FEATURED ARTICLE
多无人机路径规划这几年几乎成了群体智能算法的练兵场粒子群、遗传、蚁群、灰狼隔一阵就有一篇新XX算法UAV的组合出现。但真正让我回过头反复看的是2022年发在KBS上的一篇工作——它把强化学习、多目标粒子群算法、多无人机路径规划三个词放进同一套框架表面看是又一篇算法拼接读进去才发现作者实际做的事是让强化学习去动态调度粒子群的协作方式而不是简单堆模块。这篇文章我就把它的来龙去脉拆开讲顺便把复现过程中踩过的几个坑一起交代掉。如果你正在做无人机任务规划、集群协同或者想把强化学习嵌进群体智能算法里这份解读应该能给你不少可以落地的东西。1. 多无人机路径规划这个应用场景到底难在哪1.1 这不是单目标最短航程问题先弄清楚一个前提多无人机路径规划不是求一条最短航线而是在很多互相拉扯的目标之间找平衡。一个最基本的规划目标是最短航程但实际任务里几乎不会只算这条。威胁规避就是第一个硬约束雷达威胁区、禁飞区、地形遮蔽区每一样都决定航迹不能只是几何上短。协同约束则更麻烦多架无人机要在规定时间窗内到达任务点避免同时挤进同一条暴露走廊还要考虑彼此的安全间隔。再加上飞行性能和航迹平滑度比如最小转弯半径、最大爬升角、路径点不能太密集这些问题叠在一起就形成了一个典型的多目标优化问题。用一个最简单的例子说明两架无人机绕同一个威胁区如果各自独立算最短路径很可能在同一个转向点相遇结果双双被探测到。想让总代价最小、又让集群暴露风险最低、还让所有无人机按时到达本质上就是在航迹长度、威胁代价、时间协同、机动可行性这几项之间做Pareto折中。所以这类问题的输出通常不是一个解而是一组Pareto非支配解集合。工程上再从这组解里挑一架或几架无人机实际执行的方案这就对算法的求解能力提出了两个要求一是找到的解要尽量逼近真实Pareto前沿二是解集在前沿上分布要均匀。两个要求缺一个后面选方案时就只能矮子里拔高个。1.2 经典MOPSO处理这类问题时暴露的三个痛点多目标粒子群算法也就是MOPSO思路是在粒子群的基础上引入外部档案和Pareto支配关系。每个粒子根据个体最优pbest和全局最优gbest来更新速度与位置外部档案保存当前找到的非支配解再通过网格法或邻域机制挑选引导粒子。这个套路在处理低维、连续、凸型Pareto前沿时表现不错但一放到无人机路径规划的高维约束场景里三个老问题就会暴露出来。第一个是早熟收敛。粒子群本身有向全局最优聚合的趋势多峰问题里一旦gbest落在局部前沿所有粒子都会被吸过去。UAV场景的威胁区经常把可行域切成很多块局部陷阱特别多这个问题尤其严重。第二个是Pareto前沿分布不均。MOPSO的外部档案通常容量有限当粒子集中涌向某一小段前沿时密集区会把档案占满稀疏区反而没有解最后解集在目标空间里挤成一团。后面想选一条综合代价合适的航迹会发现选择面非常窄。第三个是动态场景适应性差。实际任务里环境是会变的发现新威胁、任务点调整都需要算法快速切换搜索策略。但经典MOPSO的运行参数和更新规则从头到尾一样环境变了它自己并不知道。以上三个痛点正好给强化学习的介入留出了位置。1.3 为什么算法研究者愿意把这类工作投到KBS顺带说下滑类论文的定位。KBS这本期刊在知识工程和智能系统方向的认可度一直在线2022年这篇能到SCI一区TOP至少在实验量、方法完整度、写作规范上都是硬碰硬的。从读者角度看这类期刊最看重的是你的方法有没有解决一个具体知识决策问题——把强化学习当作决策器去调控另一类优化算法恰好符合这个偏好。所以读这篇文章时要注意它不只是给MOPSO加了一个RL外壳而是把RL描述成一个决策层整个系统因此变成双层智能结构。理解了这一点后面所有设计逻辑才能顺下来。2. 强化学习是如何接管MOPSO的方向盘的2.1 先回顾一下MOPSO的速度-位置更新框架要看懂这篇的方法得先把基础MOPSO的更新公式放在眼前。粒子的速度更新通常写成这样v_i w * v_i c1 * r1 * (pbest_i - x_i) c2 * r2 * (gbest - x_i) x_i x_i v_i其中w是惯性权重c1是自我认知系数c2是社会引导系数r1、r2是随机数。多目标版本的区别主要在于gbest不再只有一个而是从外部档案中的非支配解里按某种策略挑选pbest的更新也要依据Pareto支配关系。粒子本身编码的可以是一组控制点或航迹特征参数解码后经过插值得到实际航迹。这里有一个容易被忽略的点MOPSO的搜索行为其实完全由公式里的引导源决定。引导源选哪个粒子、档案怎么维护、邻域拓扑是什么结构决定了粒子是在局部深挖还是在全局探索。传统做法是人为固定这些选择比如网格法选leader、档案容量设个定值。而这篇工作的核心改动就是把当前状态下该用哪种引导模式这件事交给强化学习去决策。打个比方MOPSO是一辆车方向盘的助力模式有经济、运动、越野好几种。经典做法是焊死一种模式开完整条路这篇的思路是让一个副驾驶根据实时路况帮你切换模式——副驾驶就是那个强化学习智能体。2.2 RL在算法中的定位策略调度器而非路径生成器这是整篇方法最关键的定性。很多做UAV规划的人一听到强化学习第一反应是用神经网络直接输出航迹坐标。但直接端到端生成路径在工程上很难落地动作空间维度高、训练成本大、泛化到新环境的能力也存疑。这篇的办法不是让RL去学怎么飞而是让RL去学用哪种办法来找路。具体说RL智能体观察的是种群在优化过程中的状态比如当前非支配解数量、粒子分布均匀程度、连续几代Pareto前沿的改善幅度、迭代进度等然后输出一个离散动作这个动作对应一种粒子群协作模式。种群按这个模式运行若干个迭代步跑完后再把结果反馈给RL形成下一轮决策。这样做的好处首先是把问题规模降下来了。RL的动作空间只有几个模式索引状态空间也限定在十几个特征内训练起来轻得多。其次是可解释性变强了每个RL决策都能翻译成当前种群陷入局部停滞切换为邻域拓扑模式来恢复探索对复现和工程调试都比较友好。2.3 状态、动作、奖励的建模方式虽然原文对建模细节的表述需要拿到代码才能完全核对但根据这类工作的通行做法可以整理出一套相当典型的状态-动作-奖励设计。我把常见的配置列出来复现时可以按这个框架先跑通一轮建模要素常见设定设计考虑状态特征非支配解数量占比、粒子拥挤距离熵、迭代进度 t/T、最近K代HV或IGD变化量既要反映多样性也要反映收敛状态还要让RL知道还剩多少时间可以改变策略动作空间5-6种协作模式的索引动作维度低便于用Q-learning或小型策略网络快速收敛奖励信号前后两个决策周期的HV增量或IGD下降量再加一个分布性微调项直接用公开指标的好处是结果可比不容易被自己造的指标带偏决策周期每5-10代做一次模式切换太频繁会让种群来不及体现当前模式的效果太稀疏则RL无法及时响应环境变化这里最需要注意的细节是奖励设计。单纯使用HV增量容易让智能体偷懒如果前期收敛快HV提升大它可能一直选某个激进的模式等到后期种群多样性不足HV提升变慢再切换模式已经晚了。好的做法通常是把奖励拆成收敛贡献和多样性贡献两部分或者用滑动窗口计算改善量让智能体对当前模式的边际收益是否下降更敏感。另外训练RL的策略时不能把每个决策周期当作独立样本生硬套用。MOPSO本身是随机过程同样的状态、同样的动作下一轮HV增量也可能大不相同。稳妥的做法是每次决策评估多次独立运行的平均奖励或者采用经验回放来平滑噪声——这条我在后面的复现坑里还会细说。3. 多模式协作机制几种飞行姿态之间的自适应切换3.1 候选模式池里通常会放哪几种协作策略这篇文章标题里的多模式协作是理解全篇的核心关键词。它指的不是简单的参数切换而是粒子群内部信息传递方式的切换。我把常见模式池里的几种策略列一下全局最优引导模式标准MOPSO粒子向全局档案中的leader靠拢收敛速度快但容易聚集。邻域拓扑模式把种群按环状或小世界拓扑分组粒子只向邻居中的最优解学习可以延缓早熟。对立学习模式对部分粒子做反向映射生成对立解用于跳出局部陷阱。档案精英扰动模式从外部档案中挑出非支配解附近做局部扰动加强精细搜索。子群协作模式把种群拆成多个子群分而治之每隔几代交换信息类似岛屿模型。随机重启模式当种群多样性过低时重初始化一部分粒子让搜索重新铺开。每一种模式单独使用都很片面全局引导模式收敛快但容易挤成一团邻域模式多样性好但收敛慢随机重启模式能救急但会打断原本有效的搜索方向。如果靠人工预设一套概率分布去轮流调用往往效果还不如固定模式。所以协作两个字的关键不在模式池本身而在调度方式。RL在这里学习的不是单一映射而是时间序列上的策略前10代最好用哪种模式中间陷入停滞时该换到哪种接近结束时该如何平衡收敛和分布。它本质上是在给一个动态优化过程做在线控制。3.2 切换不是拍脑袋RL决策与平滑约束模式切换最怕的是抖——上一代还在全局引导下一代突然换成随机重启粒子刚建立起来的方向信息瞬间作废。实际设计里通常会给RL决策加两个平滑机制。第一个是最小驻留代数约束。每个模式被选中后至少要维持若干个迭代周期比如5代或10代不允许RL每隔一代就换一个动作。这个约束看似限制了RL的自由度实际效果反而是让奖励信号更干净因为每个动作的回报是在足够长的时间窗口内累计的不容易被噪声淹没。第二个是预留状态记忆。智能体的状态特征里除了当前代数指标最好把前几个动作也带进去比如上一个模式是邻域拓扑、已经连续驻留6代。这样RL才能学会判断该不该继续维持、是不是该换方向也避免它在一个状态附近反复横跳。另一个工程细节是动作选择策略。训练初期可以多用类似epsilon-greedy的探索策略到中后期则要降低探索率否则模式会在几个选项之间来回试探导致MOPSO的搜索行为长期不稳定。我在复现时发现把探索率按决策次数线性衰减比固定探索率的效果稳定得多。3.3 核心流程的伪代码级推演把方法落到流程上核心骨架可以这样描述# 多模式协作MOPSO RL调度主循环伪代码 pop initialize_population() archive initialize_archive(capacitycap) moead_style_neighbor_table build_neighbor_table(pop_size) rl_agent RLAgent(action_dimnum_modes, state_dimstate_features) mode rl_agent.select_initial_mode() for t in range(max_generations): for p in pop: p.v update_velocity_by_mode(p, mode, archive) p.x repair_and_clamp(p.x p.v) evaluate_objectives(pop) update_pbest(pop) update_archive(archive, pop) if t % decision_period 0 and t 0: # 用上一个决策周期的累积信息计算奖励 reward compute_hv_igd_delta(archive, snapshots[t - decision_period]) rl_agent.learn(state_history[t - decision_period], prev_mode, reward) state extract_state_features(pop, archive, t, max_generations) mode rl_agent.choose_action(state) min_residence_counter 0 if min_residence_counter 0: min_residence_counter - 1 return archive这里有两个关键点需要强调。一是快照机制每个决策周期开始时把档案状态和HV值存下来周期结束时才算奖励保证奖励和动作严格对应。二是可行性修复无人机航迹的路径点不是任意坐标都能飞越界点、撞威胁区的点、转弯曲率过大的点都要在位置更新后立即修复不能全丢给目标函数做罚函数否则粒子群很难形成有效的飞行走廊。这个细节关系到后面所有实验能否在真实约束下跑出有意义的结果。4. 从标准测试函数到UAV场景实验设计的门道4.1 测试函数与对比算法的选择逻辑这类论文的实验部分通常分两层标准测试函数和具体应用场景。标准测试函数的作用是证明算法在各类Pareto前沿形状下都稳定。ZDT系列是二维目标经典ZDT1前沿连续凸、ZDT4充满局部极值陷阱、ZDT6前沿非均匀分布且难度较大每个都戳中MOPSO的某个软肋。DTLZ系列则把目标维度往上推能考验算法在高维目标下的档案维护和Leader选择能力。对比算法的选择也很有意思。NSGA-II是经典遗传算法的标杆MOEA/D是分解思路的代表标准MOPSO用于隔离加RL到底有没有用的变量还有近几年的若干改进群体算法验证性能先进性。注意看这类对比时一个细节是关键是否所有算法都使用了相同的函数评价次数预算。如果总评价次数一致算法之间比拼的是单位计算资源的搜索效率这才是公平的。在我自己的复现观察里RL调度的MOPSO在连续凸前沿上的收益并不大有时HV甚至略低于标准MOPSO但在ZDT4这类多峰函数和UAV场景中收益非常明显。这其实合理RL只有在环境复杂、需要按阶段调整策略的场景里才能发挥价值在简单平稳问题上调度器的开销反而成为负担。4.2 三个关键指标怎么看评估多目标优化算法有三类指标需要同时看只看单个指标很容易误判。我把它们和各自的注意点列在下面指标衡量内容复现时值得注意的地方IGD反向世代距离从真实Pareto前沿采样点到算法解集的最小距离均值衡量收敛性和覆盖性需要事先知道真实前沿测试函数好用UAV场景没有真实前沿要改用近似的参考前沿HV超体积解集与参考点围成的超体积值越大越好参考点的选取会影响绝对数值对比不同算法时必须用同一个参考点Spacing / Spread解在目标空间的分布均匀性与延展范围分布均匀不意味着延展到了整条前沿要跟IGD配合着看跑实验时最容易踩的坑是HV涨了但IGD没动。这种情况通常意味着RL在带头把解往某一段容易提升体积的地方堆分布性反而变差。论文实验真正有说服力的做法是同时报告这几种指标并做统计检验而不是只挑好看的那栏。4.3 UAV路径规划场景是怎么从概念变成可计算目标函数的应用场景部分核心是把无人机任务约束转成数学目标。通常包括几个代价分量航迹长度代价所有航段长度的总和等价于燃料消耗和任务时间的一个近似。威胁代价把雷达、防空火力区建模为已知圆心和半径的函数航迹进入威胁区越深、停留越久代价越高。协同时间代价多架无人机到达各自任务点的时刻与期望时间窗的偏差偏差越大协同效率越低。机动可行性代价相邻航段的转角超过最小转弯半径限制时产生惩罚。这几个分量天然是互相冲突的。让航迹完全绕开所有威胁区航程就可能变得很长让所有无人机严格同时到达单机的航迹自由度又会被压缩。作者团队在这种场景上验证RL-MOPSO等于用真实约束检验算法在非规则、非连续、多模态搜索空间中的表现比单纯跑测试函数更有说服力。我复现的时候一般把威胁区数量设在8-15个之间路径段控制点数量在10-15个这个量级既不至于让维度爆炸又能还原工程上的复杂度。5. 复现这项工作时的三个深坑与我的处理方式5.1 RL的训练与MOPSO的优化是两个时间尺度第一次跑通代码时我习惯性地把MOPSO的总迭代代数设得很大比如2000代然后期望RL在同一个UI界面里直接刷出漂亮的Q表。结果发现RL根本学不到东西因为MOPSO的整个生命周期只对应一条状态动作序列一次完整训练只能给几百个决策点样本少而且噪声大。这个问题需要重新理解时间尺度。RL的训练在更慢的外部循环中进行每次完整运行多目标优化任务是一个回合每个回合内部是成千上万的粒子迭代RL只在回合的某些决策点接收到数据。要让Q值收敛必须跑很多个回合每个回合之间可以改变初始种群或微调场景参数来增加数据多样性。我的处理方式是先让MOPSO在同一场景下跑多次基线记录状态分布范围再做奖励归一化和数据标准化。另外不要一上来就上太多模式——先用3个动作跑通收敛再加到6个逐步扩大动作空间。这样做的好处是RL的探索负担被控制住了Q表初期的无效尝试明显减少。5.2 模式切换太频繁会稀释种群记忆我把决策周期设为每2代一次试跑过一次结果非常差。粒子刚进入全局引导模式、正在朝档案里的leader聚拢还没形成有效加速下一代就被切到邻域模式速度被硬生生拉偏。整个种群像开车时每两秒切一次挡位噪声大、收敛慢HV曲线基本在原地抖动。后来我把最小驻留代数提到了10代并且把奖励改成驻留窗口内HV的净增量效果立刻变了。底层原因并不复杂粒子群是带惯性的搜索过程速度项的惯性w决定了它需要时间消化引导信号。过快的模式切换等于不断把粒子的速度方向重置等于变相抹掉了算法的记忆。5.3 UAV目标函数的数字化陷阱应用场景中最容易出问题的是威胁区离散化。如果威胁区在网格地图上画得太粗糙例如把半径5公里的威胁区离散成几个大格子算法会找出一种跨格子斜插的钻空子航迹人眼看着明显穿过了威胁区目标函数却认为代价为0。解决办法是提高威胁区采样密度或采用解析几何方式计算威胁代价而不是依赖像素级栅格。路径点编码也要控制。控制点太多会让粒子维度过高搜索空间膨胀同时平滑项把转角约束变得极难满足控制点太少则航迹形状不灵活无法绕出复杂威胁区组合。我在实际复现中发现10-12个控制点配三次样条插值是一个比较稳的组合。再配合不可行解优先规则做约束处理比用大权重罚函数更好——罚函数一旦权重调不好粒子会在可行域边界反复震荡。6. 这个融合思路留下的可扩展空间6.1 从固定模式池到在线策略生成这篇工作把模式池当成一个手工设计的集合模式种类、模式内部参数都是预先定好的。后续研究完全可以沿着RL不只会选模式还会生成模式参数的方向走比如让RL输出一个惯性权重w和一个引导强度lambda再结合现有模式池做细粒度控制。这样状态到动作的输出从离散变成连续训练难度上升但控制粒度也变得更细。6.2 从规划层延伸到任务分配层多无人机场景中路径规划和任务分配经常是耦合的。这篇的方法实际上提供了一个思路RL智能体在算法层做调度那么同样可以设计双层架构——上层RL决定无人机执行的任务序列下层多目标优化器生成满足时间窗的航迹。复用这篇的状态特征提炼方式很有可能把同样的框架平移到任务分配问题上。6.3 评价一项算法创新是否扎实的三个视角读这类融合论文时我习惯问三个问题第一把RL去掉只剩模式池里的所有模式轮流跑性能下降多少如果下降不多说明RL调度是装饰如果明显更差说明调度确实抓住了一些规则。第二性能增益是否来自额外计算资源对比实验如果总计算代价不一致结论就可能不成立。第三方法迁移到新场景时需要人工改多少参数如果每换一个场景都要重新调奖励、调状态特征工程价值就要打折。拿这套标准回头看这篇2022年的KBS工作它的价值在于提出了一个决策层-执行层的解耦结构让强化学习和多目标粒子群各司其职。这个结构本身对后续研究是有参考价值的而不是仅仅在性能数字上领先了一截。最后说一个我自己的操作习惯。复现这类文章时我建议你先做一次RL冻结版对照把智能体固定输出单一模式每种模式各跑几轮再跟完整RL版本对比。如果RL版的提升主要集中在前期探索阶段说明它更像一个自动调参的探索开关如果中后期HV曲线斜率仍然明显领先那说明模式调度确实在持续贡献性能。这个对照能帮你快速分清论文里的增益是结构性的还是统计性的实战中非常管用。
阅读完成 · 觉得有帮助?
咨询建站