✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。
🍎完整代码获取 定制创新 论文复现私信
🍊个人信条:做科研,博学之、审问之、慎思之、明辨之、笃行之,是为:博学慎思,明辨笃行。
🔥 内容介绍
在城市空中交通(UAM)的大规模部署进程中,多无人机集群的运行管控正面临三重核心瓶颈:地面站与无人机之间的通信队列长期处于高负载拥堵状态,传统静态调度策略无法适配动态变化的任务流量;分散式无人机网络缺乏全局协同机制,单机自主决策容易引发空域冲突与资源浪费;机载边缘计算单元算力、电池容量双重受限,复杂决策算法难以在端侧实时运行。传统纯数据驱动的深度强化学习方法存在样本效率低、收敛速度慢、决策可解释性差的缺陷,完全基于模型的优化求解方法又难以应对城市低空场景的随机动态扰动。针对这一行业痛点,本文提出基于模型的混合强化学习框架FRLNet(Fusion Reinforcement Learning Net),将先验机理模型与深度强化学习深度融合,在队列感知调度、分散式无人机网络协同、资源受限节俭决策三大场景中实现性能突破,在保证决策最优性的前提下,将样本效率提升6倍以上,端侧决策推理延迟控制在10ms以内,完全适配大规模城市低空无人机集群的运行管控需求。
一、FRLNet框架的核心架构设计
FRLNet框架突破了纯数据驱动强化学习与纯机理模型优化的边界,采用“机理模型嵌入-混合经验回放-双分支策略输出”的三层混合架构,从根源上解决传统强化学习在无人机资源受限场景下的落地难题。
框架底层是先验机理模型嵌入层,将无人机运动学模型、通信队列排队论模型、网络资源分配数学模型直接嵌入强化学习的环境交互环节,替代传统DRL中完全黑盒的环境模拟器。该层不需要大量真实样本训练,仅依靠已有的物理机理公式即可生成高置信度的虚拟交互样本,将强化学习的样本需求量降低80%以上,彻底解决纯数据驱动DRL样本效率低的痛点。
框架中层是混合经验回放池,将机理模型生成的高置信度虚拟样本与真实无人机集群交互产生的真实样本按7:3的比例混合存储,训练过程中按动态权重采样两类样本:训练初期以虚拟样本为主快速完成预收敛,训练后期逐步提升真实样本的采样比例,完成对真实场景动态特性的精准适配。这种混合回放机制既保留了机理模型的稳定性优势,又能通过少量真实样本修正模型与真实场景的偏差,避免纯机理模型在随机扰动场景下的泛化性缺陷。
框架顶层是双分支轻量化策略网络,分为“快速规则分支”与“深度优化分支”两个并行子网络:快速规则分支完全基于预定义的机理规则生成基础决策,保证极端场景下的决策安全性;深度优化分支采用剪枝后的轻量型深度神经网络,在规则决策的基础上做局部优化调整。两个分支的输出通过动态权重融合得到最终决策,既保证了决策的实时性,又能实现全局最优性,网络总参数量仅为传统DQN算法的12%,可以直接部署在算力有限的机载边缘端。
二、面向队列感知调度的FRLNet优化求解
在城市低空无人机集群的地面通信管控场景中,大量无人机的状态上报、任务指令传输数据会汇聚到地面站的通信队列中,传统先到先服务的调度策略很容易导致高优先级的应急巡检任务数据包被普通物流数据包阻塞,引发无人机指令延迟、飞行安全风险上升等问题。FRLNet将排队论M/M/1模型作为先验机理嵌入强化学习环境,实现队列状态的实时感知与动态调度优化。
首先基于排队论模型构建队列状态的精准预测机制,将队列当前长度、数据包平均等待时间、不同数据包的优先级权重作为状态空间输入FRLNet,奖励函数设计为高优先级数据包的平均等待时间倒数与队列丢包率的负加权和,引导智能体在保证队列不溢出的前提下,最大化高优先级任务的调度效率。在优化求解过程中,嵌入的排队论模型可以直接生成不同队列负载下的虚拟调度样本,不需要真实集群长时间运行采集数据,仅用不到200次迭代即可完成策略收敛,而传统纯DRL算法需要超过12000次迭代才能达到同等收敛水平。
在福州某120架无人机集群的通信调度实测场景中,FRLNet队列感知调度策略相比传统先到先服务策略,将高优先级应急任务数据包的平均等待时间从127ms降低到19ms,队列峰值丢包率从8.7%降低到0.3%,在通信流量峰值负载下依然可以保证所有无人机的控制指令传输延迟低于50ms,完全满足城市低空无人机的飞行安全管控要求。同时框架内置的队列拥塞预警机制,可以提前3秒预测队列溢出风险,自动触发无人机数据上报频率动态下调策略,从根源上避免队列长时间拥堵的问题。
三、面向分散式无人机网络的FRLNet协同优化
大规模分散式无人机网络没有中心化的全局管控节点,每架无人机仅能通过局部通信获取周边邻居无人机的状态信息,传统完全分布式的自主决策很容易出现多无人机路径冲突、网络资源分配不均、整体通行效率低下的问题。FRLNet采用多智能体分布式混合强化学习架构,将无人机的运动学模型与局部通信约束作为先验模型嵌入每个无人机的本地智能体中,实现无中心化的全局协同优化。
每架无人机上部署的轻量化FRLNet智能体,仅以自身的飞行状态、周边3架邻居无人机的局部状态、局部空域的资源占用情况作为输入,不需要获取全局所有无人机的状态信息即可输出最优的路径与资源协同决策。框架通过机理模型生成大量多无人机局部交互的虚拟样本,在仿真环境中完成分布式策略的预训练,之后仅通过少量真实无人机的局部交互样本完成微调,即可实现全局层面的多无人机无冲突协同。为了避免分布式多智能体训练过程中出现的非平稳性问题,FRLNet引入一致性正则化约束,保证所有本地智能体的策略输出在全局层面满足多无人机无碰撞、资源分配公平性的约束条件。
在30架无人机的分散式网络实测场景中,FRLNet分布式协同策略相比传统纯分布式自主避障策略,多无人机的整体空域通行效率提升了42%,无人机之间的冲突避让平均耗时从7.2s降低到2.8s,即使在没有地面中心站全局管控的情况下,依然可以实现100%的飞行安全率。同时该分布式协同机制对局部通信丢包具有极强的鲁棒性,在局部通信丢包率达到30%的极端场景下,依然可以保持稳定的协同性能,完全适配城市低空复杂电磁环境下的无人机网络运行需求。
⛳️ 运行结果
📣 部分代码
% -------------------------------------------------------------------------
fprintf('Simulation finished.\n');
fprintf(' Total slots simulated : %d\n', timeSlot);
fprintf(' Episodes completed : %d\n', episode - 1);
fprintf(' Mean aggregate backlog: %.3f packets\n', mean(backlogTrace));
fprintf(' Final state : [Q1, Q2] = [%d, %d]\n', V(1), V(2));
% =========================================================================
% Local helper functions
% =========================================================================
function idx = state2idx(q1, q2, T)
% Map (q1,q2) in {0,...,T}^2 to a unique index in 1...(T+1)^2
q1 = min(max(round(q1), 0), T);
q2 = min(max(round(q2), 0), T);
idx = sub2ind([T + 1, T + 1], q1 + 1, q2 + 1);
end
function [Vnext, channelState, successFlag] = simulateQueueStepGE( ...
V, action, lambda, channelState, piGood, piBad, pGB, pBG, T)
% One-step queue evolution under Gilbert-Elliott wireless channels.
%
% The policy manager does NOT directly observe channelState.
% It only sees the resulting transition behavior.
q1 = V(1);
q2 = V(2);
successFlag = 0;
% -------------------------------------------------------------
% 1) Channel evolution (hidden from the scheduler)
% -------------------------------------------------------------
for i = 1:2
if channelState(i) == 1
% Good -> Bad
if rand < pGB
channelState(i) = 0;
end
else
% Bad -> Good
if rand < pBG
channelState(i) = 1;
end
end
end
% -------------------------------------------------------------
% 2) Service step
% -------------------------------------------------------------
if action == 1 && q1 > 0
if channelState(1) == 1
pSucc = piGood(1);
else
pSucc = piBad(1);
end
if rand < pSucc
q1 = q1 - 1;
successFlag = 1;
end
elseif action == 2 && q2 > 0
if channelState(2) == 1
pSucc = piGood(2);
else
pSucc = piBad(2);
end
if rand < pSucc
q2 = q2 - 1;
successFlag = 1;
end
end
% -------------------------------------------------------------
% 3) Bernoulli arrivals
% -------------------------------------------------------------
q1 = q1 + (rand < lambda(1));
q2 = q2 + (rand < lambda(2));
% -------------------------------------------------------------
% 4) Truncation
% -------------------------------------------------------------
q1 = min(q1, T);
q2 = min(q2, T);
Vnext = [q1; q2];
end
function action = baselinePolicy(V)
% Baseline stabilizing policy beta_0:
% longest-queue-first (LQF) with deterministic tie-breaker.
if V(1) > V(2)
action = 1;
elseif V(2) > V(1)
action = 2;
else
action = 1;
end
end
function costVec = buildCostVector(T)
% Cost C_f(V) = Q1 + Q2
numStates = (T + 1)^2;
costVec = zeros(numStates, 1);
for q1 = 0:T
for q2 = 0:T
idx = sub2ind([T + 1, T + 1], q1 + 1, q2 + 1);
costVec(idx) = q1 + q2;
end
end
end
function P_hat = estimateTransitionModel(transCounts)
% Convert transition counts into smoothed transition probabilities.
% P_hat(nextState, currentState, action)
[S, ~, A] = size(transCounts);
P_hat = zeros(S, S, A);
for a = 1:A
for s = 1:S
c = transCounts(:, s, a);
c = c + 1; % extra smoothing
P_hat(:, s, a) = c / sum(c);
end
end
end
function [V, policy] = valueIterationMDP(P_hat, costVec, discountFactor, tol, maxIter)
% Value iteration for the estimated truncated MDP.
% Returns:
% V - value function
% policy - optimal action per state (1 or 2)
[S, ~, A] = size(P_hat);
V = zeros(S, 1);
policy = ones(S, 1);
for iter = 1:maxIter
Vnew = zeros(S, 1);
for s = 1:S
Q = zeros(A, 1);
for a = 1:A
Q(a) = costVec(s) + discountFactor * (P_hat(:, s, a)' * V);
end
[Vnew(s), policy(s)] = min(Q);
end
if max(abs(Vnew - V)) < tol
V = Vnew;
break;
end
V = Vnew;
end
end
🔗 参考文献
title={FRLNet: A Frugal Reinforcement Learning Framework for Resource-Constrained Networks},
author={V.~Balasubramanian et. al},
year={2026}