多智能体系统协同一致性问题(三)

        上两篇博客讨论的是基于无领航一致性的多智能体系统协同控制,从本文开始接下来的三篇将讨论领航-跟踪一致性问题的多智能体系统协同。

1、问题构建

        考虑由\boldsymbol{N+1}个节点构成的连续时间高阶线性多智能体,系统的状态方程如下:

\boldsymbol{\dot{x}_i(t)=Ax_i(t)+Bu_i(t) \qquad ,i=1,2,...,N}

\boldsymbol{\dot{x}_0(t)=Ax_0(t)}

式中,\boldsymbol{x_i(t)\epsilon R^{p\times 1}} 为跟随着的状态变量;\boldsymbol{u_i(t) \epsilon R^{q \times 1}} 为作用于跟随着的控制输入量;\boldsymbol{A\epsilon R^{p\times p}} 和\boldsymbol{B\epsilon R^{q\times q}} 为系统的常值参数矩阵;\boldsymbol{x_0(t)\epsilon R^{p\times 1}} 为领航者的状态变量。

        本文通过设计控制器\boldsymbol{u_i(t)} ,使得上述状态方程中的\boldsymbol{N}个跟随着的状态可以跟踪上领航者的状态,即保证如下“领航-跟踪”一致性成立:

\boldsymbol{\displaystyle\lim_{t \rightarrow + \infty} x_{i}\left ( t \right )=\displaystyle\lim_{t \rightarrow + \infty} x_{0}\left ( t \right ) , \qquad i=1,2,...,N}

与无领航一致性问题不同,“领航-跟踪”模式下的多智能体系统一致性问题中,每个跟随着的最终状态取决于领航者的状态初值,而与跟随着本身的状态初值无关。

2、模型构建

        当跟随者和领航者构成的整个智能体网络包含一个有向生成树,且跟随者之间的拓补图为无向连通图时,定义变量:

\boldsymbol{\xi _{i} (t) = \sum_{j=0}^{N} a_{ij} (x_i(t)-x_j(t) )}

并设计如下控制器:

\boldsymbol{u_i(t)=cK_2\xi_i(t)}

其中,\boldsymbol{K_2} 为待求的控制增益矩阵,\boldsymbol{c}为加权参数。

3、模型求解

接下来给出能够保证系统渐进稳定的条件,并求解控制器的增益矩阵。

        定理3.3:给定矩阵\boldsymbol{Q_2=Q_2^T>0} 和 \boldsymbol{R_2=R_2^T>0} ,若如下线性矩阵不等式有正定解\boldsymbol{\hat{P}_2=\hat{P}_2^T>0} :

\boldsymbol{\begin{bmatrix} A\hat{P}_2+\hat{P}_2A^T-BR_2^{-1}B^T & \hat{P}_2\sqrt{Q_2} \\ * & -I^P \end{bmatrix} \leq 0}

则系统渐进稳定。此外控制增益矩阵为 \boldsymbol{K_2=-R_2^{-1}B^T\hat{P}_2^{-1}} ,且加权参数\boldsymbol{c} 满足

\boldsymbol{c\geq 1/(2\lambda _min(L_1))} 。

\boldsymbol{R_2=10000} 和 \boldsymbol{Q_2=10I_4} ,书上通过求解线性矩阵不等式给出了\boldsymbol{\hat{P}_2} 和\boldsymbol{K_2},但是,书上的这个地方算错了,书上计算的时候把矩阵\boldsymbol{B}用成了本书下一个案例的数据,因此算出来的结果是发散的,不能实现一致性跟随的效果。

        在这里我算了一下,得出了一个控制增益矩阵:

\boldsymbol{K_2=[0.0002 ,-0.0002,-0.0003,0.0016]}

按照这个控制增益矩阵进行后续计算便可以实现状态跟随。

4、仿真案例

        以A4D飞机在高度为4572m的空中飞行的协同跟踪控制问题为研究背景,系统的状态方程如下:

\boldsymbol{\begin{bmatrix} \dot{v}_i(t)\\ \dot{\alpha}_i(t)\\ \dot{q}_i(t)\\ \dot{\tilde{\alpha}}_i(t) \end{bmatrix} = \begin{bmatrix} -0.0605 &-32.37 & 0 &32.2 \\ -0.00014 & -1.475 &10 &0 \\ -0.0111& -34.72 & -2.793&0 \\ 0& 0 &1 & 0 \end{bmatrix} \begin{bmatrix} v_i(t)\\ \alpha_i(t)\\ q_i(t)\\ \tilde{\alpha}_i(t) \end{bmatrix} + \begin{bmatrix} 0\\ 0\\ 0.2\\ 0.0005 \end{bmatrix} \delta _i^{rud}(t)}

四个状态变量分别为:飞行速度、俯仰角、攻角角速度、攻角,输入量为升降舵操作指令。 

A4D型飞机集群网络拓补结构图如下:

\boldsymbol{0\rightarrow 1\leftrightarrow 2\leftrightarrow 3}

其余参数可以在代码中找到。

5、编程求解:

clc
clear
close all
dt=0.001;
t=1:dt:200;
B=[0;0;0.2;0.0005];
A=[-0.0605 -32.37 0 32.2;
    -0.00014 -1.475 10 0;
    -0.0111 -34.72 -2.793 0;
    0 0 1 0];
x=[200 250 300 350;
    15 12 11 10;
    0 0 0 0 ;
    6 5 4 3];
L=[0 0 0 0;
    -1 1 0 0;
    0 -1 1 0;
    0 0 -1 1;];
c=2.6;
k2=1*[0.0002 -0.0002 -0.0003 0.0016];
%  k2=[0.0236 -1.6881 0.0632 17.0696];这里是书中给的控制增益矩阵
for i=1:length(t)
    e=L*(x-[x(1,1),x(1,1),x(1,1),x(1,1); ...
            x(2,1),x(2,1),x(2,1),x(2,1); ...
            x(3,1),x(3,1),x(3,1),x(3,1); ...
            x(4,1),x(4,1),x(4,1),x(4,1)])';
    u=c*k2*e';
    X1(:,i)=x(:,1);
    X2(:,i)=x(:,2);
    X3(:,i)=x(:,3);
    X4(:,i)=x(:,4);
    x(:,1)=x(:,1)+A*x(:,1)*dt;
    x(:,2:4)=x(:,2:4)+(A*x(:,2:4)+B*u(:,2:4))*dt;
end
subplot(4,1,1)
plot(t,X1(1,:),t,X2(1,:),t,X3(1,:),t,X4(1,:))

subplot(4,1,2)
plot(t,X1(2,:),t,X2(2,:),t,X3(2,:),t,X4(2,:))

subplot(4,1,3)
plot(t,X1(3,:),t,X2(3,:),t,X3(3,:),t,X4(3,:))

subplot(4,1,4)
plot(t,X1(4,:),t,X2(4,:),t,X3(4,:),t,X4(4,:))

        这里要说的是,因为书中的数据出了一些问题,所以复现的效果和书上不一致,不过幸好最终也能收敛,但没有书上的收敛效果好,也可能是我的代码中某个地方没写对,欢迎大家指出问题,一起讨论!

6、参考文献

 1、《多智能体系统群集协同控制方法及应用 》,作者:张卓、张泽旭、李惠平、张守旭 , 西北工业大学出版社

        (悄悄的说:文中的公式和数据全是这本书上摘抄,只有代码是自己写的)


写在最后:
        写“多智能体系统集群协同控制”专栏的主要原因是该领域入门级的代码在网络上很难找到,阅读了参考文献中的这本书后,觉得这本书中的案例有很高的可复现性,于是尝试着复现了以下,结果前三个案例都成功了,于是想着将书中的案例写成博客分享给大家。如果想要学习更为详细的证明过程,可以购买这本书学习,书中的模型是用Simulink实现的。目前已实现该书第三章的五个案例。

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值