└── 刘剑_时延实现 ├── Fixed-Time Average Consensus of Nonlinear Delayed MASs Under Switching Topologies_ An Event-Based Triggering Approach.pdf ├── agent_ctrl.m ├── agent_plant.m ├── agent_plot.m ├── agentsim.slx ├── agentsim2018a.slx ├── jianfaqi.m └── sig.m /刘剑_时延实现/Fixed-Time Average Consensus of Nonlinear Delayed MASs Under Switching Topologies_ An Event-Based Triggering Approach.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Taoistzou/fixed-time-consensus-with-input-time-delay/25d5fdbfaffae795350754b9d93b7b45e0021952/刘剑_时延实现/Fixed-Time Average Consensus of Nonlinear Delayed MASs Under Switching Topologies_ An Event-Based Triggering Approach.pdf -------------------------------------------------------------------------------- /刘剑_时延实现/agent_ctrl.m: -------------------------------------------------------------------------------- 1 | function [sys,x0,str,ts] = agent_ctrl(t,x,u,flag) 2 | switch flag, 3 | case 0, 4 | [sys,x0,str,ts]=mdlInitializeSizes; 5 | case 3, 6 | sys=mdlOutputs(t,x,u); 7 | case {2,4,9} 8 | sys=[]; 9 | otherwise 10 | error(['Unhandled flag = ',num2str(flag)]); 11 | end 12 | function [sys,x0,str,ts]=mdlInitializeSizes 13 | sizes = simsizes; 14 | sizes.NumContStates = 0; 15 | sizes.NumDiscStates = 0; 16 | sizes.NumOutputs = 6; 17 | sizes.NumInputs = 12; 18 | sizes.DirFeedthrough = 1; 19 | sizes.NumSampleTimes = 0; 20 | sys = simsizes(sizes); 21 | x0 = []; 22 | str = []; 23 | ts = []; 24 | function sys=mdlOutputs(t,x,u) 25 | 26 | aij=[0 1 0 1 0 0; 27 | 1 0 1 0 0 0; 28 | 0 1 0 0 0 1; 29 | 1 0 0 0 1 0; 30 | 0 0 1 1 0 1; 31 | 0 0 1 0 1 0]; 32 | 33 | 34 | 35 | 36 | 37 | k1=0.5;k2=0;k3=4;mu=7/5; 38 | 39 | 40 | x_1=u(1); 41 | x_2=u(2); 42 | x_3=u(3); 43 | x_4=u(4); 44 | x_5=u(5); 45 | x_6=u(6); 46 | 47 | x_1tao=u(1+6); 48 | x_2tao=u(2+6); 49 | x_3tao=u(3+6); 50 | x_4tao=u(4+6); 51 | x_5tao=u(5+6); 52 | x_6tao=u(6+6); 53 | 54 | x1=x_1+x_1tao; 55 | x2=x_2+x_2tao; 56 | x3=x_3+x_3tao; 57 | x4=x_4+x_4tao; 58 | x5=x_5+x_5tao; 59 | x6=x_6+x_6tao; 60 | 61 | sys(1)=real(-k1*(aij(1,1)*(x1-x1)^mu+aij(1,2)*(x1-x2)^mu+aij(1,3)*(x1-x3)^mu+aij(1,4)*(x1-x4)^mu+aij(1,5)*(x1-x5)^mu+aij(1,6)*(x1-x6)^mu)-... 62 | k2*(aij(1,1)*sign(x1-x1)+aij(1,2)*sign(x1-x2)+aij(1,3)*sign(x1-x3)+aij(1,4)*sign(x1-x4)+aij(1,5)*sign(x1-x5)+aij(1,6)*sign(x1-x6))-... 63 | k3*(aij(1,1)*(x1-x1)+aij(1,2)*(x1-x2)+aij(1,3)*(x1-x3)+aij(1,4)*(x1-x4)+aij(1,5)*(x1-x5)+aij(1,6)*(x1-x6))); 64 | sys(2)=real(-k1*(aij(2,1)*(x2-x1)^mu+aij(2,2)*(x2-x2)^mu+aij(2,3)*(x2-x3)^mu+aij(2,4)*(x2-x4)^mu+aij(2,5)*(x2-x5)^mu+aij(2,6)*(x2-x6)^mu)-... 65 | k2*(aij(2,1)*sign(x2-x1)+aij(2,2)*sign(x2-x2)+aij(2,3)*sign(x2-x3)+aij(2,4)*sign(x2-x4)+aij(2,5)*sign(x2-x5)+aij(2,6)*sign(x2-x6))-... 66 | k3*(aij(2,1)*(x2-x1)+aij(2,2)*(x2-x2)+aij(2,3)*(x2-x3)+aij(2,4)*(x2-x4)+aij(2,5)*(x2-x5)+aij(2,6)*(x2-x6))); 67 | sys(3)=real(-k1*(aij(3,1)*(x3-x1)^mu+aij(3,2)*(x3-x2)^mu+aij(3,3)*(x3-x3)^mu+aij(3,4)*(x3-x4)^mu+aij(3,5)*(x3-x5)^mu+aij(3,6)*(x3-x6)^mu)-... 68 | k2*(aij(3,1)*sign(x3-x1)+aij(3,2)*sign(x3-x2)+aij(3,3)*sign(x3-x3)+aij(3,4)*sign(x3-x4)+aij(3,5)*sign(x3-x5)+aij(3,6)*sign(x3-x6))-... 69 | k3*(aij(3,1)*(x3-x1)+aij(3,2)*(x3-x2)+aij(3,3)*(x3-x3)+aij(3,4)*(x3-x4)+aij(3,5)*(x3-x5)+aij(3,6)*(x3-x6))); 70 | sys(4)=real(-k1*(aij(4,1)*(x4-x1)^mu+aij(4,2)*(x4-x2)^mu+aij(4,3)*(x4-x3)^mu+aij(4,4)*(x4-x4)^mu+aij(4,5)*(x4-x5)^mu+aij(4,6)*(x4-x6)^mu)-... 71 | k2*(aij(4,1)*sign(x4-x1)+aij(4,2)*sign(x4-x2)+aij(4,3)*sign(x4-x3)+aij(4,4)*sign(x4-x4)+aij(4,5)*sign(x4-x5)+aij(4,6)*sign(x4-x6))-... 72 | k3*(aij(4,1)*(x4-x1)+aij(4,2)*(x4-x2)+aij(4,3)*(x4-x3)+aij(4,4)*(x4-x4)+aij(4,5)*(x4-x5)+aij(4,6)*(x4-x6))); 73 | sys(5)=real(-k1*(aij(5,1)*(x5-x1)^mu+aij(5,2)*(x5-x2)^mu+aij(5,3)*(x5-x3)^mu+aij(5,4)*(x5-x4)^mu+aij(5,5)*(x5-x5)^mu+aij(5,6)*(x5-x6)^mu)-... 74 | k2*(aij(5,1)*sign(x5-x1)+aij(5,2)*sign(x5-x2)+aij(5,3)*sign(x5-x3)+aij(5,4)*sign(x5-x4)+aij(5,5)*sign(x5-x5)+aij(5,6)*sign(x5-x6))-... 75 | k3*(aij(5,1)*(x5-x1)+aij(5,2)*(x5-x2)+aij(5,3)*(x5-x3)+aij(5,4)*(x5-x4)+aij(5,5)*(x5-x5)+aij(5,6)*(x5-x6))); 76 | sys(6)=real(-k1*(aij(6,1)*(x6-x1)^mu+aij(6,2)*(x6-x2)^mu+aij(6,3)*(x6-x3)^mu+aij(6,4)*(x6-x4)^mu+aij(6,5)*(x6-x5)^mu+aij(6,6)*(x6-x6)^mu)-... 77 | k2*(aij(6,1)*sign(x6-x1)+aij(6,2)*sign(x6-x2)+aij(6,3)*sign(x6-x3)+aij(6,4)*sign(x6-x4)+aij(6,5)*sign(x6-x5)+aij(6,6)*sign(x6-x6))-... 78 | k3*(aij(6,1)*(x6-x1)+aij(6,2)*(x6-x2)+aij(6,3)*(x6-x3)+aij(6,4)*(x6-x4)+aij(6,5)*(x6-x5)+aij(6,6)*(x6-x6))); 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /刘剑_时延实现/agent_plant.m: -------------------------------------------------------------------------------- 1 | function [sys,x0,str,ts]=agent_plant(t,x,u,flag) 2 | switch flag, 3 | case 0, 4 | [sys,x0,str,ts]=mdlInitializeSizes; 5 | case 1, 6 | sys=mdlDerivatives(t,x,u); 7 | case 3, 8 | sys=mdlOutputs(t,x,u); 9 | case {2, 4, 9 } 10 | sys = []; 11 | otherwise 12 | error(['Unhandled flag = ',num2str(flag)]); 13 | end 14 | function [sys,x0,str,ts]=mdlInitializeSizes 15 | sizes = simsizes; 16 | sizes.NumContStates = 6; 17 | sizes.NumDiscStates = 0; 18 | sizes.NumOutputs = 6; 19 | sizes.NumInputs = 6; 20 | sizes.DirFeedthrough = 0; 21 | sizes.NumSampleTimes = 1; 22 | sys=simsizes(sizes); 23 | x0=[5 0 4 9 -3 2]; 24 | str=[]; 25 | ts=[0 0]; 26 | function sys=mdlDerivatives(t,x,u) 27 | 28 | 29 | % sys(1)=u(1)+0.2*cos(x(1)); 30 | % sys(2)=u(2)+0.2*cos(x(2)); 31 | % sys(3)=u(3)+0.2*cos(x(3)); 32 | % sys(4)=u(4)+0.2*cos(x(4)); 33 | % sys(5)=u(5)+0.2*cos(x(5)); 34 | % sys(6)=u(6)+0.2*cos(x(6)); 35 | 36 | sys(1)=u(1); 37 | sys(2)=u(2); 38 | sys(3)=u(3); 39 | sys(4)=u(4); 40 | sys(5)=u(5); 41 | sys(6)=u(6); 42 | 43 | 44 | 45 | function sys=mdlOutputs(t,x,u) 46 | 47 | sys(1)=x(1); 48 | sys(2)=x(2); 49 | sys(3)=x(3); 50 | sys(4)=x(4); 51 | sys(5)=x(5); 52 | sys(6)=x(6); 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /刘剑_时延实现/agent_plot.m: -------------------------------------------------------------------------------- 1 | close all; 2 | 3 | figure(1); 4 | plot(t,y(:,[1 2 3 4 5 6]),'--','linewidth',2) 5 | legend('x1','x2','x3','x4','x5','x6','FontSize',12); 6 | xlabel('time(s)');ylabel('x_{i}(t)'); 7 | grid on 8 | 9 | figure(2) 10 | plot(t,ut(:,[1 2 3 4 5 6]),'linewidth',1.5) 11 | xlabel('time(s)');ylabel('u_{i}(t)'); 12 | legend('u1','u2','u3','u4','u5','u6','FontSize',12); 13 | grid on 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /刘剑_时延实现/agentsim.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Taoistzou/fixed-time-consensus-with-input-time-delay/25d5fdbfaffae795350754b9d93b7b45e0021952/刘剑_时延实现/agentsim.slx -------------------------------------------------------------------------------- /刘剑_时延实现/agentsim2018a.slx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Taoistzou/fixed-time-consensus-with-input-time-delay/25d5fdbfaffae795350754b9d93b7b45e0021952/刘剑_时延实现/agentsim2018a.slx -------------------------------------------------------------------------------- /刘剑_时延实现/jianfaqi.m: -------------------------------------------------------------------------------- 1 | function [sys,x0,str,ts] = jianfaqi(t,x,u,flag) 2 | switch flag, 3 | case 0, 4 | [sys,x0,str,ts]=mdlInitializeSizes; 5 | case 3, 6 | sys=mdlOutputs(t,x,u); 7 | case {2,4,9} 8 | sys=[]; 9 | otherwise 10 | error(['Unhandled flag = ',num2str(flag)]); 11 | end 12 | function [sys,x0,str,ts]=mdlInitializeSizes 13 | sizes = simsizes; 14 | sizes.NumContStates = 0; 15 | sizes.NumDiscStates = 0; 16 | sizes.NumOutputs = 6; 17 | sizes.NumInputs = 12; 18 | sizes.DirFeedthrough = 1; 19 | sizes.NumSampleTimes = 0; 20 | sys = simsizes(sizes); 21 | x0 = []; 22 | str = []; 23 | ts = []; 24 | function sys=mdlOutputs(t,x,u) 25 | 26 | 27 | 28 | 29 | u_1=u(1); 30 | u_2=u(2); 31 | u_3=u(3); 32 | u_4=u(4); 33 | u_5=u(5); 34 | u_6=u(6); 35 | 36 | u_1tao=u(1+6); 37 | u_2tao=u(2+6); 38 | u_3tao=u(3+6); 39 | u_4tao=u(4+6); 40 | u_5tao=u(5+6); 41 | u_6tao=u(6+6); 42 | 43 | 44 | u1=u_1-u_1tao; 45 | u2=u_2-u_2tao; 46 | u3=u_3-u_3tao; 47 | u4=u_4-u_4tao; 48 | u5=u_5-u_5tao; 49 | u6=u_6-u_6tao; 50 | 51 | sys(1)=u1; 52 | sys(2)=u2; 53 | sys(3)=u3; 54 | sys(4)=u4; 55 | sys(5)=u5; 56 | sys(6)=u6; 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /刘剑_时延实现/sig.m: -------------------------------------------------------------------------------- 1 | function sig = sig(x,u) 2 | sig=sign(x)*abs(x).^u; 3 | end 4 | 5 | --------------------------------------------------------------------------------