Skip to content

Releases: oximo-rs/oximo

oximo v0.2.0

07 Jun 18:36
50962d9

Choose a tag to compare

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 in oximo-expr that resolve during lowering, scalar Param support in Model, and propagation through every backend and the .nl writer.
  • .nl writer (oximo-io). New .nl writer with ASCII and binary modes, scientific-notation float precision, header comments (ASCII only), optional sidecar/auxiliary files (.col/.row), and Param support.
  • BARON backend (oximo-baron). New crate providing a backend for the BARON global MINLP solver. Re-exported from oximo behind the baron feature.
  • Absolute value (Abs). New Abs expression in oximo-expr with lowering support in Gurobi, GAMS, and BARON.
  • Division operator. Expr / Expr with constant folding in oximo-expr, plus nonlinear detection for division in oximo-core.
  • Variable fixing convenience. Model::fix for single-variable Expr and Expr::var_id() to extract a VarId.
  • Expression classification. ExprClass and a classify helper used to determine model kind (LP/QP/NLP/...).
  • Duals & reduced costs (GAMS). Parse marginals/reduced costs.

Changed

  • New sum_over API in oximo-expr / oximo-core; examples and tests updated.
  • dot takes slices, with simplified generics and a panic on mismatched lengths.
  • Gurobi now handles variable domains and prefers SolCount when checking for an available solution.
  • GAMS validates the selected solver against supported solver types and summarizes .lst output on errors.
  • HiGHS uses the non-panicking API in Options.
  • SolverError now uses its Display impl in Debug.
  • Bumped highs to 2.2.0.
  • Internal: SmolStr for string index keys.

Full Changelog: v0.1.0...v0.2.0

oximo v0.1.0

22 May 00:30
a45b5c4

Choose a tag to compare

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 io feature (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 backend

Full Changelog: https://github.com/GermanHeim/oximo/commits/v0.1.0