The constraints Circuit
, CircuitPath
, and their weighted variants have
been merged into a more generic Walk
.
Add the Modulo
set.
Hotfix: test test_strictly_greaterthan_singlevariable
was wrong.
Hotfix: FlatZinc Model
and Optimizer
could no more be copied.
Update to MOI 0.10.0. The only breaking change due to this package is in the
test suite for solvers, where the same refactoring as MOI 0.10.0 was included:
the old test suite is in the DeprecatedTest
submodule and the new one in
Test
. Updating solvers could simply change their import to DeprecatedTest
when starting the update, and then move on to Test
.
Add infrastructure to create FlatZinc-based solver, using FlatZinc.Optimizer
.
Add the ExclusiveDisjunction
set.
FlatZinc parsing can handle several annotations; they are still ignored after parsing and not passed to the MOI model.
Breaking change: FlatZinc output is now controlled by FlatZinc.Model
, whereas
FlatZinc.Optimizer
is used for optimising models using a FlatZinc
communication with the solver.
Improvements to FlatZinc backend.
Add bridge:
- from
SortPermutation
to MILP
Refactor the test sets to avoid using helpers.
Fix bugs in the FlatZinc implementation, like supporting more constraints than actually supported in the most basic FlatZinc or providing no way to copy models.
Hot fix for the bin-packing tests.
Refactor for sets with many variants. Related discussion:
The following sets have been touched by the refactor:
BinPacking
and friendsCumulativeResource
and friendGlobalCardinality
and friendsKnapsack
and friendsNonOverlappingOrthotopes
and friend
Experiments with functions are removed for now.
For consistency, Imply
has been renamed Implication
.
Added a bridge to change the sign of strict inequalities.
Added test sets for MOI.IndicatorSet
.
Fixed bug in the reported required constraint types for the bridges.
Added an online documentation.
Generalise Count
to any kind of comparison for items, not just equality.
(The user-facing interface is the same.)
Add many new sets:
VectorDomain
VectorAntiDomain
AllDifferentExceptConstants
;AllDifferentExceptConstant
becomes a constructor for the formerNonOverlappingOrthotopes
ConditionallyNonOverlappingOrthotopes
GlobalCardinality
GlobalCardinalityVariable
SymmetricAllDifferent
ClosedGlobalCardinality
ClosedGlobalCardinalityVariable
DoublyLexicographicallyGreaterThan
DoublyLexicographicallyLessThan
SlidingSum
ValuePrecedence
Add many new bridges between high-level constraints, and also to MILP models.
Reified
has been renamed to Reification
for consistency.
There are still no compatibility guarantees for nonlinear functions.
Added the ValuedKnapsack
, ValuedVariableCapacityKnapsack
, and AllEqual
sets. Added sets for functions: AbsoluteValue
.
Added bridges between high-level constraints, and also to MILP models.
Nonlinear functions have been added, but are not yet used anywhere. No semantic versioning is guaranteed for now regarding them.
Added the ElementVariableArray
set.
Support FlatZinc reading.
Various fixes for the FlatZinc output, which is now tested more thoroughly. Reified constraints are also supported.
Test suite for the Test
submodule. The test for Strictly
has been split
into two parts.
Hotfix: the test sets for solvers were not fully updated to the latest API changes.
Models can be exported as FlatZinc (submodule FlatZinc), a subset of MiniZinc.
Interface change: Count
, MaximumDistance
, and MinimumDistance
become
consistent with AllDifferentExceptConstant
, with the dimension before the value.
Revamped the internal test suite. Many bugs have been discovered and fixed:
typos, missing copy
functions or equality comparisons, mostly.
Added a test suite for solvers implementing this interface. It is based on the
corresponding CPLEXCP tests, and is not yet complete. It can be used exactly
like MathOptInterface's Test
module.
Added a comparison with the Numberjack modelling layer.
Added a few more sets: AllDifferentExceptConstant
, ArgumentMinimumAmong
,
ArgumentMaximumAmong
, Circuit
, CircuitPath
, Conjunction
, Contiguity
,
CountDistinct
, Cumulative
, Decreasing
, Disjunction
, Increasing
,
Knapsack
, MaximumAmong
, MinimumAmong
, Negation
.
Added a comparison with Hakank's supplementary constraints
Add a few more sets: Equivalence
, EquivalenceNot
, False
, IfThenElse
,
Imply
, MaximumDistance
, True
.
Added a comparison with ConstraintSolver.jl's constraints.