A problem with Lambda_max in CVX!

Hi there,

I have this piece of code. I want to put a threshold on the maximum eigenvalue of a matrix which is constructed based on decision variables of the optimization problem. But, it seems that Lambda_max(.) doesn’t work correctly. After solving the problem, when I check the maximum of eigenvalue, it’s 129, which is much greater than my threshold of 10.

I have to mention that the problem is feasible and if I put some wisely extra constraints on the decision variables, I can reach the desired maximum eigenvalue for example something around 5. Could please let me know what can be the problem?

The code:

%% Optimization problem
n=18;

cvx_begin quiet
cvx_solver mosek;
cvx_precision best
variable x(n)
minimize(x(16))
subject to
B  * x >= 0;
B0 * x <= (1 + x(16)) * I0;
B2 * x >= (x(17) - x(16)) * I2;
-(EBF - B) * x + (x(16) + x(18) + Delta)*I >= 0;
x(16) + x(17) >= (1 + x(18)*Td)/(deltaa); 
x(16) + eps <= 0;

PP = [x(1),x(9)/2,x(10)/2,x(11)/2,x(5)/2;x(9)/2,x(2),x(12)/2,x(13)/2,x(6)/2;x(10)/2,x(12)/2,x(3),x(14)/2,x(7)/2;x(11)/2,x(13)/2,x(14)/2,x(4),x(8)/2;x(5)/2,x(6)/2,x(7)/2,x(8)/2,x(15)];

lambda_max(PP) <= 10;

cvx_end

You could also find the optimization part of the code here:

  1. Never use precision best with Mosek. It introduces settings that confuse the solver as proved on various occasions in the past.

  2. Do not use quiet for debugging. Disable it and show us the log output if 1. did not help.

  3. Show completely reproducible code with all input data and checks if 1. and 2. don’t help.

1 Like

Thanks a lot, the problem was with “precision best”. When I commented it, the problem was solved.
Best