Constants affecting feasibility?

40 views
Skip to first unread message

Kenneth

unread,
Sep 6, 2014, 3:41:26 AM9/6/14
to yal...@googlegroups.com
Hi All, 

I've been having an issue with optimising a polynomial with Yalmip using the bmibnb solver:

Solving the constraint problem

F = [0.7937820961016854<=x<=0.8239805928593715];
Rmin = (12*x^10 - 427*x^9 + 22322*x^8 - 125972*x^7 + 329815*x^6 - 492027*x^5 + 451102*x^4 - 286277*x^3 + 162455*x^2 - 80355*x + 1000)/  
      (2000*(x^8 - 6*x^7 + 17*x^6 - 27*x^5 + 26*x^4 - 16*x^3 + 9*x^2 - 4*x + 1))
options = sdpsettings('verbose',1,'solver','bmibnb')
solvesdp(F,Rmin,options)

gives an expected feasible result. However, changing the constants 1000 and 2000 in the above expression to 20000 and 40000 to obtain:

Rmin = (12*x^10 - 427*x^9 + 22322*x^8 - 125972*x^7 + 329815*x^6 - 492027*x^5 + 451102*x^4 - 286277*x^3 + 162455*x^2 - 80355*x + 20000)/  
      (40000*(x^8 - 6*x^7 + 17*x^6 - 27*x^5 + 26*x^4 - 16*x^3 + 9*x^2 - 4*x + 1))

yields an infeasible result. Is this indeed the correct answer, or an issue with the solver? 

Using MatLab's builtin function fminbnd to obtain max/min seems to produce the expected results.

Thanks,

Johan Löfberg

unread,
Sep 6, 2014, 2:03:24 PM9/6/14
to yal...@googlegroups.com
Not too surprising. All the linear programs and upper bound nonlinear programs will be much worse conditioned with such ugly numbers (gurobi fails during bound propagation already in the root node node and claims infeasibility, cplex has issues too, does not claim infeasibility anywhere but apparantly computes incorrect lower bounds as the gap in bmibnb bounces up and down. mosek behaves similarily. glpk performs very well, surprisingly)

Kenneth

unread,
Sep 6, 2014, 5:01:23 PM9/6/14
to yal...@googlegroups.com
Thanks for your quick reply Johan. 

I've tried to use glpk but for some reason i get a 'Solver not applicable (glpk)' message. Any suggestions? Perhaps I did not configure glpk properly. 

Best regards,

Mark L. Stone

unread,
Sep 6, 2014, 9:50:14 PM9/6/14
to yal...@googlegroups.com
Perhaps you misinterpreted what Johan wrote:
Use
options = sdpsettings('verbose',1,'solver','bmibnb','bmibnb.lowersolver','glpk');
solvesdp(F,Rmin,options)

Then you should see good performance.

Johan Löfberg

unread,
Sep 7, 2014, 2:53:49 AM9/7/14
to yal...@googlegroups.com
thanks, and then some more

options = sdpsettings('verbose',1,'solver','bmibnb','bmibnb.lowersolver','glpk','bmibnb.lpsolver','glpk');

http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Solvers.BMIBNB
http://users.isy.liu.se/johanl/yalmip/pmwiki.php?n=Solvers.BMIBNBTheory

Reply all
Reply to author
Forward
0 new messages