Releases: oximo-rs/oximo
Releases · oximo-rs/oximo
oximo v0.2.0
oximo v0.2.0
This release expands oximo from a linear/quadratic modeler into a full nonlinear and global optimization stack: a new BARON backend, NLP/MINLP support across Gurobi and GAMS, QP in HiGHS, an .nl writer, and scalar parameters.
Added
- NLP / MINLP support. Gurobi and GAMS backends now translate and solve nonlinear and mixed-integer-nonlinear models.
- Quadratic programming. QP support in the HiGHS backend and a quadratic extraction module in
oximo-expr. - Scalar parameters (
Param). Arena-stored parameters inoximo-exprthat resolve during lowering, scalarParamsupport inModel, and propagation through every backend and the.nlwriter. .nlwriter (oximo-io). New.nlwriter with ASCII and binary modes, scientific-notation float precision, header comments (ASCII only), optional sidecar/auxiliary files (.col/.row), andParamsupport.- BARON backend (
oximo-baron). New crate providing a backend for the BARON global MINLP solver. Re-exported fromoximobehind thebaronfeature. - Absolute value (
Abs). NewAbsexpression inoximo-exprwith lowering support in Gurobi, GAMS, and BARON. - Division operator.
Expr / Exprwith constant folding inoximo-expr, plus nonlinear detection for division inoximo-core. - Variable fixing convenience.
Model::fixfor single-variableExprandExpr::var_id()to extract aVarId. - Expression classification.
ExprClassand aclassifyhelper used to determine model kind (LP/QP/NLP/...). - Duals & reduced costs (GAMS). Parse marginals/reduced costs.
Changed
- New
sum_overAPI inoximo-expr/oximo-core; examples and tests updated. dottakes slices, with simplified generics and a panic on mismatched lengths.- Gurobi now handles variable domains and prefers
SolCountwhen checking for an available solution. - GAMS validates the selected solver against supported solver types and summarizes
.lstoutput on errors. - HiGHS uses the non-panicking API in
Options. SolverErrornow uses itsDisplayimpl inDebug.- Bumped
highsto 2.2.0. - Internal:
SmolStrfor string index keys.
Full Changelog: v0.1.0...v0.2.0
oximo v0.1.0
oximo v0.1.0
First public release of the oximo: a Rust algebraic modeling library for LP and MILP optimization.
Future support for nonlinear programming (NLP) and mixed-integer nonlinear programming (MINLP) planned.
Crates
| Crate | Description |
|---|---|
oximo |
Umbrella crate with prelude and solver re-exports |
oximo-expr |
Arena-allocated expression tree |
oximo-core |
Model, Variable, Constraint, Objective, Set |
oximo-solver |
Solver trait, SolverResult, SolverStatus |
oximo-io |
MPS and LP file writers |
oximo-highs |
HiGHS backend (bundled, no install required) |
oximo-gurobi |
Gurobi backend (requires licensed install) |
oximo-gams |
GAMS solver bridge (requires GAMS on PATH) |
Highlights
- Builder API for variables and constraints using standard Rust operators (
+,-,*) - Index sets (
Set) with Cartesian products, filters, and rule-style constraint generation - Indexed variables with per-key bounds via
lb_by/ub_by - HiGHS solver bundled out of the box - no system install needed
- Gurobi and GAMS backends behind optional features
- MPS and LP export via the
iofeature (on by default) - Dual values and reduced costs in
SolverResult
Usage
[dependencies]
oximo = "0.1" # HiGHS + MPS/LP writers
oximo = { version = "0.1", features = ["gurobi"] } # add Gurobi
oximo = { version = "0.1", features = ["gams"] } # add GAMS backendFull Changelog: https://github.com/GermanHeim/oximo/commits/v0.1.0