Solver not applicable (mosek does not support signomial constraints)

474 views
Skip to first unread message

Kali

unread,
Mar 9, 2021, 8:28:11 AM3/9/21
to YALMIP
Hi, 

My objective function is as follows:

max  \sum_{k=1}^K     log(   1   +   2*real(a_k * x' * v_k)  -   (b_k)   -   (c_k * x' * v_k * v_k' * x)   )

The constraints can be reformulated as cone(x,1).

The dimensions are as follows: 
x     = Nx1 complex vector (unknown)
v_k = N x 1 vector (known)
a_k = scalar (known)
b_k = scalar (known)
c_k = scalar (known)

The constraints are second-order cone constraints and the objective is non-linear. So, I reformulated the objective as an exponential cone programming problem using "https://yalmip.github.io/tutorial/exponentialcone/". To be more clear, I used "logsumexp" by considering the objective as follows:

max  \sum_{k=1}^K     log(   e^0   +   e^log(2*real(a_k * x' * v_k))  -   e^log((b_k))   -  e^log( (c_k * x' * v_k * v_k' * x))   )

I am trying to use mosek as the solver, but it is throwing the following error: "Warning: Solver not applicable (mosek does not support signomial constraints)". 

Please advice!

Thanks in advance.

Johan Löfberg

unread,
Mar 9, 2021, 8:31:52 AM3/9/21
to YALMIP
you would have to supply a reproducible example

Johan Löfberg

unread,
Mar 9, 2021, 8:34:53 AM3/9/21
to YALMIP
and it a bit weird as you speak of maxmization, but then you say you use the logsumexp operator which is convex, i.e. that should not be possible at all using mosek since it isn't convex problem

tisdag 9 mars 2021 kl. 14:28:11 UTC+1 skrev Kali:

Kali

unread,
Mar 9, 2021, 8:55:37 AM3/9/21
to YALMIP

Attaching the working code and data required. 
G.zip

Johan Löfberg

unread,
Mar 9, 2021, 9:08:57 AM3/9/21
to YALMIP
As you have written it, it is very far from being exponential-cone representable

The data does not match the desrciption above (A instead of v and c), but if it is the case that you have a sum of logs of concave quadratics Qi(x), i.e that c_k in your desciption is positive, you should write it as

maximize sum log t

t <= Qi(x)

that will be exponential-cone representable

Kali

unread,
Mar 9, 2021, 9:21:52 AM3/9/21
to YALMIP
Thank you. I will implement this. 

Kali

unread,
Mar 9, 2021, 9:50:54 AM3/9/21
to YALMIP
I tried implementing this, but some unknown error is popping up. I also tried the following:

max log(t)

where t <= product(all the quadratics)

This is also not working 

Kali

unread,
Mar 9, 2021, 9:52:01 AM3/9/21
to YALMIP
Can I use non-linear solvers like fmincon? or is it better to reformulate the objective appropriately and use mosek?

Johan Löfberg

unread,
Mar 9, 2021, 9:55:43 AM3/9/21
to YALMIP
No idea what you are trying to do, impossible to know without reproducible code

The objective is -sum(log(t))

with constraints t(i) <= Q(x) and everything else

Johan Löfberg

unread,
Mar 9, 2021, 9:57:31 AM3/9/21
to YALMIP
Of course (although you should not use the cone operator then, better to simply write the quadratic constraints since YALMIP otherwise has to do various ugly stuff to handle the non-smooth cone operator when interfacing a standard local nonlinear solver)

Whether a standard nonlinear solver or mosek with exponential cone performs best is impossible to know before testing

Kali

unread,
Mar 9, 2021, 10:02:18 AM3/9/21
to YALMIP
Thank you. This was very helpful. 

Kali

unread,
Mar 15, 2021, 3:06:42 AM3/15/21
to YALMIP
Hi,

Attaching the objective function and the reproducible code. I tried different approaches, but I am unable to understand where I'm going wrong. Please le me know if you need additional information.

Thank you in advance!



Obj.pdf
G.zip

Johan Löfberg

unread,
Mar 15, 2021, 8:06:22 AM3/15/21
to YALMIP
As I said, you will have to model the stuff manually and replace all log(quadratic) with new variables log(t) and epigraph constraint t<=quadratic

also, you seem to have numerical issues as the term aa-bb which you probably think is real, isn't due to floating-point numerics

>> aa - bb
Quadratic scalar (complex, 16 variables)
Coefficients range: 1.0588e-22 to 0.99825

hence you will have to use real(aa-bb) when creating your epigraphs constraints

Kali

unread,
Mar 15, 2021, 11:43:01 AM3/15/21
to YALMIP
Thank you very much!! It is working now.

Kali

unread,
Mar 15, 2021, 12:04:19 PM3/15/21
to YALMIP
Hi, 

I have another question regarding this optimization problem. What happens when the same objective function is modified a little and the sqrt(log(quadratic)) is to be maximized? Can the same method be applied or will it make the problem non-linear?

Thanks in advance!

Johan Löfberg

unread,
Mar 15, 2021, 12:10:48 PM3/15/21
to YALMIP
sqrt is socp representable so    t<= q , s <= log(t)  and then maximize sqrt(s) should work

Kali

unread,
Mar 15, 2021, 12:52:27 PM3/15/21
to YALMIP
Thank you. It is working. 
Reply all
Reply to author
Forward
0 new messages