1

I've been struggling to find some open source non-linear integer optimization solvers! I am trying to solve a 16 variable problem where 8 values are integers, subjected to two nonlinear objective functions and 5 nonlinear constraint functions. Is this possible in the open-source domain? I got PyOmo and created my whole model before I realized that the GLPK solver doesn't support non-linearity... facepalm

(Trying to solve for gear sizes in a gearbox given target geartrain ratios - I'm an engineering student)

2 Answers 2

3

Here is a semi-recent survey of MINLP solver software. Any solver discussed in that paper that has an AMPL interface can be used with Pyomo (e.g., BONMIN, Couenne). See the table at the end of the linked paper for a complete list.

Sign up to request clarification or add additional context in comments.

3 Comments

Do you know how to setup Pyomo with one of these solvers? I'm going to try out MINOTAUR, but I'm not sure how to set it as a solver. Most of those solvers aren't listed in the Pyomo docs... Would I just do from pyomo.opt import SolverFactory then do opt = SolverFactory('minotaur')?
BONMIN, Couenne, SCIP, and MINOTAUR are all usable with Pyomo through the AMPL Solver Interface ('ASL' / 'NL interface'). For BONMIN / Couenne be sure to run get.ASL in the ThirdParty/ASL directory. For SCIP, the get.ASL script is in interfaces/ampl, then use the scipampl executable. For MINOTAUR, see their build instructions (ASL is a required third-party library). For all of these, make sure the final binary (bonmin,couenne,scipampl, etc) are in your PATH. Then use the same name as your Pyomo solver.
Thanks a lot! Couenne was able to handle the problem after I bounded it correctly! Took a out 1 hour to solve, but now I have the most precise gearbox in class, I'm sure of it
1

You should try the SCIP Optimization Suite, it's a global mixed integer non-linear solver that is free for academics and available in source code. Ready-to-use executables are provided for every major platform.
There is also a convenient Python interface if you need one: PySCIPOpt

5 Comments

SCIP does not support nonlinear objective functions.
You can always model the objective function as equality and then minimize the right hand side variable. I'm not aware of any solver that handles nonlinear objective functions and does multi-objective optimization.
Ok, I might try this. Is there an option to choose what side of the equation it solves? Looking at the PyScipopt docs it seems you set the objective as an expression
You don't solve any side of the equation. You solve the model that consists of many equations. Fair warning: right now you can only model polynomials with PySCIPOpt, although SCIP can handle many more types of nonlinearities. You would need to model you problem differently first and then use SCIP to solve it.
Oh ok, this is my dilemma! I'm struggling to find a solver that can take nonlinearities as such: (x2/x1) *(x4/x3) +(something of similar form) = c

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.