1

I'm using the neos-server to solve a highly constrained MINLP, using the bonmin algorithm. Solving using either a Branch and Bound or the hybrid method. The input code is AMPL

I want to know if it's possible to output variable results for a failed run?

I've tried just about every bonmin option listed here

https://projects.coin-or.org/Bonmin/browser/stable/1.7/Bonmin/doc/BONMIN_UsersManual.pdf?format=raw

I don't know enough about optimization solvers to really understand all of these options.

I've tried different AMPL options but these only work if I have a successful run.

Ultimately, I want to output all the variables in my model with the values from the latest failed run.

This is my commands file

options bonmin_options "bonmin.bb_log_level 4 \
bonmin.algorithm B-BB print_level 6";
solve;
option display_precision 10;
display solve_result_num, solve_result;
display cost.result;
display _varname, _var;

Below is a the header output from a failed run. This provides outputs for all my variables but they are all 0

Solver   : minco:Bonmin:AMPL
   Start    : 2017-08-30 11:20:12
   End      : 2017-08-30 11:26:34
   Host     : NEOS HTCondor Pool

   Disclaimer:

   This information is provided without any express or
   implied warranty. In particular, there is no warranty
   of any kind concerning the fitness of this
   information  for any particular purpose.
*************************************************************
File exists
You are using the solver bonmin-ampl.
Executing AMPL.
processing data.
processing commands.
Executing on prod-exec-1.neos-server.org

Presolve eliminates 20629 constraints and 18794 variables.
Substitution eliminates 8664 variables.
Adjusted problem:
12175 variables:
    7093 nonlinear variables
    5082 linear variables
10647 constraints; 63680 nonzeros
    2553 nonlinear constraints
    8094 linear constraints
    8084 equality constraints
    2563 inequality constraints
1 linear objective; 17 nonzeros.

Setting $presolve_fixeps >= 1.41e-14 could change presolve results.

Bonmin 1.8.4 using Cbc 2.9.6 and Ipopt 3.12.4
bonmin: bonmin.bb_log_level 4
bonmin.algorithm B-BB
print_level 6

Start reading options from stream.
Finished reading options from file.
Cbc3007W No integer variables - nothing to do

******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************

NLP0012I 
              Num      Status      Obj             It       time                 Location
NLP0014I             1      INFEAS 2.2729823     1144 178.86781
NLP0014I             2      INFEAS 2.2729823     1144 176.90811
Cbc3007W No integer variables - nothing to do
Cbc0006I The LP relaxation is infeasible or too expensive

    "Finished"

bonmin: Infeasible problem
solve_result_num = 220
solve_result = infeasible

cost.result = infeasible
user_123
  • 62
  • 12
  • 1
    It looks as if the problem is infeasible, ie there is no possible set of variables that would satisfy the constraints. That being the case, I'm not sure there are any variables to output; can you clarify what you're looking for here? – GB supports the mod strike Aug 30 '17 at 22:13
  • So if a run is infeasible or failed, there is no way to output the values for failed run? This is being run with a years worth of data with a few thousand variables and constraints. I know generally what the problem is I just was wondering if I could pinpoint exactly where the error or infeasiblity is happening. – user_123 Aug 31 '17 at 11:31
  • I'm not familiar with bonmin, but to the best of my understanding, if a problem is infeasible then it's quite possible that the solver isn't calculating any values per se before it determines that the problem is infeasible. If I were to input a problem with e.g. x<=10 and x>=20, a good solver can recognise that there is no possible value of x without having to test values of x first. – GB supports the mod strike Aug 31 '17 at 12:07
  • A couple of things you might try if you haven't already: asking the solver to produce an irreducible inconsistent set of constraints (not sure if bonmin has IIS functionality, but if not, you should be able to switch to something like AMPL-Gurobi with minimal pain since you're using NEOS), or trial-and-error with disabling constraints until it becomes feasible, to figure out which constraints are involved in the infeasibility. – GB supports the mod strike Aug 31 '17 at 12:09
  • Thanks for the input. bonmin doesn't seem to have any options that produce irreducible constraints. Trail and error would be painful but I could do that as a last resort. I'm pretty sure the error is happening because I have an upper bound set on a variable, and given my input data if the upper bound is set too low then the solver will never reach a solution. I need to set this bound low and my input data can't change given my overall problem to find a solution within this bound. – user_123 Aug 31 '17 at 12:45
  • Depending on the problem, you might be able to do something like replacing hard upper bounds with soft constraints: e.g. instead of x <= 10, set x = x1+x2, x1 <= 10, x2 >= 0, and then weight x2 heavily in the objective function (but not so absurdly heavily that it causes numerical issues). – GB supports the mod strike Sep 01 '17 at 00:30
  • Yes I had thought about that but I haven't tried yet – user_123 Sep 01 '17 at 11:44
  • For difficult MINLPs I usually make sure I can solve the relaxed NLP and pass that solution to the MINLP solvers. – Erwin Kalvelagen Sep 01 '17 at 20:16
  • argh, I realised I misread the "nonlinear" part of the problem, so my suggestion to try Gurobi will not be viable unless your constraints are linear. Sorry! – GB supports the mod strike Sep 04 '17 at 22:39
  • With setting a soft obj function outlined above, I can solve the problem. However the results are similar to the results with no upperbound set. I tried increasing the cost of X2 but would have a failed run. – user_123 Sep 05 '17 at 20:10

0 Answers0