0
H_infinityコントロールを実装する必要があります。しかし、変数gama^2の宣言方法はわかりません。 A、... Gが行列を知っているMATLAB:LMILABでLMI変数を宣言する方法
min gama
s.t
| P * * * |
| 0 gama^2I * * | > 0
| AZ+BL E Z+Z'-G * |
| CZ+DL F 0 I |
が、私は恒等行列であり、P、Z、Lはunknow行列である:
は、これは私の問題です。
これは私のコードです:あなたの助けを事前に
setlmis([]);
gama = lmivar(1,[1 1]);
Z = lmivar(2,[n,n]);
L = lmivar(2,[m,n]);
P = lmivar(1,[n,1]);
%%------------------
YRL = -newlmi;
lmiterm([YRL 1 1 P],1,1); % term P
lmiterm([YRL 2 1 0],0); % term 0
>> lmiterm([YRL 2 2 0],gamaI); % term gama2I ????
lmiterm([YRL 3 1 Z],A,1); % term AZ
lmiterm([YRL 3 1 L],B,1); % term BL
lmiterm([YRL 3 2 0],E(:,:,i)); % term E
lmiterm([YRL 3 3 Z],1,1,'s'); % term Z + Z'
lmiterm([YRL 3 3 0],G); % term G
lmiterm([YRL 4 1 Z],FC,1); % term CZ
lmiterm([YRL 4 1 L],D,1) % term DL
lmiterm([YRL 4 2 0],F); % term F
lmiterm([YRL 4 3 0],0); % term 0
lmiterm([YRL 4 4 0],I); % term I
%%------------------
LMISYS = getlmis;
nsis = decnbr(LMISYS);
c = zeros(nsis,1);
for j = 1:nsis
gamaj = defcx(LMISYS,j,gama);
c(j) = gamaj;
end
options = [1e-6 0 0 0 0];
[copt,xopt] = mincx(LMISYS,c);
gama_sol = c'*xopt
K = L_sol * inv(Z_sol)
感謝。それは
GAMMA2I= lmivar(1,[k 0]);
として宣言されなければならないので
私はgamaを最小化したいときに 'GAMMA2I = lmivar(1、[k 0]);を宣言できますか? – Lara
とにかくそれをしなければならない – AVK
MATLABが 'gama'と' gama^2'のこの関係を理解しているかどうか疑いがあります。私のコードの最適化問題は正しいですか? – Lara