MINLP and Bonmin solver

552 views
Skip to first unread message

Lucy

unread,
Apr 10, 2014, 10:59:52 AM4/10/14
to opti-tool...@googlegroups.com
I am running a MINLP optimisation problem with the Bonmin solver.

It runs successfully however it says number of iterations - 0. Also I do not think it has reached the best solution. Is there anyway to set it to continue to iterate to find a better solution approximation?

Thanks

Lucy

Jonathan Currie

unread,
Apr 11, 2014, 5:41:18 AM4/11/14
to Lucy, opti-tool...@googlegroups.com

Hi Lucy,

 

The number of iterations for BONMIN is actually the number of nodes explored. Some problems are solved at the root node or via heuristics (e.g. cutting planes) which allow it to solve the problem very quickly. Remember BONMIN is designed for convex problems only, thus if there are multiple solutions due to it being non-convex, then the simplest method to find alternate solutions is to vary the initial guess (x0). Alternatively there are a suite of options available via bonminset. The options are document in OPTI/Solvers/bonmin/distribution/BONMIN_UsersManual.pdf which may assist. Most of these are problem dependent though!

 

You can try alternative solving algorithms using the ‘algorithm’ parameter within bonminset, this can provide alternate solutions sometimes. However the default algorithm (B-BB) is typically the most robust (in my experience). I’ve pasted an example below for you.

 

%% BONMIN Example MINLP

clc

%Objective

obj = @(x) -x(1) - x(2) - x(3);

%Constraints

nlcon = @(x) [ (x(2) - 1./2.)*(x(2) - 1./2.) + (x(3) - 1./2.)*(x(3) - 1./2.);

                x(1) - x(2);

                x(1) + x(3) + x(4)];

nlrhs = [1/4;0;2];

nle = [-1;-1;-1];

ub = [1;Inf;Inf;5];

lb = [0;0;0;0];

% Solve

bopts = bonminset('algorithm','B-OA');

opts = optiset('solver','bonmin','display','iter','solverOpts',bopts);

Opt = opti('obj',obj,'nlmix',nlcon,nlrhs,nle,'bounds',lb,ub,'int','BCCI','options',opts)

x0 = [0;0;0;0];

[x,fval,ef,info] = solve(Opt,x0)

 

Jonathan

--
You received this message because you are subscribed to the Google Groups "OPTI Toolbox Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to opti-toolbox-fo...@googlegroups.com.
To post to this group, send email to opti-tool...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Lucy

unread,
Jun 9, 2014, 12:52:38 PM6/9/14
to opti-tool...@googlegroups.com
Hi Jonathan,

Thank you for your reply. I have run my MINLP problem, the output states that it is 'infeasible', stating 'Restoration phase is called at point that is almost feasible, with constraint violation 2.411283e-011. Abort.
NLP0014I             2      FAILED -2.6614223       85 1.089
NLP0014I *           1      INFEAS 10.599628       97 1.181   resolve robustness
Cbc0006I The LP relaxation is infeasible or too expensive

However, I have checked the output values with my constraints and it does seem to be feasible. Is there a way to get more information on the solving process?  The algorithm used was - 'BONMIN: Branch & Bound using IPOPT & CBC'

Any info on this would be greatly appreciated. Thanks in advance,

Lucy

To unsubscribe from this group and stop receiving emails from it, send an email to opti-toolbox-forum+unsub...@googlegroups.com.

Jonathan Currie

unread,
Jun 9, 2014, 6:38:51 PM6/9/14
to Lucy, opti-tool...@googlegroups.com

Hi Lucy,

 

You can try enable a few of the extra outputs via options such as:

 

  BONMIN OUPUT AND LOG LEVEL SETTINGS:

                    bb_log_interval: [ Interval at which node level output is printed (number of nodes) {100} ]

                       bb_log_level: [ Level of branch and bound log detail (0-5) {1} ]

                       lp_log_level: [ Level of LP solver log detail (0-4) {0} ]

                     milp_log_level: [ Level of MILP solver log detail (0-4) {0} ]

                      nlp_log_level: [ Level of NLP solver log detail (0-2) {0} ]

                    nlp_log_at_root: [ Level of NLP solver log detail at root node (0-12) {0} ]

                   oa_log_frequency: [ Frequency (in seconds) of OA log messages  {100} ]

                       oa_log_level: [ Level of OA decomposition log detail (0-2) {1} ]

 

These are all set via bonminset. However not all appear to work as well I’d like! If you send me your problem I would be happy to take a look.

To unsubscribe from this group and stop receiving emails from it, send an email to opti-toolbox-fo...@googlegroups.com.


To post to this group, send email to opti-tool...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--

You received this message because you are subscribed to the Google Groups "OPTI Toolbox Forum" group.

To unsubscribe from this group and stop receiving emails from it, send an email to opti-toolbox-fo...@googlegroups.com.

Reply all
Reply to author
Forward
0 new messages