Use Ipopt
Choose Ipopt for continuous, nonlinear prescriptive problems. It is a gradient-based local solver, so it can converge to a locally optimal solution rather than a global optimum.
Capabilities
Section titled “Capabilities”- Supports continuous nonlinear programs (NLP).
Limitations
Section titled “Limitations”- Requires a single, scalar objective.
- Does not support discrete decision variables.
- Does not support indicator constraints like
implies(). - Does not support SOS constraints such as
special_ordered_set_type_1()andspecial_ordered_set_type_2().
Example
Section titled “Example”Pass "ipopt" to Problem.solve() to use the Ipopt backend:
from relationalai.semantics import Float, Modelfrom relationalai.semantics.reasoners.prescriptive import Problem
m = Model("NonlinearExample")
# ... model definition ...
p = Problem(m, Float)
# ... problem definition ...
p.solve("ipopt", _server_side_import=False)- It is common for Ipopt to terminate with
LOCALLY_SOLVED. Treat that as “converged to a local minimum” rather than “certified global optimum.”
Version and licensing
Section titled “Version and licensing”Ipopt is bundled and does not require a license key or additional Snowflake setup.
| Detail | Info |
|---|---|
| Version | 3.14.4 |
| License | Eclipse Public License (free and open source) |
Resources
Section titled “Resources”Where to go next
Section titled “Where to go next” Solve a decision problem Learn the prescriptive workflow for declaring decision variables, adding requirements and an objective, solving, and reading results.
Browse prescriptive reasoning templates Explore prescriptive templates you can adapt to your own problems.