第10章 回到目录

代码地址:https://github.com/Jichao-Zhao/MAS_CooperativeClusterMotionControl

第11章-基于邻居相关状态的多智能体非合作行为检测与隔离

  • 11.1 研究背景
  • 11.2 基于邻居相关状态的非合作行为检测
    • 11.2.1 问题描述
    • 11.2.2 非合作行为检测模型的构建
      • 引理11.1 (零点的传输阻塞定理)
        • 输入模态
        • 自由模态
      • 定理11.1
        • 傅里叶分解
      • 引理11.2 (PBH 秩判据定理)
      • 推论11.1
      • 定理11.2
      • 定理11.3
    • 11.2.3 非合作行为检测算法的设计
      • 1. 非合作信号重构算法
        • 切比雪夫不等式
    • 11.2.4 数值仿真
      • 1. 单纯的通信和达到一致
        • 注意:因为太过复杂因此暂时未采用书中给出的控制协议
      • 2. 加入领航者
      • 3. 加入非合作节点
      • 4. 加入修复算法
      • 5. 书本中的控制协议
  • 11.3 非合作行为检测信息的交互与融合
    • 11.3.1 问题描述
    • 11.3.2 检测信息的交互与融合方案
    • 11.3.3 数值仿真
  • 11.4 结论

11.1 研究背景

通过一系列模型变换,给出一种仅利用相关状态信息的非合作行为检测算法。

同样的思想。该算法通过求解线性系统方程获得节点的理论运动状态,
并将该状态与传感器获得的节点实际运动状态进行比较,
借此观测非合作行为是否存在。

局部信息交互算法

一致性通信协议


11.2 基于邻居相关状态的非合作行为检测

所用动力学模型为线性系统模型


11.2.1 问题描述

最为常用的带有故障信号的线性节点动力学模型为:
xi˙(t)=Axi(t)+Bui(t)+Bffi(t)yi(t)=Cxi(t)(11.1)\dot{x_i}(t) = A x_i(t) + B u_i(t) + \red{B_f f_i(t)} \\ y_i(t) = C x_i(t) \tag{11.1}xi​˙​(t)=Axi​(t)+Bui​(t)+Bf​fi​(t)yi​(t)=Cxi​(t)(11.1)

其标准形式为:
xˉ˙i(t)=Axˉi(t)+Bui(t)yˉi(t)=Cxˉi(t)(11.2)\dot{\bar{x}}_i(t) = A \bar{x}_i(t) + B u_i(t) \\ \bar{y}_i(t) = C \bar{x}_i(t) \tag{11.2}xˉ˙i​(t)=Axˉi​(t)+Bui​(t)yˉ​i​(t)=Cxˉi​(t)(11.2)


MAS 的非合作行为检测问题,由于系统中节点的合作或是非合作行为体现在对邻居的影响上,且执行非合作行为检测的邻居而非节点本身,即使检测出具体的故障信号 fi(t)f_i(t)fi​(t),也只能将节点隔离而无法针对具体的故障进行修复,因此考虑如下带有非合作信号的节点动力学模型:
xˉ˙i(t)=Axˉi(t)+Bui(t)yi(t)=Cxˉi(t)+ei(t)(11.3)\dot{\bar{x}}_i(t) = A \bar{x}_i(t) + B u_i(t) \\ y_i(t) = C \bar{x}_i(t) + \red{e_i(t)} \tag{11.3}xˉ˙i​(t)=Axˉi​(t)+Bui​(t)yi​(t)=Cxˉi​(t)+ei​(t)(11.3)

此模型的物理含义是:
若节点 iii 实际输出与理论输出的偏差 eie_iei​ 超过系统允许的范围,则将节点检测为非合作节点。

该模型的好处是:
可以直接分析邻居的输出而无需对邻居具体的状态信息进行观测,方法相对简单且计算量小,便于在多智能体系统中应用。


对输出分解成以下两部分:

  1. ydi(t)∈Rry_{di}(t) \in \mathbb{R}^rydi​(t)∈Rr 可以直接测量获得;
  2. yui(t)∈Rp−ry_{ui}(t) \in \mathbb{R}^{p-r}yui​(t)∈Rp−r 尽可以测量相关状态信息(即部分信息)。

矩阵 CCC 和向量 ei(t)e_i(t)ei​(t) 同样也分解。

因此,可以获得带有相关状态信息的节点动力学模型为
xˉ˙i(t)=Axˉi(t)+Bui(t)zij(t)=[ydj(t)yui(t)−yuj(t)]=[Cdxˉj(t)Cu(xˉi(t)−xˉj(t))]+[edj(t)eui(t)−euj(t)](11.4)\begin{aligned} \dot{\bar{x}}_i(t) &= A \bar{x}_i(t) + Bu_i(t) \\ \red{z_{ij}(t)} &= \left[\begin{matrix} y_{dj}(t) \\ y_{ui}(t)-y_{uj}(t) \end{matrix}\right] \\ & = \left[\begin{matrix} C_d\bar{x}_j(t) \\ C_u(\bar{x}_i(t)-\bar{x}_j(t))\end{matrix}\right] + \left[\begin{matrix} e_{dj}(t) \\ e_{ui}(t)-e_{uj}(t) \end{matrix}\right] \end{aligned} \tag{11.4}xˉ˙i​(t)zij​(t)​=Axˉi​(t)+Bui​(t)=[ydj​(t)yui​(t)−yuj​(t)​]=[Cd​xˉj​(t)Cu​(xˉi​(t)−xˉj​(t))​]+[edj​(t)eui​(t)−euj​(t)​]​(11.4)

其中,zij(t)\red{z_{ij}(t)}zij​(t) 代表节点与邻居之间的相关状态信息。


11.2.2 非合作行为检测模型的构建

引理11.1 (零点的传输阻塞定理)
输入模态

输入模态

自由模态

自由模态


定理11.1

傅里叶分解

傅里叶分解


由定理 11.1 可知,fi(t)≡0⇒ei(t)≡0f_i(t)\equiv 0 \Rightarrow e_i(t)\equiv0fi​(t)≡0⇒ei​(t)≡0 成立,
但 ei(t)≡0⇒fi(t)≡0e_i(t)\equiv0 \Rightarrow f_i(t)\equiv 0ei​(t)≡0⇒fi​(t)≡0 不一定成立。

模型(11.3)与(11.1)在用来检测是否有故障信号存在时时等价的。
两者最主要区别是
模型(11.1)可以用来确定故障的具体形式,如位置、大小、种类等;
模型(11.3)若用来执行故障检测任务,则只能确认故障是否存在,但若执行非合作行为检测,则可以排除一些不必要的误检情况,且计算量大大减少。


相关状态信息的引入对系统可观性的影响。

引理11.2 (PBH 秩判据定理)

推论11.1

对于式(11.4)所示含有相关状态信息的节点动力学模型,考虑如下同时包含节点与其邻居节点模型的扩展节点动力学模型:
x^˙i(t)=A^x^i(t)+B^u^i(t)ψ^i(t)=C^x^i(t)+e^i(t)(11.12)\dot{\hat{x}}_i(t) = \hat{A} \hat{x}_i(t) + \hat{B} \hat{u}_i(t) \\ \hat{\psi}_i(t) = \hat{C} \hat{x}_i(t) + \hat{e}_i(t) \tag{11.12}x^˙i​(t)=A^x^i​(t)+B^u^i​(t)ψ^​i​(t)=C^x^i​(t)+e^i​(t)(11.12)

其中,
x^i=Col(xˉi,xˉi1,⋯,xˉini),i1,⋯,ini∈Ni\hat{x}_i = \text{Col}(\bar{x}_i, \bar{x}_{i_1}, \cdots, \bar{x}_{i_{n_i}}), \quad i_1,\cdots,i_{n_i} \in N_ix^i​=Col(xˉi​,xˉi1​​,⋯,xˉini​​​),i1​,⋯,ini​​∈Ni​
u^i=Col(uˉi,uˉi1,⋯,uˉini)\hat{u}_i = \text{Col}(\bar{u}_i, \bar{u}_{i_1}, \cdots, \bar{u}_{i_{n_i}})u^i​=Col(uˉi​,uˉi1​​,⋯,uˉini​​​)
ψ^i=Col(ydi,ydi1,⋯,ydini,yui−yui1,⋯,yui−yuini)\hat{\psi}_i = \text{Col}(y_{di} , y_{di_1}, \cdots, y_{di_{n_i}}, y_{ui}-y_{ui_1}, \cdots, y_{ui}-y_{ui_{n_i}})ψ^​i​=Col(ydi​,ydi1​​,⋯,ydini​​​,yui​−yui1​​,⋯,yui​−yuini​​​)
e^i=Col(edi,edi1,⋯,edini,eui−eui1,⋯,eui−euini)\hat{e}_i = \text{Col}(e_{di}, e_{di_1}, \cdots, e_{di_{n_i}}, e_{ui}-e_{ui_1}, \cdots, e_{ui}-e_{ui_{n_i}})e^i​=Col(edi​,edi1​​,⋯,edini​​​,eui​−eui1​​,⋯,eui​−euini​​​)
A^=Ini+1⊗A,B^=ini+1⊗B\hat{A} = I_{n_i+1} \otimes A, \quad \hat{B}=i_{n_i+1}\otimes BA^=Ini​+1​⊗A,B^=ini​+1​⊗B
C^=[Ini+1⊗CdH⊗Cu],H=[1ni,−Ini]\hat{C} = \left[\begin{matrix} I_{n_i+1}\otimes C_d \\ H\otimes C_u \end{matrix}\right],\quad H=\left[\begin{matrix} 1_{n_i}, & -I_{n_i} \end{matrix}\right]C^=[Ini​+1​⊗Cd​H⊗Cu​​],H=[1ni​​,​−Ini​​​]


定理11.2

在扩展节点动力学模型(11.12)中,系统(C^,A^\hat{C}, \hat{A}C^,A^)可观当且仅当系统(Cd,AC_d, ACd​,A)可观。

由定理11.2可知,相关状态引入后对系统可观性的影响相当于这条信息不存在,若节点间的信息交互完全基于相关状态信息,则系统必定不可观。


虽然在模型(11.3)中非合作信号直接作用于输出,但要获得邻居的理论输出仍需借助对状态的观测。
由此,本章针对式(11.12)给出一系列模型变换,分解出其可观测子空间,并借助新的可观测模型完成非合作行为检测算法的设计。

定义如下模型变换:
x^i0(t)=Tsx^i(t)u^i0(t)=Tcu^i(t)ψ^i0(t)=Trψ^i(t)(11.18)\hat{x}_i^0(t) = T_s \hat{x}_i(t) \\ \hat{u}_i^0(t) = T_c \hat{u}_i(t) \\ \hat{\psi}_i^0(t) = T_r \hat{\psi}_i(t) \tag{11.18}x^i0​(t)=Ts​x^i​(t)u^i0​(t)=Tc​u^i​(t)ψ^​i0​(t)=Tr​ψ^​i​(t)(11.18)

其中,
Ts=T_s = Ts​=

Tc=T_c = Tc​=

Tr=T_r = Tr​=


将变换 TsT_sTs​、TcT_cTc​、TrT_rTr​ 应用至模型(11.12)中可得
x^i0(t)=ψ^i0(t)=(11.19)\hat{x}_i^0(t) = \\ \hat{\psi}_i^0(t) = \tag{11.19}x^i0​(t)=ψ^​i0​(t)=(11.19)

其中,
TsA^Ts−1=T_s\hat{A}T_s^{-1} =Ts​A^Ts−1​=


从模型(11.19)中分离出系统的可观测子空间为
非合作行为检测模型式(11.20):
x~˙i(t)=A~x~i(t)+B~u~i(t)ψ~i(t)=C~x~i(t)+e~i(t)(11.20)\dot{\tilde{x}}_i(t) = \tilde{A} \tilde{x}_i(t) + \tilde{B} \tilde{u}_i(t) \\ \tilde{\psi}_i(t) = \tilde{C} \tilde{x}_i(t) + \tilde{e}_i(t) \tag{11.20}x~˙i​(t)=A~x~i​(t)+B~u~i​(t)ψ~​i​(t)=C~x~i​(t)+e~i​(t)(11.20)

其中,
x~i=Col(xˉi−xˉi1,⋯,xˉi−xˉini)\tilde{x}_i = \text{Col} (\bar{x}_i-\bar{x}_{i_1}, \cdots, \bar{x}_i-\bar{x}_{i_{n_i}})x~i​=Col(xˉi​−xˉi1​​,⋯,xˉi​−xˉini​​​);
u~i=Col(ui−ui1,⋯,ui−uini)\tilde{u}_i = \text{Col} (u_i-u_{i_1}, \cdots, u_i-u_{i_{n_i}})u~i​=Col(ui​−ui1​​,⋯,ui​−uini​​​);
ψ~i=Col(ydi−ydi1,⋯,ydi−ydini,yui−yui1,⋯,yui−yuini)\tilde{\psi}_i = \text{Col} (y_{di}-y_{di_1}, \cdots, y_{di}-y_{di_{n_i}}, y_{ui}-y_{ui_1}, \cdots, y_{ui}-y_{ui_{n_i}})ψ~​i​=Col(ydi​−ydi1​​,⋯,ydi​−ydini​​​,yui​−yui1​​,⋯,yui​−yuini​​​);
e~i=Col(edi−edi1,⋯,edi−edini,eui−eui1,⋯,eui−euini)\tilde{e}_i = \text{Col} (e_{di}-e_{di_1}, \cdots, e_{di}-e_{di_{n_i}}, e_{ui}-e_{ui_1}, \cdots, e_{ui}-e_{ui_{n_i}})e~i​=Col(edi​−edi1​​,⋯,edi​−edini​​​,eui​−eui1​​,⋯,eui​−euini​​​);
A~=Ini⊗A,B~=Ini⊗B,C~=[Ini⊗CdIni⊗Cu]\tilde{A} = I_{n_i} \otimes A, \quad \tilde{B} = I_{n_i} \otimes B,\quad \tilde{C} = \left[ \begin{matrix} I_{n_i}\otimes C_d \\ I_{n_i}\otimes C_u \end{matrix} \right]A~=Ini​​⊗A,B~=Ini​​⊗B,C~=[Ini​​⊗Cd​Ini​​⊗Cu​​]


定理11.3

在扩展动力学模型(11.20)中,系统(C~,A~\tilde{C}, \tilde{A}C~,A~)完全可观。


经过上述一系列模型变换,最终得到节点 iii 的非合作行为检测模型为式(11.20)。

该模型不受节点间的相关状态信息影响,且本身具有分布式特性,可应用于系统中的每个节点,实时完成对非合作节点的检测。


11.2.3 非合作行为检测算法的设计

1. 非合作信号重构算法

模型(11.20)的标准形式可写成
x~˙i(t)=A~x~i(t)+B~u~i(t)ψˉi(t)=C~x~i(t)(11.22)\dot{\tilde{x}}_i(t) = \tilde{A} \tilde{x}_i(t) + \tilde{B} \tilde{u}_i(t) \\ \bar{\psi}_i(t) = \tilde{C} \tilde{x}_i(t) \tag{11.22}x~˙i​(t)=A~x~i​(t)+B~u~i​(t)ψˉ​i​(t)=C~x~i​(t)(11.22)


对于连续的非合作行为检测算法,x~i(t0)=0\tilde{x}_i(t_0)=0x~i​(t0​)=0 可直接应用;
但若检测算法是周期性的,或是事件触发的,则需要一个状态观测器来观测算法起始时系统的状态。

状态观测器


首先构造用于状态观测的系统模型:
x~˙i(t)=A~x~i(t)+(11.26)\dot{\tilde{x}}_i(t) = \tilde{A} \tilde{x}_i(t) + \tag{11.26}x~˙i​(t)=A~x~i​(t)+(11.26)

针对式(11.26)设计一个未知输入观测器,结构为
z˙i(t)=Fzi(t)+TB~u~i(t)+Kψ~i(t)x~^i(t)=zi(t)+Hψ~i(t)(11.27)\dot{z}_i(t) = F z_i(t) + T \tilde{B} \tilde{u}_i(t) + K \tilde{\psi}_i(t) \\ \hat{\tilde{x}}_i(t) = z_i(t) + H \tilde{\psi}_i(t) \tag{11.27}z˙i​(t)=Fzi​(t)+TB~u~i​(t)+Kψ~​i​(t)x~^i​(t)=zi​(t)+Hψ~​i​(t)(11.27)


切比雪夫不等式

切比雪夫不等式
切比雪夫定理切比雪夫不等式的提出 19世纪俄国数学家切比雪夫研究统计规律中,论证并用标准差表达了一个不等式,这个不等式具有普遍的意义,被称作切比雪夫定理,其大意是: 任意一个数据集中,位于其平均数m个标准差范围内的比例(或部分)总是至少为1-1/m 2,其中m为大于1的任意正数。
定理:
设随机变量 XXX 具有数学期望 E(X)=μE(X)=\muE(X)=μ,方差 D(X)=σ2D(X)=\sigma^2D(X)=σ2 则对任意正数 ε\varepsilonε,不等式 P{∣X−μ∣≥ε}≤σ2ε2P\{|X-\mu| \ge \varepsilon\} \le \frac{\sigma^2}{\varepsilon^2}P{∣X−μ∣≥ε}≤ε2σ2​ 或 P{∣X−μ∣<ε}≥1−σ2ε2P\{|X-\mu| < \varepsilon\} \ge 1-\frac{\sigma^2}{\varepsilon^2}P{∣X−μ∣<ε}≥1−ε2σ2​ 成立。
注意:
应用切比雪夫不等式必须满足 E(X)E(X)E(X) 和 D(X)D(X)D(X) 存在且有限这一条件。


11.2.4 数值仿真


1. 单纯的通信和达到一致
注意:因为太过复杂因此暂时未采用书中给出的控制协议
% 仿真实验clear;
clc;PX0 = [  1,   1,   7,   4,   4,   6,   7,   9,   7,   9,   4,   6]';
PY0 = [  3,   6,   1,   6,   9,   2,   4,   2,   6,   9,   1,   9]';
VX0 = [1.5,  -2, 1.2, 1.5,   0,-2.4,   3, 1.8, 0.8,-0.6, 2.3, 2.5]';
VY0 = [1.5, 2.5, 1.5,-1.5,   3, 1.2,   0, 1.2,-0.4,  -3,-1.2, 2.5]';
PXt(:, 1) = PX0;
PYt(:, 1) = PY0;
VXt(:, 1) = VX0;
VYt(:, 1) = VY0;
% UXt(:, 1) = zeros(12,1);Z0 = [];A =[0 1 0 0 0 0 0 0 0 0 1 0;1 0 0 1 1 0 0 0 0 0 0 0;0 0 0 0 0 1 1 1 0 0 0 0;0 1 0 0 1 0 1 0 1 0 1 0;0 1 0 1 0 0 0 0 0 0 0 1;0 0 1 0 0 0 1 0 0 0 1 0;0 0 1 1 0 1 0 1 1 0 0 0;0 0 1 0 0 0 1 0 0 1 0 0;0 0 0 1 0 0 1 0 0 1 0 1;0 0 0 0 0 0 0 1 1 0 0 1;1 0 0 1 0 1 0 0 0 0 0 0;0 0 0 0 1 0 0 0 1 0 0 1;];D =[2 0 0 0 0 0 0 0 0 0 0 0;0 3 0 0 0 0 0 0 0 0 0 0;0 0 3 0 0 0 0 0 0 0 0 0;0 0 0 5 0 0 0 0 0 0 0 0;0 0 0 0 3 0 0 0 0 0 0 0;0 0 0 0 0 3 0 0 0 0 0 0;0 0 0 0 0 0 5 0 0 0 0 0;0 0 0 0 0 0 0 3 0 0 0 0;0 0 0 0 0 0 0 0 4 0 0 0;0 0 0 0 0 0 0 0 0 3 0 0;0 0 0 0 0 0 0 0 0 0 3 0;0 0 0 0 0 0 0 0 0 0 0 3;];L = D - A;% 时间参数
tbegin = 0;
tfinal = 20;
dT = 0.1;
T(:,1) = 0; % 计算次数
times = (tfinal - tbegin) / dT;for time = 1:1:times% 记录时间T(:, time+1) = T(:, time) + dT;% 记录状态UXt(:, time) = dT * (L * PXt(:, time) + L * VXt(:, time));VXt(:, time+1) = VXt(:, time) - UXt(:, time);PXt(:, time+1) = PXt(:, time) + dT * VXt(:, time);UYt(:, time) = dT * (L * PYt(:, time) + L * VYt(:, time));VYt(:, time+1) = VYt(:, time) - UYt(:, time);PYt(:, time+1) = PYt(:, time) + dT * VYt(:, time);endsubplot(2,2,1)
plot(T(1,:),VXt(1,:),'-', T(1,:),VXt(2,:),':', T(1,:),VXt(3,:),'--', T(1,:),VXt(4,:),'-.',...T(1,:),VXt(5,:), T(1,:),VXt(6,:), T(1,:),VXt(7,:), T(1,:),VXt(8,:),...T(1,:),VXt(9,:), T(1,:),VXt(10,:), T(1,:),VXt(11,:), T(1,:),VXt(12,:),...'linewidth',1)
grid on
legend('VX_1', 'VX_2', 'VX_3', 'VX_4', 'VX_5', 'VX_6', 'VX_7', 'VX_8', 'VX_9', 'VX_10', 'VX_11', 'VX_12');subplot(2,2,2)
plot(T(1,:),PXt(1,:),'-', T(1,:),PXt(2,:),':', T(1,:),PXt(3,:),'--', T(1,:),PXt(4,:),'-.',...T(1,:),PXt(5,:), T(1,:),PXt(6,:), T(1,:),PXt(7,:), T(1,:),PXt(8,:),...T(1,:),PXt(9,:), T(1,:),PXt(10,:), T(1,:),PXt(11,:), T(1,:),PXt(12,:),...'linewidth',1)
grid on
legend('PX_1', 'PX_2', 'PX_3', 'PX_4', 'PX_5', 'PX_6', 'PX_7', 'PX_8', 'PX_9', 'PX_10', 'PX_11', 'PX_12');subplot(2,2,3)
plot(T(1,:),VYt(1,:),'-', T(1,:),VYt(2,:),':', T(1,:),VYt(3,:),'--', T(1,:),VYt(4,:),'-.',...T(1,:),VYt(5,:), T(1,:),VYt(6,:), T(1,:),VYt(7,:), T(1,:),VYt(8,:),...T(1,:),VYt(9,:), T(1,:),VYt(10,:), T(1,:),VYt(11,:), T(1,:),VYt(12,:),...'linewidth',1)
grid on
legend('VY_1', 'VY_2', 'VY_3', 'VY_4', 'VY_5', 'VY_6', 'VY_7', 'VY_8', 'VY_9', 'VY_10', 'VY_11', 'VY_12');subplot(2,2,4)
plot(T(1,:),PYt(1,:),'-', T(1,:),PYt(2,:),':', T(1,:),PYt(3,:),'--', T(1,:),PYt(4,:),'-.',...T(1,:),PYt(5,:), T(1,:),PYt(6,:), T(1,:),PYt(7,:), T(1,:),PYt(8,:),...T(1,:),PYt(9,:), T(1,:),PYt(10,:), T(1,:),PYt(11,:), T(1,:),PYt(12,:),...'linewidth',1)
grid on
legend('PY_1', 'PY_2', 'PY_3', 'PY_4', 'PY_5', 'PY_6', 'PY_7', 'PY_8', 'PY_9', 'PY_10', 'PY_11', 'PY_12');


2. 加入领航者
for time = 1:1:times% 记录时间T(:, time+1) = T(:, time) + dT;% 记录状态UXt(:, time) = dT * (L * PXt(:, time) + L * VXt(:, time));VXt(:, time+1) = VXt(:, time) - UXt(:, time);VXt(2, time+1) = -2;    % 加入领航者PXt(:, time+1) = PXt(:, time) + dT * VXt(:, time);UYt(:, time) = dT * (L * PYt(:, time) + L * VYt(:, time));VYt(:, time+1) = VYt(:, time) - UYt(:, time);VYt(2, time+1) = 2.5;   % 加入领航者PYt(:, time+1) = PYt(:, time) + dT * VYt(:, time);end


3. 加入非合作节点
for time = 1:1:times% 记录时间T(:, time+1) = T(:, time) + dT;% 记录状态UXt(:, time) = dT * (L * PXt(:, time) + L * VXt(:, time));VXt(:, time+1) = VXt(:, time) - UXt(:, time);VXt(2, time+1) = -2;    % 加入领航者% 加入非合作行为if time >= 71EXt(7, time) = -VXt(7, time);                       % 毁坏型% EXt(7, time) = -VXt(7, time) - 0.5;               % 失控型% EXt(7, time) = -VXt(7, time) - 0.5*(rand-0.5);     % 干扰型VXt(7, time) = VXt(7, time) + EXt(7, time);endPXt(:, time+1) = PXt(:, time) + dT * VXt(:, time);UYt(:, time) = dT * (L * PYt(:, time) + L * VYt(:, time));VYt(:, time+1) = VYt(:, time) - UYt(:, time);VYt(2, time+1) = 2.5;   % 加入领航者% 加入非合作行为if time >= 71EYt(7, time) = -VYt(7, time);                       % 毁坏型% EYt(7, time) = -VYt(7, time) - 0.5;               % 失控型% EYt(7, time) = -VYt(7, time) - 0.5*(rand-0.5);     % 干扰型VYt(7, time) = VYt(7, time) + EYt(7, time);endPYt(:, time+1) = PYt(:, time) + dT * VYt(:, time);Vt (:, time+1) = sqrt( (VXt(:,time+1)).^2 + (VYt(:,time+1)).^2 );end

毁坏型:

失控型:

干扰型:


4. 加入修复算法

5. 书本中的控制协议


2021-03-17 Update:

如书中所示,t=7st=7st=7s 时,系统其他节点基本发生一致。
但同时,非合作节点 i=7i=7i=7 开始出现毁坏型非合作行为。


11.3 非合作行为检测信息的交互与融合

11.3.1 问题描述

11.3.2 检测信息的交互与融合方案

11.3.3 数值仿真

11.4 结论

自娱一下,抽象派画师作画:

【控制】《多智能体系统的协同群集运动控制》陈杰老师-第11章-基于邻居相关状态的多智能体非合作行为检测与隔离相关推荐

  1. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第3章-基于代数连通度估计的多智能体系统群集运动控制

    第2章 回到目录 第4章 第3章-基于代数连通度估计的多智能体系统群集运动控制 3.1 研究背景 3.2 问题描述 系统方程 (3.1) 3.3 控制律设计 控制协议 (3.7) 3.4 λ2\lam ...

  2. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-目录

    无 回到目录 第1章 跳转链接 章节 跳转链接 第1章 绪论 第2章 连通性保持条件下多智能体系统群集运动控制 第3章 基于代数连通度估计的多智能体系统群集运动控制 第4章 连通性保持下多移动机器人群 ...

  3. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第10章-一阶多智能体系统非合作行为检测与隔离

    第9章 回到目录 第11章 第10章-一阶多智能体系统非合作行为检测与隔离 10.1 研究背景 流言算法 10.2 系统模型及非合作行为建模 10.2.1 系统建模 10.2.2 非合作行为定义 非合 ...

  4. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第1章-绪论

    无 回到目录 第2章 第1章-绪论 1.1 多智能体分布式群集运动控制 Boids 模型 人工势场函数 极值映射 非光滑李亚普诺夫稳定性理论 势场力 代数连通度 谱特征 几何约束法 谱图理论法 次梯度 ...

  5. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第5章-基于骨干网络的多智能体系统群集运动与避障控制

    第4章 回到目录 第6章 第5章-基于骨干网络的多智能体系统群集运动与避障控制 5.1 研究背景 5.2 预备知识 5.2.1 问题描述 运动方程 (5.1) 5.2.2 流体力学基础 可压缩性 黏性 ...

  6. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第2章-连通性保持条件下多智能体系统群集运动控制

    第1章 回到目录 第3章 第2章-连通性保持条件下多智能体系统群集运动控制 2.1 研究背景 2.2 问题描述 2.3 领航跟随群集运动控制律 控制协议 (2.2) 符号函数 sgn(·) 人工势场函 ...

  7. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第7章-Brunovsky 型高阶非线性多智能体系统一致性控制

    第6章 回到目录 第8章 第7章-Brunovsky 型高阶非线性多智能体系统一致性控制 7.1 研究背景 Brunovsky 7.2 问题描述 7.3 分布式控制器设计 自适应律 (7.30) 控制 ...

  8. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第6章-参数不确定的高阶非线性多智能体系统一致性控制

    第5章 回到目录 第7章 第6章-参数不确定的高阶非线性多智能体系统一致性控制 6.1 研究背景 Backstepping 方法 Barbalat 引理 6.2 问题描述 控制协议 (6.1) (6. ...

  9. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第4章-连通性保持下多移动机器人群集控制

    第3章 回到目录 第5章 第4章-连通性保持下多移动机器人群集控制 4.1 研究背景 4.2 问题描述 系统方程 (4.1) 4.3 群集运动控制器设计 4.3.1 不带有领航者的群集运动控制 加权镜 ...

最新文章

  1. SpringBoot02_构建rest工程完成第一个controller类
  2. 添加与编辑共用一个jsp页面时,控制按钮的显示与隐藏
  3. mysql更新视图的时候有时候可以不满足视图条件的值也能更新成功
  4. CodeForces - 1343D Constant Palindrome Sum(思维+差分数组)
  5. 判断溢出(ybtoj-字符串)
  6. python打开火狐浏览器打不开网页_PHP让指定网页只能在微信内置浏览器打开 附代码...
  7. OpenFileDialog 打开文件对话框
  8. 一步步编写操作系统 67 系统调用的实现1-2 68
  9. Vue-cli(四) 项目中引入Axios
  10. Django的MEDIA_ROOT和STATIC_ROOT
  11. CentOS7.5安装MySql8.0
  12. 精品网站 mysql,【网址导航系统】基于PHP+MYSQL开发的开源网站分类目录管理系统...
  13. 【Python实践-6】将不规范的英文名字,变为首字母大写,其他小写的规范名字...
  14. http请求被挂起 cancled 原因
  15. 并发编程(十一)—— Java 线程池 实现原理与源码深度解析(一)
  16. 翻译:Swift中的Operations和OperationQueues入门
  17. python table_python学习之HTML-table标签
  18. 屏幕录制专家linux版,录屏大师免费版下载-录屏大师全新下载V3.5.3-Linux公社
  19. AutoCAD 命令定义
  20. 关于word粘贴图片显示不全的解决办法

热门文章

  1. Git远程推送和抓取分支
  2. python-15:装饰函数之一
  3. php xml 互相转换
  4. mysql数据库一些可能会用到的命令
  5. lazyload延迟加载组件
  6. 后缀树和后缀数组的一些资料收集
  7. 自己去年用intraweb写的模仿动网论坛的原程序,用的是动网论坛的数据库
  8. UA MATH575B 数值分析下III 图像恢复
  9. css hack 学习总结
  10. OpenGL程序演示