clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
%确定循环周期
loop=3000;
%确定步长
step=0.01;
%智能体数量
n=6;order=3;
%邻接矩阵
A1 = [0 1 1 0 1 1 ;
1 0 1 1 0 0 ;
1 1 0 0 0 1 ;
0 1 0 0 1 0;
1 0 0 1 0 0;
1 0 1 0 0 0 ];
A2 = [0 1 0 0 1 1 ;
1 0 1 1 0 0 ;
0 1 0 0 0 1 ;
0 1 0 0 0 1;
1 0 0 0 0 0;
1 0 1 1 0 0 ];
%系统状态矩阵
SA=[0 1 0;0 0 1;0 0 0];
%输入矩阵
SB=[0 0 1]';
%输出矩阵
SC=[1 0 0];
%反馈矩阵
F=-[3 6.5 4.5];
%状态x
x_state=-4*rand(order,n)+2;
%x_state=zeros(order,n);
%状态y
y_state=SC*x_state;
%状态v
v_state=zeros(order,n);
%输入u
u_input=zeros(1,n);
%tao
tao=[1 -1;-1 1];
%L
L=-[2.1115 1.3528 0.6286]';
%状态x的连续值
x1_state=zeros(order,n,loop);
c_state=zeros(n,n,loop);
u1_input=zeros(loop,n);
c=[-1.5 -1 -0.5 0 0.5 1;
-1 -0.5 0 0.5 1 1.5;
-0.5 0 0.5 1 1.5 2;
0 0.5 1 1.5 2 2.5;
0.5 1 1.5 2 2.5 3;
1 1.5 2 2.5 3 3.5];
errorAdded = zeros(n);
%-----------系统初始化--------------------------
%----------开始循环--------------------------
%---------对智能体进行循环,实验主题---------
for ld=1:loop
x1_state(:,:,ld)=(x_state(:,:)-x_state(:,1));%保存状态信息
% x1_state(:,:,ld)=x_state(:,:);
c_state(:,:,ld)=c(:,:);%保存自适应率信息
u1_input(ld,:)=u_input;
if mod(ld, 2) == 0
A=A1;
else
A=A2;
end
%计算cij
for i=1:n
for j=1:n
c(i,j)=c(i,j)+step*A(i,j)*[(y_state(i)-y_state(j));SC*(v_state(:,i)-v_state(:,j))]'...
*tao*[(y_state(i)-y_state(j));SC*(v_state(:,i)-v_state(:,j))];
end
end
%计算相对误差求和
for i=1:n
errorAdded(i)=0;
for j=1:n
errorAdded(i)=errorAdded(i)+c(i,j)*A(i,j) *(SC*(v_state(:,i) - v_state(:,j))-(y_state(i)-y_state(j)));
end
%计算状态v
% v_state(:,i)=(step*(SA+SB*F)+eye(3))*v_state(:,i)+step*L*errorAdded(i);
v_state(:,i)=step*((SA+SB*F)*v_state(:,i)+L*errorAdded(i))+v_state(:,i);
end
for i=1:n
u_input(i)=F*v_state(:,i);%F:1*3,v_state:3*6
end
%----------------对智能体进行计算------------
for i=1:n
% x_state(:,i)=(eye(3)+step*SA)*x_state(:,i)+step*SB*u_input(i);
x_state(:,i)=x_state(:,i)+step*(SA*x_state(:,i)+SB*u_input(i));
y_state(i)=SC*x_state(:,i);
% disp(y_state(i));
end
end
figure(1)
q1(:,:)=x1_state(1,:,:);
q2(:,:)=x1_state(2,:,:);
q3(:,:)=x1_state(3,:,:);
p1(:,:)=c_state(1,:,:);
p2(:,:)=c_state(2,:,:);
p3(:,:)=c_state(3,:,:);
plot(0:step:(loop-1)*step,q1,0:step:(loop-1)*step,q2,0:step:(loop-1)*step,q3,'LineWidth',1.5);
figure(2)
plot(0:step:(loop-1)*step,p1,0:step:(loop-1)*step,p2,0:step:(loop-1)*step,p3,'LineWidth',1.5)
figure(3)
plot(0:step:(loop-1)*step,u1_input,'LineWidth',1.5)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
1.版本:matlab2021a,包含仿真操作录像,操作录像使用windows media player播放。 2.领域:分布式共识动态协议 3.内容:线性多智能体系统的分布式共识动态协议matlab仿真 4.运行注意事项:注意MATLAB左侧当前文件夹路径,必须是程序所在文件夹位置,具体可以参考视频录。 5.适用人群:本硕博等科研学习参考使用。
资源推荐
资源详情
资源评论
收起资源包目录
线性多智能体系统的分布式共识动态协议matlab仿真.rar (5个子文件)
线性多智能体系统的分布式共识动态协议matlab仿真
untitled1.jpg 22KB
操作录像0036.avi 3.22MB
Runme.m 3KB
untitled2.jpg 23KB
untitled3.jpg 15KB
共 5 条
- 1
资源评论
- guangcheng12342023-02-14非常有用的资源,可以直接使用,对我很有用,果断支持!
- 2301_788762622023-09-21总算找到了自己想要的资源,对自己的启发很大,感谢分享~
fpga和matlab
- 粉丝: 16w+
- 资源: 2561
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功