My optimization problem is a Max-Min problem :
maximize min (w' * Gi * fj * fj' * Gi' * w)/(w' * Gi * K * Gi' * w + c)
s.t
some_power_constrain
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)
s.t
some_power_constrain
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)
s.t.
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
gamma=(Lbound+ubound)/2;
% solve the feasibility problem
cvx_begin
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);
cvx_end
%% testing feasibility
if strcmp(cvx_status,'Solved')
ubound=gamma
X_opt = X
objval_opt=gamma
else
Lbound=gamma
end
end
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
]
Thanks