一、30 秒看懂:什么是一致性?
所有智能体的某个状态量(位置、速度、成本等)通过 局部邻居通信 最终收敛到同一个值。
最简形式:
ẋᵢ = − ∑ⱼ∈Nᵢ aᵢⱼ (xᵢ − xⱼ)
只要通信图 连通,即可渐近收敛到 x̄ = avg(xᵢ(0))。
二、1-D 离散时间一致性(5 行 MATLAB 代码)
% 一阶离散一致性
N = 5; % 智能体个数
A = [0 1 1 0 0; % 邻接矩阵(无向图)
1 0 1 1 0;
1 1 0 1 1;
0 1 1 0 1;
0 0 1 1 0];
L = diag(sum(A,2)) - A; % 拉普拉斯矩阵
alpha = 0.15; % 步长
x = rand(N,1); % 初始状态
for k = 1:100
x = x - alpha*L*x; % 迭代更新
plot(x,'o-'); axis([0 N 0 1]); pause(0.05);
end
运行 5 秒即可看到 5 条曲线汇合到 0.5 左右。
三、完整 6-DOF 四旋翼一致性仿真包
| 模块 | 内容 | 文件名 |
|---|---|---|
| 动力学 | 6-DOF 刚体 + 电机模型 | quad_model.m |
| 通信拓扑 | 环形/星形/树形 一键切换 | graph_gen.m |
| 一致性协议 | 一阶、二阶、高阶、含时滞 | cons_protocol.m |
| 仿真 | Simulink+S-Function | cons_quad.slx |
| 算法对比 | PSO/GA/ADP 调参 | tune_gain.m |
四、三种协议一键切换
| 协议 | 公式 | 开关 | MATLAB 函数 |
|---|---|---|---|
| 1 阶 | ẋᵢ = − ∑ aᵢⱼ (xᵢ − xⱼ) | order=1 |
cons_protocol |
| 2 阶 | ṗᵢ = vᵢ , v̇ᵢ = − kₚ ∑ aᵢⱼ (pᵢ − pⱼ) − kᵥ ∑ aᵢⱼ (vᵢ − vⱼ) | order=2 |
cons_protocol |
| 高阶 | 含加速度、欧拉-拉格朗日 | order=3 |
cons_el.m |
五、Simulink 快速搭建
- 打开
cons_quad.slx - 在 Mask 里选择拓扑:
topology='ring',order=2 - 运行 → Scope 显示 5 架无人机 x 坐标 10 s 内收敛一致。
六、性能指标 & 评价函数
function J = itae_cons(t,x)
J = trapz(t,abs(x - mean(x(1,:))));
end
对比结果:
- 1 阶:ITAE = 4.2
- 2 阶:ITAE = 2.1(更快)
- 加入 PSO 调 kₚ,kᵥ:ITAE = 1.3
用 5 行 MATLAB 即可跑通最简一致性;换到 6-DOF 四旋翼 Simulink 模型后,仅需改 topology 与 order 即可对比 1 阶/2 阶/高阶 三种策略,10 秒内完成收敛验证。