# CVX warning on LMI constraint

There is a optimization problem that is feasible …but I have faced with this warning when the programe run:

Warning :
Homogeneous problem detected; solution determined analytically.
Status: Solved
Optimal value (cvx_optval): +1

unfortunately it has zero solution …
could you help to solve it?

code :

``````A = [-0.45 0.45 0;0.09 0.225 -0.45;0.135 0.135 -0.54];
B = [1 0;0.2 1;0 3];
C = [0.1 0.8 0.7;-0.6 0.9 0.6];
Ad = [-0.04 0.02 0;0.02 -0.16 0.04;0.2 -0.06 -0.2];
k = 0:100
TauSC = 0.2*sin(k);
TauCA = 0.4*sin(k);
d = 0.1*cos(k);
n = size(A,1);
[n,m] = size(B);
[q,n] = size(C);

mu1 = 0.8;
mu2 = 0.6;
tau1 = -0.2;
tau2 = 0.2;
tau3 = -0.4;
tau4 = 0.4;
d1 =-0.1;
d2 =0.1;
[U,S,V] = svd(B)
%% H-infinite
cvx_begin sdp
variable P1(n,n) symmetric;
variable P2(n,n) symmetric;
variable R1(n,n) symmetric;
variable R2(n,n) symmetric;
variable R4(n,n) symmetric;
variable Q1(n,n) symmetric;
variable Q2(n,n) symmetric;
variable Q4(n,n) symmetric;
variable O1(n,n) symmetric;
variable O2(n,n) symmetric;
variable O4(n,n) symmetric;
variable T1(n,n) symmetric;
variable T2(n,n) symmetric;
variable T4(n,n) symmetric;

variable E(8,8) symmetric;

variable omega11(q,q);
variable omega12(n-q,n-q);
variable omega21(q,q);
variable omega22(n-q,n-q);

variable Y(n,n)
variable X(q,n)
variable W(q,m)
variable Z(n,m)
variable gamasq nonnegative;
variable gama1sq nonnegative;

R =[R1 R2;R2' R4];
Q =[Q1 Q2;Q2' Q4];
O =[O1 O2;O2' O4];
T =[T1 T2;T2' T4];
U1 = U(:,1:2);
U2 = U(:,3);
P = [P1 zeros(n,n);zeros(n,n) P2];
omega1 = U1*omega11*U1'+U2*omega12*U2';
omega2 = U1*omega21*U1'+U2*omega22*U2';

Acl  = [A'*omega1' zeros(n,n);zeros(n,n) Y];
A1cl = [zeros(n,n) mu1*C'*X;zeros(n,n) zeros(n,n)];
A2cl = [zeros(n,n) zeros(n,n);mu2*Z*B' zeros(n,n)];
A3cl = [mu1*mu2*C'*W*B' zeros(n,n);zeros(n,n) zeros(n,n)];
B1cl = [zeros(m,n) mu1*X;zeros(m,n) zeros(m,n)];
B2cl = [zeros(m,n) zeros(m,n);mu2*B'*omega1' zeros(m,n)];
B3cl = [mu1*mu2*W*B' zeros(m,n);zeros(m,n) zeros(m,n)];
B1hcl = [zeros(2,3) mu1*X;mu2*B'*omega1' zeros(2,3)];
Pcl  = [P1-(omega1+omega1') zeros(n,n);zeros(n,n) P2-(omega2+omega2')];

omegaT1 = inv(V')*pinv(S)*inv(U)*omega1*U*S*V';
omegaT2 = inv(V')*pinv(S)*inv(U)*omega2*U*S*V';

C1cl = [C'*omegaT2' zeros(3,6);zeros(3,2) zeros(3,6)];
C2cl = [zeros(3,6) zeros(3,2);zeros(3,6) Z];
C3cl = [zeros(3,6) mu1*C'*W;zeros(3,6) zeros(3,2)];
D1cl = [omegaT2' zeros(2,6);zeros(2,2) zeros(2,6)];
D2cl = [zeros(2,6) zeros(2,2);zeros(2,6) omegaT1'];
D3cl = [zeros(2,6) mu1*W;zeros(2,6) zeros(2,2)];
PQRST = -P+(tau2-tau1+1)*R+(d2-d1+1)*Q+(tau4-tau3+1)*O+(tau4+tau2-tau1-tau3+1)*T;
DomegaT = [omegaT2 zeros(2,2);zeros(2,2) omegaT1]
OT = [zeros(4,4) DomegaT;DomegaT' zeros(4,4)]

minimize 1

subject to
% % H_infinite
[PQRST zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,4) zeros(6,4) zeros(6,4) Acl zeros(6,8);
zeros(6,6) -Q zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,4) zeros(6,4) zeros(6,4) Adcl zeros(6,8);
zeros(6,6) zeros(6,6) -R zeros(6,6) zeros(6,6) zeros(6,4) zeros(6,4) zeros(6,4) A1cl C1cl;
zeros(6,6) zeros(6,6) zeros(6,6) -O zeros(6,6) zeros(6,4) zeros(6,4) zeros(6,4) A2cl C2cl;
zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6) -T zeros(6,4) zeros(6,4) zeros(6,4) A3cl C3cl;
zeros(4,6) zeros(4,6) zeros(4,6) zeros(4,6) zeros(4,6) -gamasq*eye(4) zeros(4,4) zeros(4,4) B1cl D1cl;
zeros(4,6) zeros(4,6) zeros(4,6) zeros(4,6) zeros(4,6) zeros(4,4) -gamasq*eye(4) zeros(4,4) B2cl D2cl;
zeros(4,6) zeros(4,6) zeros(4,6) zeros(4,6) zeros(4,6) zeros(4,4) zeros(4,4) -gamasq*eye(4) B3cl D3cl;
Acl' Adcl' A1cl' A2cl' A3cl' B1cl' B2cl' B3cl' Pcl zeros(6,8);
zeros(8,6) zeros(8,6) C1cl' C2cl' C3cl' D1cl' D2cl' D3cl' zeros(8,6) OT]<=0

%H2-constraint
CH = [zeros(6,8);zeros(6,8);C1cl;C2cl;C3cl]
CHH =[zeros(8,6) zeros(8,6) C1cl' C2cl' C3cl']

B1h = [zeros(2,3) mu1*X;mu2*B'*omega1' zeros(2,3)]
B2h = [mu1*mu2*W*B' zeros(2,3);zeros(2,3) zeros(2,3)]
BH = [B1h;B2h]
BHH = [B1h' B2h']
DH = [zeros(4,8);D3cl]
DHH =[zeros(8,4) D3cl']

PH = [P zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6);zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6);zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6);zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6);zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6) zeros(6,6)]

[PH AH CH;
AHH -Pcl zeros(6,8);
CHH zeros(8,6) OT]>=0

[E BH DH;
BHH -Pcl zeros(6,8);
DHH zeros(8,6) OT]>=0

trace(E)< gama1sq

cvx_end
``````

Ac = inv(omega2)*Y’
Bc = inv(omega2)*X’
Cc = inv(omegaT1)*Z’
Dc = inv(omegaT1)*W’

CVX was able to determine without calling the solver that all zeros produces a feasible solution. cvx_optval = 1 because your objective is `minimize 1`. If you have only a feasibility problem, you don’t even need to include an objective.

Apparently you are doing some kind of control analysis? In which case, perhaps the theoretical criteria involve strict satisfaction of LMIs, e.g. \prec rather than \preceq. Given that CVX and real-world solvers only deal with non-strict LMIs, you will have to reformulate your problem to dehomgeniize (remove the “zero” homgeneous solution) by changing the RHS from zero and/or adding another constraint, such as a trace equality constraint. This is not my area, so I can’t be of much help in proper formulation.

n your problem, I somewhat arbitrarily added a constraint that the trace of LHS of your first LMI == -1, and CVX called the solver and was able to find a non-zero feasible solution. I have no idea whether that is meaningful for your problem.