# Which MiniZinc-compatible solvers are best suited for floating decision variables and non-linear constraints?

We are working on a production scheduling problem that has both discrete ("how much to produce from good x and where") and continuous elements ("keep the workload of a production site below 0.7"), and also non-linear constraints, MIP is not applicable.

Since we do have a somewhat complex model already in MiniZinc (we are currently using Google OR-Tools), I am wondering which MiniZinc-compatible solver provides most support for floating decision variables (maybe interval-based). Choco, JaCoP, Gecode .... ?

Otherwise, what could be similar high-level modeling languages that deal with continuous problems better? AMPL?

Thankful for your hints!

Some of the coin-or open-source solvers like "couenne" can be used via MiniZn. You can follow the instruction of installation in this link.

Info about Couenne: Couenne (Convex Over and Under ENvelopes for Nonlinear Estimation) is a branch&bound algorithm to solve Mixed-Integer Nonlinear Programming (MINLP) problems and aims at finding global optima of nonconvex MINLPs.

Other than that, you can use BARON solver for free if you send your model to NEOS server. BARON guarantees global optimal for MINLPs.

Info about Baron: BARON (Branch and Reduce Optimization Navigator) revolutionized global optimization technology in 2001 when it became the first commercial optimization software to offer deterministic guarantee for global optimality of nonlinear and mixed-integer nonlinear problems. Since then, BARON has remained the most complete and robust solver in global optimization technology.

• Couenne and Ipopt do a really great job on our problem, thanks for the hint! – ks.and1 Mar 30 '20 at 22:27

Of the constraint based solvers JaCoP (https://github.com/radsz/jacop ) and Gecode (https://www.gecode.org/) has support for float decision variables combined with nonlinear constraints. Choco (https://choco-solver.org/ ) is supposed to have support for float variables but I got errors when running float variable models.

I would also add ECLiPSe CLP's ic solver (https://eclipseclp.org/ ) to the list, though it's a bit extra work to make it work with the MiniZinc tool-chain (one have to create some wrappers for the output etc).

My personal preference right now is JaCoP which seems to be quite stable for float variables + non linear constraint problems.

Note that for solving for float variables one have to be a little careful when using the solve :: float_search command. One might have to tweak the second argument (precision ) a little to get useful values (and good enough run time), e.g.

solve :: float_search(x, 0.001, input_order, indomain_split, complete) minimize z;