I have the following code:
cvx_begin
variables alphas(noRelays) ;
x1 = sum_square_abs(alphas' * G1 *f2);
y1 = sum_square_abs(R*G1*alphas) + SigmaSq;
x2 = sum_square_abs(alphas' * G2 *f1 );
y2 = sum_square_abs(R*G2*alphas) + SigmaSq;
xi = [x1;x2];
yi = [y1;y2];
ZC = zeros(2,1);
subject to
sum_square_abs(alphas'*Pow1_R)<= Psum;
-xi <= gamma*yi; % Error 1 here
yi >= ZC; % Error 2 here
cvx_end
I have two error at the two indicated positions:
Error1 :
Disciplined convex programming error:
Invalid constraint: {concave} <= {convex}
Error in cvx/le (line 21)
b = newcnstr( evalin( 'caller', 'cvx_problem', '[]' ), x, y, '<=' );
Error in Max_Min_optimize_Alphas_03 (line 80)
-xi <= gamma*yi;
Error2 :
Disciplined convex programming error:
Invalid constraint: {convex} >= {constant}
Error in cvx/ge (line 21)
b = newcnstr( evalin( 'caller', 'cvx_problem', '[]' ), x, y, '>=' );
Error in Max_Min_optimize_Alphas_03 (line 72)
yi >= ZC;
Neither of these constraints is convex, so the problem is not convex. CVX is for solving convex problems.
I’m unclear what your question is. CVX is operating exactly as documented here.
I Know that the problem isn’t convex but it is a quasi-convex
[References]
[1] Haitham Hindi, "A Tutorial on Convex optimization", In American Control Conference, Boston, USA, June 2004
----> page 12
[2] Constantinos Skarakis, CONVEX OPTIMIZATION theory and practice, M.Sc. Thesis
http://maths.york.ac.uk/www/sites/default/files/Skarakis.pdf
---> page 59
My original problem is
max min (Xi/Yi) % i = 1,2
subject to
sum_square_abs(alphas'*Pow1_R)<= Psum;
And from Boyd Book (Convex optimization):
The General Fractional programing form is :
minimize max(Xi/Yi)
which is a quasi-convex that could be converted to convex form by using bisection as:
minimize gamma
subject to
Yi > o % i=1,2
Xi <= gamma * Yi % i=1,2
% add original constraints
sum_square_abs(alphas'*Pow1_R)<= Psum;
But since my original problem is maximizing the minimum, i use the form:
minimize max(- Xi/Yi)
subject to
Yi >= 0
-Xi <= gamma * Yi
sum_square_abs(alphas'*Pow1_R)<= Psum;
I want to know if their is a condition for the quasi-convex function to be used in this manipulation or their are any steps i didn’t do it right
CVX does not handle quasiconvex problems natively. You will have to build your own iterative solver that converts the quasiconvex problem to a sequence of convex feasibility problems. But the feasibility problem as you have stated it is not convex, either.
To be honest I simply am not convinced that your original problem is quasiconvex. In order for that to be the case the fixed feasibility problems would themselves have to be convex, and it is quite clear that your model above is not.