Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
AntonSelivanov committed Jul 28, 2016
1 parent 335b7bf commit 074b102
Show file tree
Hide file tree
Showing 5 changed files with 418 additions and 0 deletions.
83 changes: 83 additions & 0 deletions LMI_TAC16_rem1.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
function OmegaVal=LMI_TAC16_rem1(A,B,C,K,h,epsilon,delta)
% This MATLAB program checks the feasibility of LMIs from Remark 1 of the paper
% A. Selivanov and E. Fridman, "Event-Triggered H-infinity Control: a Switching Approach," IEEE Transactions on Automatic Control, 2016.

% The program uses YALMIP parser (http://users.isy.liu.se/johanl/yalmip/)
% and SeDuMi solver (http://sedumi.ie.lehigh.edu/)

% Input:
% A,B,C - the parameters of the system (1);
% K - the static controller gain;
% h - the sampling time in (5);
% epsilon - the event-triggering parameter from (5);
% delta - a desired decay rate;

% Output:
% OmegaVal - the value of Omega from (5). If OmegaVal is empty, the LMIs are not feasible.

n=size(A,1);
l=size(C,1);

%% Decision variables
P=sdpvar(n);
U=sdpvar(n);
X=sdpvar(n,n,'f');
X1=sdpvar(n,n,'f');
P2=sdpvar(n,n,'f');
P3=sdpvar(n,n,'f');
Y1=sdpvar(n,n,'f');
Y2=sdpvar(n,n,'f');
Y3=sdpvar(n,n,'f');
Omega=sdpvar(l);

%% The LMI for Xi
Xi=blkvar;
Xi(1,1)=P+h*(X+X')/2;
Xi(1,2)=h*X1-h*X;
Xi(2,2)=-h*X1-h*X1'+h*(X+X')/2;
Xi=sdpvar(Xi);

%% The LMI with Psi0
Psi0=blkvar;
Psi0(1,1)=A'*P2+P2'*A+2*delta*P-Y1-Y1'-(1/2-delta*h)*(X+X')+epsilon*C'*Omega*C;
Psi0(1,2)=P-P2'+A'*P3-Y2+h*(X+X')/2;
Psi0(1,3)=Y1'-P2'*B*K*C-Y3+(1-2*delta*h)*(X-X1);
Psi0(1,4)=-P2'*B*K;
Psi0(2,2)=-P3-P3'+h*U;
Psi0(2,3)=Y2'-P3'*B*K*C-h*(X-X1);
Psi0(2,4)=-P3'*B*K;
Psi0(3,3)=Y3+Y3'-(1/2-delta*h)*(X+X'-2*X1-2*X1');
Psi0(4,4)=-Omega;
Psi0=sdpvar(Psi0);

%% The LMI with Psi1
Psi1=blkvar;
Psi1(1,1)=A'*P2+P2'*A+2*delta*P-Y1-Y1'-(X+X')/2+epsilon*C'*Omega*C;
Psi1(1,2)=P-P2'+A'*P3-Y2;
Psi1(1,3)=Y1'-P2'*B*K*C-Y3+X-X1;
Psi1(1,4)=h*Y1';
Psi1(1,5)=-P2'*B*K;
Psi1(2,2)=-P3-P3';
Psi1(2,3)=Y2'-P3'*B*K*C;
Psi1(2,4)=h*Y2';
Psi1(2,5)=-P3'*B*K;
Psi1(3,3)=Y3+Y3'-1/2*(X+X'-2*X1-2*X1');
Psi1(3,4)=h*Y3';
Psi1(4,4)=-h*U*exp(-2*delta*h);
Psi1(5,5)=-Omega;
Psi1=sdpvar(Psi1);

%% Solution of LMIs
LMIs=[P>=0, U>=0, Omega>=0, Xi>=0, Psi0<=0, Psi1<=0];
options=sdpsettings('solver','sedumi','verbose',0);
sol=optimize(LMIs,[],options);

OmegaVal=[];
if sol.problem == 0
[primal,~]=check(LMIs);
if min(primal)>=0 && all(primal([1,2,4])>0)
OmegaVal=double(Omega);
end
else
yalmiperror(sol.problem);
end
110 changes: 110 additions & 0 deletions LMI_TAC16_rem3.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
function OmegaVal=LMI_TAC16_rem3(A,B1,B2,C1,D1,C2,D2,K,gamma,h,etaM,epsilon,delta)
% This MATLAB program checks the feasibility of LMIs from Remark 3 of the paper
% A. Selivanov and E. Fridman, "Event-Triggered H-infinity Control: a Switching Approach," IEEE Transactions on Automatic Control, 2016.

% The program uses YALMIP parser (http://users.isy.liu.se/johanl/yalmip/)
% and LMILAB solver of Robust Control Toolbox (http://www.mathworks.com/products/robust/)

% Input:
% A,B1,B2,C1,
% D1,C2,D2 - the parameters of the system (15);
% K - the static controller gain;
% gamma - the L_2-gain from (20);
% h - the sampling time in (5);
% etaM - the upper bound for the overall network-induced delay;
% epsilon - the event-triggering parameter from (5);
% delta - a desired decay rate;

% Output:
% OmegaVal - the value of Omega from (5). If OmegaVal is empty, the LMIs are not feasible.

n=size(A,1);
l=size(C2,1);

%% Decision variables
P=sdpvar(n);
S0=sdpvar(n);
S1=sdpvar(n);
R0=sdpvar(n);
R1=sdpvar(n);
G0=sdpvar(n,n,'f');
G1=sdpvar(n,n,'f');
Omega=sdpvar(l);

%% Notations
tauM=h+etaM;
H=etaM^2*R0+h^2*R1;

%% The LMI for Psi (tau(t)\in(etaM,tauM])
Psi=blkvar;
Psi(1,1)=A'*P+P*A+2*delta*P+S0-exp(-2*delta*etaM)*R0+C1'*C1;
Psi(1,2)=exp(-2*delta*etaM)*R0;
Psi(1,4)=P*B2*K*C2+C1'*D1*K*C2;
Psi(1,5)=P*B2*K+C1'*D1*K;
Psi(1,6)=P*B1;
Psi(1,7)=P*B2*K*D2+C1'*D1*K*D2;
Psi(1,8)=A'*H;
Psi(2,2)=exp(-2*delta*etaM)*(S1-S0-R0)-exp(-2*delta*tauM)*R1;
Psi(2,3)=exp(-2*delta*tauM)*G1;
Psi(2,4)=exp(-2*delta*tauM)*(R1-G1);
Psi(3,3)=-exp(-2*delta*tauM)*(R1+S1);
Psi(3,4)=exp(-2*delta*tauM)*(R1-G1');
Psi(4,4)=exp(-2*delta*tauM)*(G1+G1'-2*R1)+(D1*K*C2)'*D1*K*C2+epsilon*C2'*Omega*C2;
Psi(4,5)=(D1*K*C2)'*D1*K;
Psi(4,7)=(D1*K*C2)'*D1*K*D2+epsilon*C2'*Omega*D2;
Psi(4,8)=(B2*K*C2)'*H;
Psi(5,5)=(D1*K)'*D1*K-Omega;
Psi(5,7)=(D1*K)'*D1*K*D2;
Psi(5,8)=(B2*K)'*H;
Psi(6,6)=-gamma^2*eye(size(B1,2));
Psi(6,8)=B1'*H;
Psi(7,7)=(D1*K*D2)'*D1*K*D2+epsilon*D2'*Omega*D2-gamma^2*eye(size(D2,2));
Psi(7,8)=(B2*K*D2)'*H;
Psi(8,8)=-H;
Psi=sdpvar(Psi);

%% The LMI for Phi (tau(t)\in[0,etaM])
Phi=blkvar;
Phi(1,1)=A'*P+P*A+2*delta*P+S0-exp(-2*delta*etaM)*R0+C1'*C1;
Phi(1,2)=exp(-2*delta*etaM)*G0;
Phi(1,4)=P*B2*K*C2+exp(-2*delta*etaM)*(R0-G0)+C1'*D1*K*C2;
Phi(1,5)=P*B2*K+C1'*D1*K;
Phi(1,6)=P*B1;
Phi(1,7)=P*B2*K*D2+C1'*D1*K*D2;
Phi(1,8)=A'*H;
Phi(2,2)=exp(-2*delta*etaM)*(S1-S0-R0)-exp(-2*delta*tauM)*R1;
Phi(2,3)=exp(-2*delta*tauM)*R1;
Phi(2,4)=exp(-2*delta*etaM)*(R0-G0');
Phi(3,3)=-exp(-2*delta*tauM)*(R1+S1);
Phi(4,4)=exp(-2*delta*etaM)*(G0+G0'-2*R0)+(D1*K*C2)'*D1*K*C2+epsilon*C2'*Omega*C2;
Phi(4,5)=(D1*K*C2)'*D1*K;
Phi(4,7)=(D1*K*C2)'*D1*K*D2+epsilon*C2'*Omega*D2;
Phi(4,8)=(B2*K*C2)'*H;
Phi(5,5)=(D1*K)'*D1*K-Omega;
Phi(5,7)=(D1*K)'*D1*K*D2;
Phi(5,8)=(B2*K)'*H;
Phi(6,6)=-gamma^2*eye(size(B1,2));
Phi(6,8)=B1'*H;
Phi(7,7)=(D1*K*D2)'*D1*K*D2+epsilon*D2'*Omega*D2-gamma^2*eye(size(D2,2));
Phi(7,8)=(B2*K*D2)'*H;
Phi(8,8)=-H;
Phi=sdpvar(Phi);

%% Park's conditions
Park0=[R0 G0; G0' R0];
Park1=[R1 G1; G1' R1];

%% Solution of LMIs
LMIs=[P>=0, S0>=0, S1>=0, R0>=0, R1>=0, Omega>=0, Phi<=0, Psi<=0, Park0>=0, Park1>=0];
options=sdpsettings('solver','lmilab','verbose',0);
sol=optimize(LMIs,[],options);

OmegaVal=[];
if sol.problem == 0
primal=check(LMIs);
if min(primal)>=0 && primal(1)>0
OmegaVal=double(Omega);
end
else
yalmiperror(sol.problem);
end
87 changes: 87 additions & 0 deletions LMI_TAC16_th1.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
function OmegaVal=LMI_TAC16_th1(A,B,C,K,h,epsilon,delta)
% This MATLAB program checks the feasibility of LMIs from Theorem 1 of the paper
% A. Selivanov and E. Fridman, "Event-Triggered H-infinity Control: a Switching Approach," IEEE Transactions on Automatic Control, 2016.

% The program uses YALMIP parser (http://users.isy.liu.se/johanl/yalmip/)
% and SeDuMi solver (http://sedumi.ie.lehigh.edu/)

% Input:
% A,B,C - the parameters of the system (1);
% K - the static controller gain;
% h - the waiting time of (10);
% epsilon - the event-triggering parameter from (10);
% delta - a desired decay rate;

% Output:
% OmegaVal - the value of Omega from (10). If OmegaVal is empty, the LMIs are not feasible.

n=size(A,1);
l=size(C,1);

%% Decision variables
P=sdpvar(n);
U=sdpvar(n);
X=sdpvar(n,n,'f');
X1=sdpvar(n,n,'f');
P2=sdpvar(n,n,'f');
P3=sdpvar(n,n,'f');
Y1=sdpvar(n,n,'f');
Y2=sdpvar(n,n,'f');
Y3=sdpvar(n,n,'f');
Omega=sdpvar(l);

%% The LMI for Xi
Xi=blkvar;
Xi(1,1)=P+h*(X+X')/2;
Xi(1,2)=h*X1-h*X;
Xi(2,2)=-h*X1-h*X1'+h*(X+X')/2;
Xi=sdpvar(Xi);

%% The LMI for Phi
Phi=blkvar;
Phi(1,1)=P2'*(A-B*K*C)+(A-B*K*C)'*P2+epsilon*C'*Omega*C+2*delta*P;
Phi(1,2)=P+(A-B*K*C)'*P3-P2';
Phi(1,3)=-P2'*B*K;
Phi(2,2)=-P3'-P3;
Phi(2,3)=-P3'*B*K;
Phi(3,3)=-Omega;
Phi=sdpvar(Phi);

%% The LMI for Psi0
Psi0=blkvar;
Psi0(1,1)=A'*P2+P2'*A+2*delta*P-Y1-Y1'-(1/2-delta*h)*(X+X');
Psi0(1,2)=P-P2'+A'*P3-Y2+h*(X+X')/2;
Psi0(1,3)=Y1'-P2'*B*K*C-Y3+(1-2*delta*h)*(X-X1);
Psi0(2,2)=-P3-P3'+h*U;
Psi0(2,3)=Y2'-P3'*B*K*C-h*(X-X1);
Psi0(3,3)=Y3+Y3'-(1/2-delta*h)*(X+X'-2*X1-2*X1');
Psi0=sdpvar(Psi0);

%% The LMI for Psi1
Psi1=blkvar;
Psi1(1,1)=A'*P2+P2'*A+2*delta*P-Y1-Y1'-(X+X')/2;
Psi1(1,2)=P-P2'+A'*P3-Y2;
Psi1(1,3)=Y1'-P2'*B*K*C-Y3+X-X1;
Psi1(1,4)=h*Y1';
Psi1(2,2)=-P3-P3';
Psi1(2,3)=Y2'-P3'*B*K*C;
Psi1(2,4)=h*Y2';
Psi1(3,3)=Y3+Y3'-1/2*(X+X'-2*X1-2*X1');
Psi1(3,4)=h*Y3';
Psi1(4,4)=-h*U*exp(-2*delta*h);
Psi1=sdpvar(Psi1);

%% Solution of LMIs
LMIs=[P>=0, U>=0, Omega>=0, Xi>=0, Psi0<=0, Psi1<=0, Phi<=0];
options=sdpsettings('solver','sedumi','verbose',0);
sol=optimize(LMIs,[],options);

OmegaVal=[];
if sol.problem == 0
[primal,~]=check(LMIs);
if min(primal)>=0 && all(primal([1:2,4])>0)
OmegaVal=double(Omega);
end
else
yalmiperror(sol.problem);
end
105 changes: 105 additions & 0 deletions LMI_TAC16_th2.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
function OmegaVal=LMI_TAC16_th2(A,B1,B2,C1,D1,C2,D2,K,gamma,h,etaM,epsilon,delta)
% This MATLAB program checks the feasibility of LMIs from Theorem 2 of the paper
% A. Selivanov and E. Fridman, "Event-Triggered H-infinity Control: a Switching Approach," IEEE Transactions on Automatic Control, 2016.

% The program uses YALMIP parser (http://users.isy.liu.se/johanl/yalmip/)
% and LMILAB solver of Robust Control Toolbox (http://www.mathworks.com/products/robust/)

% Input:
% A,B1,B2,C1,
% D1,C2,D2 - the parameters of the system (15);
% K - the static controller gain;
% gamma - the L_2-gain from (20);
% h - the waiting time of (10);
% etaM - the upper bound for the overall network-induced delay;
% epsilon - the event-triggering parameter from (10);
% delta - a desired decay rate;

% Output:
% OmegaVal - the value of Omega from (10). If OmegaVal is empty, the LMIs are not feasible.

n=size(A,1);
l=size(C2,1);

%% Decision variables
P=sdpvar(n);
S0=sdpvar(n);
S1=sdpvar(n);
R0=sdpvar(n);
R1=sdpvar(n);
G0=sdpvar(n,n,'f');
G1=sdpvar(n,n,'f');
Omega=sdpvar(l);

%% Notations
tauM=h+etaM;
H=etaM^2*R0+h^2*R1;

%% The LMI for Psi (tau(t)\in(etaM,tauM])
Psi=blkvar;
Psi(1,1)=A'*P+P*A+2*delta*P+S0-exp(-2*delta*etaM)*R0+C1'*C1;
Psi(1,2)=exp(-2*delta*etaM)*R0;
Psi(1,4)=P*B2*K*C2+C1'*D1*K*C2;
Psi(1,5)=P*B1;
Psi(1,6)=P*B2*K*D2+C1'*D1*K*D2;
Psi(1,7)=A'*H;
Psi(2,2)=exp(-2*delta*etaM)*(S1-S0-R0)-exp(-2*delta*tauM)*R1;
Psi(2,3)=exp(-2*delta*tauM)*G1;
Psi(2,4)=exp(-2*delta*tauM)*(R1-G1);
Psi(3,3)=-exp(-2*delta*tauM)*(R1+S1);
Psi(3,4)=exp(-2*delta*tauM)*(R1-G1');
Psi(4,4)=exp(-2*delta*tauM)*(G1+G1'-2*R1)+(D1*K*C2)'*D1*K*C2;
Psi(4,6)=(D1*K*C2)'*D1*K*D2;
Psi(4,7)=(B2*K*C2)'*H;
Psi(5,5)=-gamma^2*eye(size(B1,2));
Psi(5,7)=B1'*H;
Psi(6,6)=(D1*K*D2)'*D1*K*D2-gamma^2*eye(size(D2,2));
Psi(6,7)=(B2*K*D2)'*H;
Psi(7,7)=-H;
Psi=sdpvar(Psi);

%% The LMI for Phi (tau(t)\in[0,etaM])
Phi=blkvar;
Phi(1,1)=A'*P+P*A+2*delta*P+S0-exp(-2*delta*etaM)*R0+C1'*C1;
Phi(1,2)=exp(-2*delta*etaM)*G0;
Phi(1,4)=P*B2*K*C2+exp(-2*delta*etaM)*(R0-G0)+C1'*D1*K*C2;
Phi(1,5)=P*B2*K+C1'*D1*K;
Phi(1,6)=P*B1;
Phi(1,7)=P*B2*K*D2+C1'*D1*K*D2;
Phi(1,8)=A'*H;
Phi(2,2)=exp(-2*delta*etaM)*(S1-S0-R0)-exp(-2*delta*tauM)*R1;
Phi(2,3)=exp(-2*delta*tauM)*R1;
Phi(2,4)=exp(-2*delta*etaM)*(R0-G0');
Phi(3,3)=-exp(-2*delta*tauM)*(R1+S1);
Phi(4,4)=exp(-2*delta*etaM)*(G0+G0'-2*R0)+(D1*K*C2)'*D1*K*C2+epsilon*C2'*Omega*C2;
Phi(4,5)=(D1*K*C2)'*D1*K;
Phi(4,7)=(D1*K*C2)'*D1*K*D2+epsilon*C2'*Omega*D2;
Phi(4,8)=(B2*K*C2)'*H;
Phi(5,5)=(D1*K)'*D1*K-Omega;
Phi(5,7)=(D1*K)'*D1*K*D2;
Phi(5,8)=(B2*K)'*H;
Phi(6,6)=-gamma^2*eye(size(B1,2));
Phi(6,8)=B1'*H;
Phi(7,7)=(D1*K*D2)'*D1*K*D2+epsilon*D2'*Omega*D2-gamma^2*eye(size(D2,2));
Phi(7,8)=(B2*K*D2)'*H;
Phi(8,8)=-H;
Phi=sdpvar(Phi);

%% Park's conditions
Park0=[R0 G0; G0' R0];
Park1=[R1 G1; G1' R1];

%% Solution of LMIs
LMIs=[P>=0, S0>=0, S1>=0, R0>=0, R1>=0, Omega>=0, Psi<=0, Phi<=0, Park0>=0, Park1>=0];
options=sdpsettings('solver','lmilab','verbose',0);
sol=optimize(LMIs,[],options);

OmegaVal=[];
if sol.problem == 0
primal=check(LMIs);
if min(primal)>=0 && primal(1)>0
OmegaVal=double(Omega);
end
else
yalmiperror(sol.problem);
end
Loading

0 comments on commit 074b102

Please sign in to comment.