JijModeling 1.12.0 Release Notes

JijModeling 1.12.0 Release Notes#

Feature Enhancements#

Interpreter now detects SOS1 constraints#

The recent OMMX version (Python SDK 1.8.3+ and/or Rust SDK v2.0.0-rc1+) adds a field for Special-Ordered Set of Type 1 (SOS1) constraint hints. SOS1 is a constraint on a list \(x_1, \ldots, x_n\) of non-negative variables which allows at most one of them to be non-zero. jm.Interpreter now can detect this type of constraints for arbitrary non-negative variables. More precisely, it detects SOS1 constraints expressed in the following form (and their algebraic equivalents):

  1. \(\sum_i \delta_i \leq 1\) for binary variables \(\delta_i\), or

  2. \(\sum_i \delta_i \leq 1\) together with \(x_i \leq M_i \delta_i \ \forall i\). Here, \(x_i\) s are arbitrary decision variables with bound \(L_i \leq x_i \leq M_i\) specified at the declaration time, where \(L_i \geq 0\) is constant.

With this feature, you can now take an advantage of SOS1 constraints if you are using OMMX adapters with SOS1 constraint support (e.g. ommx-pyscipopt-adapter).