【Matlab 控制】多智能体一致性收敛仿真
%改变了Laplacian函数里面的FAI矩阵,使得状态收敛至静态值,clc;clear;% 初始化X0= [-3, 2, 1, -1,4]';% 初始位置DX0 = [0.3, 0.1, 0.5, 0.2, 0.4]';% 初始速度Y1= [X0; DX0];% 积分初值n= 5;n=
·
%改变了Laplacian函数里面的FAI矩阵,使得状态收敛至静态值,
clc;
clear;
% 初始化
X0 = [-3, 2, 1, -1,4]'; % 初始位置
DX0 = [0.3, 0.1, 0.5, 0.2, 0.4]'; % 初始速度
Y1 = [X0; DX0]; % 积分初值
n = 5;
n = length(X0);
A =[0 1 0 -1 1;
0 0 1 0 0;
1 0 0 0 0;
0 0 0 0 1;
0 0 0 1 0]; % 邻接矩阵,有向拓扑结构
D =[1 0 0 0 0;
0 1 0 0 0;
0 0 1 0 0;
0 0 0 1 0;
0 0 0 0 1]; % 度矩阵,有向拓扑结构
L = D - A;
gama = 1.2547;
k = 0.5;
% 构造矩阵FAI
FAI = [zeros(n,n), eye(n);
-L, -k*eye(n)-gama*L];
tBegin = 0;
tEnd = 10;
h = 0.1;
times = (tEnd-tBegin) / h;
Y(:,1) = Y1;
t(1) = tBegin;
i = 1;
% 从1到100循环了100次
while(i <= times)
K1 = h * FAI * Y(1:10,i);
K2 = h * FAI * Y(1:10,i) + K1/2;
K3 = h * FAI * Y(1:10,i) + K2/2;
K4 = h * FAI * Y(1:10,i) + K3;
t(i+1) = t(i) + h;
Val = (K1+2*K2+2*K3+K4)/6;
Y(1:10,i+1) = Y(1:10,i) + Val;
i = i+1;
end
% 显示
subplot(2,1,1)
plot(t,Y(1,:), t,Y(2,:), t,Y(3,:), t,Y(4,:), t,Y(5,:), 'linewidth',1.5)%位置
subplot(2,1,2)
plot(t,Y(6,:), t,Y(7,:), t,Y(8,:), t,Y(9,:), t,Y(10,:), 'linewidth',1.5)%速度
更多推荐
所有评论(0)