LMI - Feedback Stabilization of Time-Delay System

6 views (last 30 days)
Dear community:
I hope you can help me with the following. I am a beginner in the use of Linear Matrix Inequalities in Control Applications. As guide, i am using the book "LMIs in Control Systems: Analysis, Design and Applications" from Guang-Ren Duan and Hai-Hua yu. In order to solve the example 7.16 of the book; I am trying to program the LMI of the Theorem 7.19 in MATLAB, however i got compilation errors, could anybody help me please?
My MATLAB code is as follows:
% Definition of the Matrices
% Clear the workspace
clc
clear all
% Specify parameter matrices
A = [-1 0 1;
0 2 -1;
2 0 -3]
Ad = [ 1 0 1;
2 1 1;
0 0 -1]
B = [1 1;
1 2;
0 1]
d = 0.1;
% LMI problem definition
%% Definition of the Decision Variables
setlmis([]);
X = lmivar(1,[3 1]);
W = lmivar(2,[2,3]);
Beta = lmivar(1,[1 1]);
% Definitions of the LMI
% LMI #1
% LMI #1 LMI(1,1)
lmiterm([1 1 1 X],1,(A + Ad)'); % #1 LMI(1,1) / X*(A + Ad)^T
lmiterm([1 1 1 X],(A + Ad),1); % #1 LMI(1,1) / + (A + Ad)*X
lmiterm([1 1 1 W],B,1); % #1 LMI(1,1) / + BW
lmiterm([1 1 1 -W],1,B'); % #1 LMI(1,1) / + W^T*B^T
lmiterm([1 1 1 0],d,(Ad*Ad')); % #1 LMI(1,1) / + d*Ad*Ad^T
% LMI #1 LMI(2,1)
lmiterm([1 2 1 X],d*A,1); % #1 LMI(2,1) / d*A*X
lmiterm([1 2 1 W],(d*B),1); % #1 LMI(2,1) / d*B*W
% LMI #1 LMI(2,2)
lmiterm([1 2 2 Beta],-1*d,1); % #1 LMI(2,1) / d*A*X
% LMI #1 LMI(3,1)
lmiterm([1 3 1 X],(d*Ad),1); % #1 LMI(2,1) / d*Ad*X
% LMI #1 LMI(3,2)
lmiterm([1 3 2 0],0,1); % #1 LMI(2,1) / 0
% LMI #1 LMI(3,3)
lmiterm([1 3 3 0],-1*d,1); % #1 LMI(2,1) / -d
lmiterm([1 3 3 Beta],d,1); % #1 LMI(2,1) / d*Beta
% LMI #2: 0 < X
lmiterm([-2 1 1 X],1,1); % #2 LMI, right-hand side / X
lmiterm([2 1 1 0],0); % #2 LMI, left-hand side / 0
% LMI #3: 0 < Beta
lmiterm([-3 1 1 Beta],1,1); % #3 LMI, right-hand side / Beta
lmiterm([3 1 1 0],0); % #3 LMI, left-hand side / 0
% LMI #3: -1 < Beta
lmiterm([-4 1 1 Beta],-1,1); % #4 LMI, right-hand side / Beta
lmiterm([4 1 1 0],1); % #4 LMI, left-hand side / 0
stabilz2 = getlmis;
%LMI Solution
[tmin,xfeas] = feasp(stabilz2);
Xvalue = dec2mat(stabilz2,xfeas,X)
Wvalue = dec2mat(stabilz2,xfeas,W)
Betavalue = dec2mat(stabilz2,xfeas,Beta)
k = Wvalue*inv(Xvalue)

Accepted Answer

Azeddine Elmajidi
Azeddine Elmajidi on 13 May 2020
Hi,
I think there was some errors in your lmiterm, i prefer to use the gui editor "lmiedit" it helps to avoid errors, with using it i can produce the same results that you have in the book.
%Definition of the Matrices
% Clear the workspace
clc
clear all
% Specify parameter matrices
A = [-1 0 1;
0 2 -1;
2 0 -3]
Ad = [ 1 0 1;
2 1 1;
0 0 -1]
B = [1 1;
1 2;
0 1]
d = 0.1;
% LMI problem definition
%% Definition of the Decision Variables
setlmis([]);
X = lmivar(1,[3 1]);
W = lmivar(2,[2,3]);
Beta = lmivar(1,[1 1]);
% Definitions of the LMI
% LMI #1
% LMI #1 LMI(1,1)
lmiterm([1 1 1 X],1,A','s'); % LMI #1: X*A'+A*X
lmiterm([1 1 1 X],1,Ad','s'); % LMI #1: X*Ad'+Ad*X
lmiterm([1 1 1 W],B,1,'s'); % LMI #1: B*W+W'*B'
lmiterm([1 1 1 0],d*Ad*Ad'); % LMI #1: d*Ad*Ad'
lmiterm([1 2 1 X],d*A,1); % LMI #1: d*A*X
lmiterm([1 2 1 W],d*B,1); % LMI #1: d*B*W
lmiterm([1 2 2 Beta],.5*d,-eye(3),'s'); % LMI #1: -d*Beta*eye(3) (NON SYMMETRIC?)
lmiterm([1 3 1 X],d*Ad,1); % LMI #1: d*Ad*X
lmiterm([1 3 3 Beta],.5*d,eye(3),'s'); % LMI #1: d*Beta*eye(3) (NON SYMMETRIC?)
lmiterm([1 3 3 0],-d*eye(3)); % LMI #1: -d*eye(3)
lmiterm([-2 1 1 X],1,1); % LMI #2: X
lmiterm([-3 1 1 Beta],1,1); % LMI #3: Beta
lmiterm([4 1 1 Beta],1,1); % LMI #4: Beta
lmiterm([-4 1 1 0],1); % LMI #4: 1
stabilz2=getlmis;
%LMI Solution
[tmin,xfeas] = feasp(stabilz2);
Xvalue = dec2mat(stabilz2,xfeas,X)
Wvalue = dec2mat(stabilz2,xfeas,W)
Betavalue = dec2mat(stabilz2,xfeas,Beta)
k = Wvalue*inv(Xvalue)
  2 Comments
Farshid R
Farshid R on 28 Oct 2022
Could you help me with the problem?
https://www.mathworks.com/matlabcentral/answers/1837598-time-varying-parameter-in-lmi

Sign in to comment.

More Answers (0)

Categories

Find more on Linear Matrix Inequalities in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!