Skip to content

oximo v0.2.0

Latest

Choose a tag to compare

@GermanHeim GermanHeim released this 07 Jun 18:36
· 44 commits to main since this release
50962d9

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