|
Hello, everyone!
Recently, I am trying to solve a delay problem of control system. I encounter the following error in the use of sedumi.
??? Error using ==> +
Out of memory. Type HELP MEMORY for your options.
Error in ==> C:\Program_Files\MATLAB\MATLAB6p5\toolbox\SeDuMi_1_21\getsymbada.m
On line 68 ==> SYMBADA = SYMBADA + Ablks'*Ablks;
Error in ==> C:\Program_Files\MATLAB\MATLAB6p5\toolbox\SeDuMi_1_21\sedumi.m
On line 411 ==> ADA = getsymbada(A,Ablkjc,DAt,K.sblkstart);
Error in ==> C:\Program_Files\MATLAB\MATLAB6p5\toolbox\sostools\sossolve.m
On line 99 ==> [x,y,info] = sedumi(At,b,c,K,pars);
Error in ==> D:\Project\Matlab Work\SOS\Nonlinear Time-Delay System\Delay1.m
On line 61 ==> prog = sossolve(prog);
I don't think the my problem is so big. So I wonder if there is some problem of sedumi. And my code is as follows:
clear;clc;
tau = 0.1;
syms p11 p12 p21 p22 q11 q12 q21 q22 t111 t112 t121 t122 t211 t212 t221 t222 real;
Decision_vars = [p11 p12 p21 p22 q11 q12 q21 q22 t111 t112 t121 t122 t211 t212 t221 t222];
syms x1 x2 xd1 xd2 y1 y2 z1 z2 theta1 theta2 t1 t2 real;
Independent_vars = [x1 x2 xd1 xd2 y1 y2 z1 z2 theta1 theta2 t1 t2];
prog = sosprogram(Independent_vars,Decision_vars);
Vec_r = monomials([theta1,theta2],4);
[prog,r11] = sospolyvar(prog,Vec_r,'wscoeff');
[prog,r12] = sospolyvar(prog,Vec_r,'wscoeff');
[prog,r21] = sospolyvar(prog,Vec_r,'wscoeff');
[prog,r22] = sospolyvar(prog,Vec_r,'wscoeff');
P = [p11 p12;p21 p22];
Q = [q11 q12;q21 q22];
R = [r11 r12;r21 r22];
RT = [r11 r21; r12 r22];
T1 = [t111 t112;t121 t122];
T2 = [t211 t212;t221 t222];
A0 = [x2 xd1;-1 0];
A1 = [-1+x2 0;0 1];
B = [0;1];
Matrix1 = [P 0.5*P 0.5*P;0.5*P 0.5*Q 0.5*R;0.5*P 0.5*RT 0.5*Q];
poly1 = [x1;x2;y1;y2;z1;z2]'*Matrix1*[x1;x2;y1;y2;z1;z2]-0.01*(x1^2+x2^2);
poly2 = [t1;t2]'*T1*[t1;t2];
poly3 = [t1;t2]'*T2*[t1;t2];
Vec_S = monomials([x1;x2;xd1;xd2],2);
[prog,S01] = sospolyvar(prog,Vec_S,'wscoeff');
[prog,S02] = sospolyvar(prog,Vec_S,'wscoeff');
[prog,S11] = sospolyvar(prog,Vec_S,'wscoeff');
[prog,S12] = sospolyvar(prog,Vec_S,'wscoeff');
S0 = [S01 S02];
S0T = [S01;S02];
S1 = [S11 S12];
S1T = [S11;S12];
Ze = [0 0;0 0];
Matrix2 = [P*A0'+S0T*B'+Q+2*P+A0*P+B*S0+tau*(T1+T2) 2*(A1*P+B*S1-P) (P*A0'+S0T*B')+subs(R,theta2,0) (P*A0'+S0T*B')+subs(RT,theta1,0);
Ze -Q (P*A1'+S1T*B')-subs(R,theta2,-tau) (P*A1'+S1T*B')-subs(RT,theta1,-tau);
Ze Ze -tau^-1*T1 -diff(R,theta1)-diff(R,theta2);
Ze Ze Ze -tau^-1*T2];
poly4 = -[x1;x2;xd1;xd2;y1;y2;z1;z2]'*Matrix2*[x1;x2;xd1;xd2;y1;y2;z1;z2];
prog = sosineq(prog,poly1)
prog = sosineq(prog,poly2)
prog = sosineq(prog,poly3)
prog = sosineq(prog,poly4)
prog = sossolve(prog);
p11 = sosgetsol(prog,p11);
p12 = sosgetsol(prog,p12);
p21 = sosgetsol(prog,p21)
p22 = sosgetsol(prog,p22);
P = [p11 p12;p21 p22]
q11 = sosgetsol(prog,q11);
q12 = sosgetsol(prog,q12);
q21 = sosgetsol(prog,q21);
q22 = sosgetsol(prog,q22);
Q = [q11 q12;q21 q22]
r11 = sosgetsol(prog,r11);
r12 = sosgetsol(prog,r12);
r21 = sosgetsol(prog,r21);
r22 = sosgetsol(prog,r22);
R = [r11 r12;r21 r22]
RT = [r11 r21;r12 r22];
Matrix1 = [P 0.5*P 0.5*P;0.5*P 0.5*Q 0.5*R;0.5*P 0.5*RT 0.5*Q];
poly1 = [x1;x2;y1;y2;z1;z2]'*Matrix1*[x1;x2;y1;y2;z1;z2]
t111 = sosgetsol(prog,t111);
t112 = sosgetsol(prog,t112);
t122 = sosgetsol(prog,t122);
T1 = [t111 t112;t121 t122]
t211 = sosgetsol(prog,t211);
t212 = sosgetsol(prog,t212);
t222 = sosgetsol(prog,t222);
T2 =[t211 t212;t221 t222]
poly2 = [t1;t2]'*T1*[t1;t2]
poly3 = [t1;t2]'*T2*[t1;t2]
S01 = sosgetsol(prog,S01);
S02 = sosgetsol(prog,S02);
S0 = [S01 S02]
S11 = sosgetsol(prog,S11);
S12 = sosgetsol(prog,S12);
S1 = [S11 S12]
|