LMI - Feedback Stabilization of Time-Delay System

6 vues (au cours des 30 derniers jours)
Rodrigo Zenon Guzman Iturra
Commenté : Farshid R le 28 Oct 2022
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)

Réponse acceptée

Azeddine Elmajidi
Azeddine Elmajidi le 13 Mai 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 commentaires
Rodrigo Zenon Guzman Iturra
Thank you for your help
Farshid R
Farshid R le 28 Oct 2022
Could you help me with the problem?
https://www.mathworks.com/matlabcentral/answers/1837598-time-varying-parameter-in-lmi

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Linear Matrix Inequalities dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by