上两篇博客讨论的是基于无领航一致性的多智能体系统协同控制,从本文开始接下来的三篇将讨论领航-跟踪一致性问题的多智能体系统协同。
1、问题构建
考虑由个节点构成的连续时间高阶线性多智能体,系统的状态方程如下:
式中, 为跟随着的状态变量;
为作用于跟随着的控制输入量;
和
为系统的常值参数矩阵;
为领航者的状态变量。
本文通过设计控制器 ,使得上述状态方程中的
个跟随着的状态可以跟踪上领航者的状态,即保证如下“领航-跟踪”一致性成立:
与无领航一致性问题不同,“领航-跟踪”模式下的多智能体系统一致性问题中,每个跟随着的最终状态取决于领航者的状态初值,而与跟随着本身的状态初值无关。
2、模型构建
当跟随者和领航者构成的整个智能体网络包含一个有向生成树,且跟随者之间的拓补图为无向连通图时,定义变量:
并设计如下控制器:
其中, 为待求的控制增益矩阵,
为加权参数。
3、模型求解
接下来给出能够保证系统渐进稳定的条件,并求解控制器的增益矩阵。
定理3.3:给定矩阵 和
,若如下线性矩阵不等式有正定解
:
则系统渐进稳定。此外控制增益矩阵为 ,且加权参数
满足
。
令 和
,书上通过求解线性矩阵不等式给出了
和
,但是,书上的这个地方算错了,书上计算的时候把矩阵
用成了本书下一个案例的数据,因此算出来的结果是发散的,不能实现一致性跟随的效果。
在这里我算了一下,得出了一个控制增益矩阵:
按照这个控制增益矩阵进行后续计算便可以实现状态跟随。
4、仿真案例
以A4D飞机在高度为4572m的空中飞行的协同跟踪控制问题为研究背景,系统的状态方程如下:
四个状态变量分别为:飞行速度、俯仰角、攻角角速度、攻角,输入量为升降舵操作指令。
A4D型飞机集群网络拓补结构图如下:
其余参数可以在代码中找到。
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实现的。目前已实现该书第三章的五个案例。