interface yalmip with an sqp solver

318 views
Skip to first unread message

Eike F

unread,
Apr 30, 2015, 12:42:37 PM4/30/15
to yal...@googlegroups.com
Hello again!

I would like to solve an sdp with bilinear constraints with an sqp tool by rewriting semidefinite constraints as equality constraints with a slack variable (A >=0 to A= S^2). I had a look at the export function but am not able to use its output to make an sqp problem,
because whenever I call export it compiles a model for a specific solver yet none of the bmi solvers I have (bmibnb and penlab) support initial guesses and export returns an error.
Is there a way around that?
Also: Could you explain to me the structure of the internal model? Up to now I use the penstruct data but I guess that using the internal model directly might be better.

Cheers,

Eike

Johan Löfberg

unread,
Apr 30, 2015, 12:52:53 PM4/30/15
to yal...@googlegroups.com
Any particular SQP tool? fmincon is an sqp solver

Note sure what you actually ask though. How to export to a solver-nonsoecific format?

[~,~,~,model]=export(A>=0,[],sdpsettings('solver','none'))

gives you the YALMIP data (basically sedumi format for the linear stuff)

Eike F

unread,
Apr 30, 2015, 1:27:01 PM4/30/15
to yal...@googlegroups.com
Thank you for the fast reply!

I would use fmincon but yalmip tells me it is non-applicable for bilinear constraints (also it doesn't accept inital values as in the error message below.)

If I choose solver 'none', Yalmip still doesn't accept initial guesses (usex0). Can I get around that?

error: You have specified an initial point, but the selected solver does not support warm-starts through YALMIP


Sorry for the confusion. Your guess is right: I would like to export to a solver-independent format, I'll have a look at the sedumi format, thank you for that!
Is there also a document where I can find the specifics of how non-linear constraints are written in the internal model?

Johan Löfberg

unread,
Apr 30, 2015, 1:46:13 PM4/30/15
to yal...@googlegroups.com
fmincon supports bilinear constraints, and initial guesses, so you've done something wrong there.

No documentation

Johan Löfberg

unread,
Apr 30, 2015, 1:48:02 PM4/30/15
to yal...@googlegroups.com
additionally, why bother with yalmip setting up initial guesses if you are writing a solver your self anyway

Eike F

unread,
Apr 30, 2015, 1:52:11 PM4/30/15
to yal...@googlegroups.com
Hm,
I'll look into that fmincon thing.

I wanted yalmip to provide the initial guess, because in the yalmip problem formulation it is clear which values are which. If I have the anonymous list of variables from the model data I don't know the order of the entries of the initial vector. At least for the penstruct data).

Eike F

unread,
May 4, 2015, 8:54:35 AM5/4/15
to yal...@googlegroups.com
ok,
I found out what problem I am really facing. I would like to solve an SDP with bilinear constraints (Actually it's an SOS problem, for example that one here: [1])

Penlab, which is the only bilinear sdp solver I have at hand, can't handle it even through yalmip.

I tried to replace all semi-definite constraints with equality constraints and a matrix slack variable. My sqp solver couldn't handle that.
But: If I mimic the pre-processing of yalmip and add constraints which yield a block-diagonal structure in the semi-definite constraints, the sqp solver yields the right result.

Therefore I would like to use the preprocessing of yalmip and then plug the resulting problem into an sqp solver.
But if I have a bilinear SDP, the export function doesn't accept initial values, even if I use solver 'none'.
I can't use solver 'fmincon' because it cannot solve SDPs. (I could introduce the mentioned slack variables beforehand but then I would lose the pre-processing).

Could you point me to the file(s) in yalmip which I have to change to enable initial conditions for solver 'none' or 'penlab'?

Best,
Eike




[1] https://groups.google.com/forum/?fromgroups#!topic/yalmip/RumlFINTsDw

Johan Löfberg

unread,
May 4, 2015, 8:56:17 AM5/4/15
to yal...@googlegroups.com
If you mean the sos-preprocessing, use compilesos first, and then export that model

Johan Löfberg

unread,
May 4, 2015, 9:03:46 AM5/4/15
to yal...@googlegroups.com
To add (artificial) support for initial guess in 'none' add 

solver(i).supportsinitial = 1;

on line 1455 in definesolvers.m (assuming you are using the latest official release)
Reply all
Reply to author
Forward
0 new messages