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.