← All problem classes
MINLP

Mixed-Integer Nonlinear Programming

Integer decisions together with a non-linear objective or constraints.

In plain terms

Now combine those all-or-nothing choices with effects that bend rather than run straight — economies of scale, physics, chemistry. That mix of discrete decisions and curved relationships is among the hardest optimization problems there is.

The technical picture

Mixed-integer nonlinear programming combines integrality with non-linearity — the most general and the hardest of the classical classes.

Algebraic global solvers handle MINLPs by reformulating or approximating the non-convex terms. Quicopt optimizes the original objective directly, using gradients only — no Hessian, and no auxiliary-variable blow-up.

Mathematical model

Minimize a non-linear objective subject to non-linear constraints, with a subset of variables restricted to integers.

Example

From install to solved model — a small, self-contained example, copy-paste ready.

1

Install the client

$ pip install "quicopt[pyomo]"
2

Copy the example

minlp.py
import pyomo.environ as pyo
from quicopt import Client

# An MINLP: switch generating units on or off (binary) and set each unit's
# continuous output, under a non-linear (exp) fuel-cost curve. An off unit
# produces nothing and costs nothing.
caps, fixed, fuel = [4.0, 6.0], [2.0, 3.5], [1.0, 0.8]
demand = 5.0

m = pyo.ConcreteModel()
m.on = pyo.Var(range(2), domain=pyo.Binary)
m.p = pyo.Var(range(2), bounds=(0, None))
m.cap = pyo.Constraint(range(2), rule=lambda m, i: m.p[i] <= caps[i] * m.on[i])
m.demand = pyo.Constraint(expr=m.p[0] + m.p[1] >= demand)
m.obj = pyo.Objective(
    expr=sum(fixed[i] * m.on[i] + fuel[i] * (pyo.exp(m.p[i] / caps[i]) - 1)
             for i in range(2)),
    sense=pyo.minimize)

client = Client("https://try.quicoptapi.pgi.fz-juelich.de")
result = client.solve(m)
print(result.display)
3

Run it

$ python minlp.py
What you’ll see
├── status:     heuristic
├── feasible:   true
├── objective:  4.5407807127338655
├── x:          x1=0, x2=1, x3=0, x4=5.0  (4 variables)
└── solve_time: 2.6109 s

Docs, API reference and more examples live in the Developer Hub →

Benchmark

How Quicopt performs on representative mixed-integer non-linear programs.

Illustrative — pending measurement
QuicoptEstablished solver
Illustrative scaling — to be replaced with measured data.

Measured results for this class are being prepared and will appear here.