Quasi-convex form by Semi-Definite Relaxation

My optimization problem is a Max-Min problem :

maximize min (w' * Gi * fj * fj' * Gi' * w)/(w' * Gi * K * Gi' * w + c)

where the denominator and numerator are +ve real numbers after the multiplication

I converted the problem to:

maximize min (w' * Ri * w)/ ( w' * Mi * w + c)

where :

Ri = Gi * fj * fj'
Mi =  Gi * K * Gi'

And then i expressed it by the trace function as:

maximize min Tr{X*Ri}/(Tr{X*Mi}+c)
   Tr{XZ} <= Psum  %% power constraint
   X      >= 0
   rank(X) = 1

where X is a semi-Definite matrix

 X  = w *w' ; %

for every i ( where i =1,2 ) —> Ri, Mi are 3X3 matrices

z is a 3X3 matrix

I dropped the rank-1 constraint for SDP Relaxation
And used Bisection to solve the problem as follow:

ubound=exp(3); Lbound=0; % initial upper and lower bounds
bisection_tol=1e-4; % bisection tolerance
while ubound-Lbound >= bisection_tol
   % solve the feasibility problem
       variable X(3,3); %symmetric;
       q1 = trace(X*R1);   q2 = trace(X*R2);
       g1 = trace(X*M1)+1; g2 = trace(X*M2)+1;
       %% Combining
         qi  = [q1;q2];    gi  = [g1;g2];
        minimize 0
        subject to
             qi <= gamma*gi
             trace(X*Z)<= Psum
             % X == semidefinite(3);
             X == hermitian_semidefinite(3);
  %% testing feasibility
   if strcmp(cvx_status,'Solved')
     X_opt = X

Now the problem worked and it provides me with X value when Z,Ri, Mi are real-valued

My Problems:

1- when i use complex values for Z,Ri, Mi ----> it give me the following error

Error using cvxprob/newcnstr (line 181)
Disciplined convex programming error:
Invalid constraint: {complex affine} <= {complex affine}

Error in cvx/le (line 21)
b = newcnstr( evalin( 'caller', 'cvx_problem', '[]' ), x, y, '<=' );

Error in Max_Min_optimize_Alphas_07_SDR (line 72)
             qi <= gamma*gi

How i modify the code to get me the result in case of complex values

2- my original optimization variable is (w) where X = w*w’

i could get it easily in case of real values from X

How to get it in case if complex values [if the problem is modified and worked :slight_smile: ]


A complex inequality makes no sense. What does it mean, to say, “1 + j * 2i <= 3 - j * 4i”? If you can answer this question, then you will probably understand how to fix your model.

you are right about the complex inequality.
i modified the question and added my original problem, kindly check it again and suggest me what to do if possible

I’m not seeing how your modification helped. You’re still asking how to fix the complex inequality. You shouldn’t have a complex inequality, it makes no sense. You need to determine what you’re actually trying to accomplish here.