Illegal operation: {log-concave} - {real constant}

expr2 is convex, so constraint_term is log-concave, because its log is concave.

In the objective, a constant is subtracted from constraint_term, which violates CVX"s log-convexity (log-concavity) rules. which are documented only at Log of sigmoid function - #3 by mcg .

Anyhow, it looks like this can be rewritten making use of exp(x-y) = exp(c)*exp(-y) Then you get something like
control_cost_min*2^(-constraint_term**2/states_num)*2^(*Eig_val-1e-6)**2/states_num)*exp(1) , modified appropriately with the rest of the stuff in your objective, which are all input data. Perhaps the part I did show is not quite right. I’ll let you work out the correct details.

I think the basic thing you have is minimize(2^(pow_abs(xi, 2))), which CVX will accept. I think your actual objective winds up being that, but with various positive constants multiplying things, plus some additive terms. I think all this other stuff, winds up being irrelevant to the optimization, at least for determination of argmin. You should check the correctness of my statement, in case I didn’t read through the whole objective correctly.