【多智能体协同】线性多智能体分布式包容控制(Containment Control,李忠奎 2011 经典文献复现)MATLAB 代码

发布时间:2026/10/28 14:42:16
【多智能体协同】线性多智能体分布式包容控制(Containment Control,李忠奎 2011 经典文献复现)MATLAB 代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

👇 关注我领取海量matlab电子书和数学建模资料

🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。

🔥 内容介绍

大家好,今天给大家带来一篇经典协同控制论文的完整 MATLAB 复现代码:Zhongkui Li 2011 年发表的带一般线性动力学、多领导者的多智能体分布式包容控制。包容控制是协同控制里非常重要的分支,区别于一致性(consensus)、编队控制(formation),它的目标是:存在多个领导者,跟随者最终收敛到所有领导者张成的凸包内部,也就是被领导者 “包围”。

这套代码是该经典论文的算例 1:连续时间静态包容控制器。利用 LMI 求解增益矩阵,结合图拉普拉斯矩阵构建分布式协议,使用 ode45 求解闭环系统微分方程,绘制状态收敛曲线。不管是做硕士开题、课程大作业、论文基线对比,这篇都是绕不开的经典文献。

很多刚入门协同控制的同学容易混淆几个概念:

  • 一致性:所有智能体状态趋于同一个值,一般单领导者;

  • 编队控制:所有智能体保持固定相对位置;

  • 包容控制

    :多个领导者,跟随者收敛到领导者构成的凸包之中,典型场景:无人车队围控、无人机集群包围护送、机器人围捕、移动传感器区域覆盖。


一、项目整体概述

文献背景

论文标题:Distributed containment control of multi-agent systems with general linear dynamics in the presence of multiple leaders 作者:Zhongkui Li,2011,是包容控制领域里程碑式的工作。 这篇工作最大贡献:把包容控制从简单的一阶 / 二阶积分器智能体,推广到一般线性动力学的智能体,利用代数图论 + Lyapunov 稳定性 + LMI 给出控制器存在的充分条件,给出耦合增益的下界判据。

本代码实现:连续时间静态状态反馈包容控制器。 系统组成:

  • 智能体总数:9 个;其中3 个领导者,6 个跟随者;

  • 每个智能体是 6 维一般线性动力学:状态导数 = A 矩阵 × 状态 + B 矩阵 × 控制输入;

  • 通信拓扑分为跟随者内部耦合、跟随者到领导者的耦合;

  • 控制协议为分布式静态反馈,仅依赖邻居信息;

  • 核心步骤:LMI 求解正定矩阵 P,计算反馈增益 F;选取耦合增益 c 大于临界阈值,保证闭环稳定;ode45 仿真闭环动力学,验证跟随者收敛到领导者凸包。

✅ 核心功能清单

  1. 定义一般线性动力学矩阵 A、B;

  2. 构造分块拉普拉斯矩阵 L1、L2 以及全局通信拉普拉斯矩阵 L;

  3. 对跟随者子图拉普拉斯 L1 求特征值,计算耦合增益临界阈值 c_th;

  4. 基于 LMI 求解 Lyapunov 正定矩阵 P,进而得到状态反馈增益 F;

  5. 搭建闭环系统 ODE 方程,ode45 进行连续时间仿真;

  6. 绘图区分跟随者(蓝色虚线)、领导者(红色实线),展示各维度状态收敛特性。

⚠️ 方案特点与局限(直接用作论文创新点)

  1. 优势:理论完备,对一般线性动力学适用,不需要智能体是积分器;分布式协议,只使用邻居信息,不需要全局通信;

  2. 局限 1:静态状态反馈,依赖全部状态可测;当状态不可测时,需要设计观测器型包容控制;

  3. 局限 2:通信拓扑是固定无向图,不支持切换拓扑、时变通信;

  4. 局限 3:没有考虑通信时延、噪声、外部扰动;

  5. 局限 4:连续时间框架,不适合嵌入式数字平台直接落地,需要离散化;

  6. 局限 5:控制器设计依赖 LMI 求解,当智能体数量、状态维度变大时,LMI 计算负担上升。

这些是该经典基线的固有假设,也是后续很多改进文献的切入点:输出反馈包容、时滞包容、切换拓扑、事件触发包容、自适应包容。

二、代码逐段解析

1. 基础初始化与动力学矩阵

clc;clear;close all;global A B L1 L2A=[0 0 0 1 0 0; 0 0 0 0 1 0; 0 0 0 0 0 1; 0 0 -0.2003 -0.2003 0 0; 0 0 0.2003 0 -0.2003 0; 0 0 0 0 0 -1.6129];B=[ 0 0; 0 0; 0 0; 0.9441 0.9441; 0.9441 0.9441;-28.7079 28.7079];

A、B 是单智能体线性系统状态矩阵与输入矩阵,每个智能体 6 维状态,2 维控制输入,属于一般线性系统,不再局限于一阶、二阶积分器。

2. 通信拉普拉斯矩阵构造(包容控制最关键部分)

包容控制的拉普拉斯矩阵会做分块,这是和普通一致性最大区别。 全局拓扑分为:跟随者之间的连接、跟随者到领导者的连接,领导者之间没有通信耦合。

L1=[ 3 0 0 -1 -1 -1 ; -1 1 0 0 0 0 ; -1 -1 2 0 0 0 ; -1 0 0 2 0 0 ; 0 0 0 -1 2 0; 0 0 0 0 -1 2];L2=[0 0 0; 0 0 0; 0 0 0; 0 0 -1; 0 -1 0; -1 0 0];
  • L1:6 个跟随者构成子图的拉普拉斯矩阵;

  • L2:跟随者指向 3 个领导者的耦合矩阵; 全局拉普拉斯 L 是 9×9 矩阵,前 6 行 6 列是跟随者内部,右下角 3×3 为零(领导者没有输入,状态自主演化)。

论文给出稳定条件:耦合增益 c 必须大于等于 c_th = 1 除以 L1 最小特征值。

[V,D]=eig(L1);c_th=1/min(diag(D)); % c_th=1.2176, c>=c_th,取c=2

代码选取 c=2,满足下界条件,保证耦合部分稳定。

这里一个高频考点:包容控制要求,对于每个跟随者,都存在一条到至少一个领导者的通信路径,也就是图条件。这是保证包容收敛的图论前提。

3. LMI 求解 Lyapunov 矩阵 P 与反馈增益 F

setlmis([])P=lmivar(1,[6 1]);lmiterm([1 1 1 P],1,A','s');lmiterm([-1 1 1 0],2*B*B');lmiterm([-2 1 1 P],1,1);lmis1 = getlmis;[tmin,xfeas] = feasp(lmis1);if (tmin < 0) disp('Feasible'); P = dec2mat(lmis1,xfeas,P);else P = nan;endglobal FF=-B'*inv(P);

这是该论文的核心 LMI 条件。 针对线性系统(A,B),求解正定矩阵 P,满足: A 的转置乘 P + P 乘 A - 2 乘 P 乘 B 乘 B 的转置乘 P < 0 该不等式保证系统能构造出状态反馈增益 F,使得闭环系统稳定。 feasp 是 LMI 工具箱的可行性求解器,tmin<0 代表存在可行正定解。 得到 P 之后,反馈增益 F = 负的 B 的转置 乘以 P 的逆矩阵。

注意:这个 LMI 是论文里针对该静态协议给出的 Lyapunov 条件,不是唯一的 LMI 形式,不同包容协议 LMI 结构会变化。

4. 闭环 ODE 方程

function ydot=contain(t,x)c=2; global A B F L1 L2a11=kron(eye(6),A)+c*kron(L1,B*F);a12=c*kron(L2,B*F);a22=kron(eye(3),A);a21=zeros(18,36);ydot=[a11 a12; a21 a22]*x;end

这里用克罗内克积 kron 搭建大规模闭环系统矩阵:

  • 前 6 个跟随者:跟随者状态导数 = (单位矩阵克罗内克 A + c 乘 L1 克罗内克 B 乘 F) × 跟随者状态 + c 乘 L2 克罗内克 B 乘 F × 领导者状态

  • 后 3 个领导者:领导者状态导数 = (单位矩阵克罗内克 A) × 领导者状态,领导者不受跟随者影响,独立演化。 总状态维度:9 个智能体 × 6 维状态 = 54 维,和主脚本 x=2*rand (54,1) 对应。

5. 仿真与绘图

tspan=[0,50];x=2*rand(54,1);[t,y]=ode45(@contain,tspan,x);

仿真时长 50s,随机初始化所有智能体状态。 绘图逻辑区分:

  • i<6:跟随者,蓝色虚线;

  • i>=6:领导者,红色实线; 分别画出 x_i1、x_i2、x_i3 三个状态分量的时序曲线。 仿真结果预期:跟随者的状态最终收敛到三个领导者状态张成的凸包里面,不会超出领导者的包络范围。

三、核心理论解读:包容控制原理

1. 分布式控制协议

论文中跟随者的控制输入形式: u_i = F 乘以 邻居求和项 a_ij (x_i - x_j) a_ij 是邻接矩阵元素,协议只采集邻居智能体状态,属于分布式,不需要中心节点收集全局信息。 当邻居包含领导者时,差值项就会引入领导者的状态信息,驱动跟随者向领导者凸包内部收敛。

2. 和一致性的数学区别

一致性:所有智能体趋于同一个点,要求拉普拉斯矩阵有单零特征值; 包容控制:多个领导者,跟随者收敛到领导者凸包,L1 可逆是关键条件(论文里的核心引理)。 L1 可逆这个性质,是包容控制稳定性证明的基石,也是为什么要单独对 L1 求特征值、算临界耦合增益。

3. 稳定性证明思路(论文主线)

  1. 图条件:每个跟随者存在通往领导者的有向路径;

  2. 对跟随者误差变换,把包容问题转化为误差系统的稳定性问题;

  3. 利用 LMI 找到 Lyapunov 矩阵,构造 Lyapunov 函数;

  4. 选取足够大的耦合增益 c,保证误差系统渐近稳定;

  5. 结论:跟随者状态收敛到领导者状态的凸包。

一个非常容易踩坑的点:领导者本身状态不一定是不动的! 在这个代码里,领导者和跟随者是相同的 A,B 动力学,领导者也会按照 状态导数 = A × 状态 演化,是动态领导者包容控制,不是固定不动的静态目标点,这也是该论文的亮点之一。很多入门包容控制是领导者静止,而这篇是领导者本身也在运动。

四、仿真结果解读

运行代码之后会弹出三张图:

  1. 图 1:所有智能体第 1 维状态时序;

  2. 图 2:所有智能体第 2 维状态时序;

  3. 图 3:所有智能体第 3 维状态时序;

红色实线 = 3 个领导者;蓝色虚线 = 6 个跟随者。 我们观察收敛趋势:

  • 领导者按照自身线性动力学自主演化;

  • 跟随者曲线最终被包裹在领导者的状态曲线之间,也就是进入凸包;

  • 稳态下跟随者不会跑到领导者状态范围之外。

对照实验方案(写论文直接用)

  1. 调整耦合增益 c:c=1(小于阈值)、c=2、c=5,观察是否发散、收敛速度变化;

  2. 修改通信拓扑 L1、L2,断开某个跟随者到领导者的通路,破坏图条件,观察包容失效;

  3. 修改 A 矩阵,换成不稳定开环动力学,验证 LMI 依然可以镇定闭环;

  4. 增加领导者数量、跟随者数量,拓展更大规模集群。

五、拓展方向与论文创新点(直接使用)

  1. 输出反馈包容:当前代码是全状态反馈,假设状态全部可测;设计状态观测器,只利用输出信息;

  2. 时滞包容:引入通信时延,构造时滞依赖 LMI;

  3. 事件触发包容:减少通信频次,降低带宽消耗;

  4. 切换拓扑包容:通信链路随时间变化;

  5. 自适应包容:参数未知情况下,自适应控制;

  6. 有限时间包容:把渐近收敛改成有限时间收敛;

  7. 离散时间包容:把连续协议离散化,适配嵌入式控制器;

  8. 抗扰动 H 无穷包容:加入外部扰动,优化扰动抑制性能。

六、写在最后

Zhongkui Li 2011 这篇文章,是包容控制方向的标杆工作。在它之前,大量包容控制工作局限于一阶、二阶积分器智能体;这篇把框架推广到任意一般线性动力学,基于 LMI + 图论给出严谨设计方法,后续几乎所有包容控制改进论文,都会拿它作为对比基线。

这套复现代码完整还原了算例,包含图矩阵构造、LMI 控制器求解、克罗内克积搭建大规模系统、ODE 仿真、状态可视化整条链路。对于协同控制方向的同学来说,吃透这份代码,能同时掌握三块内容:代数图论在多智能体中的应用、LMI 线性矩阵不等式、克罗内克积处理大规模耦合系统。

区分清楚包容控制、一致性、编队控制,是审稿人非常看重的基础概念。很多新手写论文容易混淆三者,而这个经典复现刚好可以帮你建立清晰认知。

⛳️ 运行结果

🍅往期回顾扫扫下方二维码