- Compat change JuMP v1
- Compat change JuMP v0.23
- Works with MathOptInterface v0.10/v1
- Support for element constraints with a constant array like
T[y] == z
- This is experimental Quite some stuff that might go wrong when combining it inside an indicator, reified or boolean constraint.
- If you find any problems please open an issue. I release it to get more feedback get this more tested. I plan on refactoring this quite a bit later.
- This is experimental Quite some stuff that might go wrong when combining it inside an indicator, reified or boolean constraint.
- bugfix when using
CS.Integers
together with an alldifferent constraint. PR #283
- Using TableLogger.jl
- Only support Julia v1.6 and above
- Using priority queue also for
BFS
problems PR #274
- Using ConstraintProgrammingExtensions.jl
AllDifferent
instead ofAllDifferentSet
AllEqual
instead ofEqualSet
- Allow variables as constraint like
a || !b
instead ofa == 1 || b == 0
. PR #267- Attention Does not check if variable is a binary variable
- Support for indicator/reified in indicator/reified (without bridges) PR #251
- Support for VectorAffineFunction in TableSet/AllDifferentSet
- i.e
[x[i]+i for i in 1:n] in CS.AllDifferent()
[x,y,10] in CS.TableSet(...)
- see issue #235 for in-depth examples
- i.e
- set activator to false when inner violated PR #266
- support for xor and xnor constraints
- better bridge structure for boolean constraints
- different data structure for saving variable changes for a speedup of ~10-25% in most instances PR #260
- Bugfix:
binary
variables inTableSet
might have failed becauseinit_vals
wasn't copied PR #259 - Refactoring constraints
- using
init_constraint!
andactivate_constraint!
PR #257
- using
- Bugfix in
Or
constraint outside indicator and reified when the constraint removes values when initialized - Bugfix in bool constraints for constraints that implement reverse pruning functions
- Bugfix in reified
still_feasible
when setting to inactive - Bugfix in alldifferent constraint when there is a gap in the values
- Support for
And
constraints in the inner constraints ofIndicator
andReified
: i.eb := { sum(x) >= 10 && x in CS.AllDifferent() }
- Support for
Or
constraints in the inner constraints ofIndicator
andReified
: i.eb := { sum(x) >= 10 || x in CS.AllDifferent() }
- Support for
&&
and||
outside ofIndicator
andReified
- i.e
sum(x) >= 10 || x in CS.AllDifferent()
- i.e
- Basic support for
Indicator
inside of reified:- i.e
@constraint(model, b1 := {b2 => { v == 1 }})
- currently lacks support for bridges such that
v > 1
in the inner constraint will fail
- i.e
- Some general performance updates PR #247
- Use anti pruning in reified constraints
- Bugfix when linear constraint has only variables with coefficient 0 like
x <= x
=>0x <= 0
- Bugfix if binary variable is constrained directly in
@variable
- Use
CS.get_inner_model
to get theConstraintSolverModel
- Usage of
JuMP.backend
as before will fail
- Usage of
- Support for strictly less than and greater than with
<
and>
- Refactoring
- Using bridges for
>=
and>
in indicator and reified constraint - Combining
==
and<=
intosrc/constraints/linear_constraints.jl
- Using bridges for
- Dropped support for Julia v1.0 and v1.1
- Implementation of Activity Based Search
"branch_strategy" => :ABS
- Throw error if there is a dimension mismatch in a
TableSet
- Bugfix in
simplify!
check that one inner index isn't used more than once
- Bugfix for optimization with reified and indicator constraints
- If inner constraint does not define bound variables
- Bugfix for
x == x
constraints - Bugfix for directly infeasible constraint inside reified and indicator
- Bugfix in indicator constraint
- If inner constraint is fixed and indicator tries to get active
- Double check that the inner constraint is solved
- If inner constraint is fixed and indicator tries to get active
- Using a priority queue for faster
get_next_node
- Removed
further_pruning
- Using faster version of strongly connected components with lower memory footprint
- Bugfix in reified constraint:
- If inner constraint can't be activated it shouldn't be solved
- Bug found by @hakank see Issue #202
- If inner constraint can't be activated it shouldn't be solved
Improvements for graph coloring
- Use LP solver also for single variable objectives
- Combine several
x != y
constraints into an all different constraint - Combine several
a >= x
constraints with the samea
into a vector constraints- used for better bounds using all different constraints
- Added
copy
function for constraint structs for latest JuMP/MOI versions
- Reified constraint #171
- Bugfixes in indicator constraint #170
- Calling finished constraints and other functions for i.e
TableConstraint
as an inner constraint - Use correct best bound when inactive vs active
- Calling finished constraints and other functions for i.e
- Bugfix for indicator constraints
- support for TableConstraint in Indicator
- Support for indicator constraints
- i.e.
@constraint(m, b => { x + y <= 10 })
- i.e.
- Better feasibility and pruning in
==
- Bugfixes:
- Correct set of change ptr in
AllEqual
for faster/correct pruning - Call to
isapprox_discrete
ineq_sum
- Fixed threshold rounding
- Correct set of change ptr in
- Reduction of memory allocations in
TableConstraint
- Pruning in
AllEqual
- Bugfixes:
- AllEqual feasibility: Check if other vars have value + no memory allocation
- Call
call_finished_pruning!(com)
after secondprune!
before backtracking
- Added
is_constraint_solved
functions to check whether problem gets actually solved - Bugfixes:
- Correct incremental update in table constraint
- Fixed
restore_pruning_constraint!
in table
- Bugfixes:
- Use correct offset in table constraint
support
andresidues
- Use correct offset in table constraint
- Table constraint
@constraint(m, x in CS.TableSet(2dArr))
- CS.Integers
- i.e
@variable(m, x, CS.Integers([1,2,5]))
- i.e
- Bugfixes:
- return infeasible if start fixing is infeasible #132
Initial implementation of the solver: Basic constraints:
- AllDifferent
- Linear functions
==
,>=
,<=
,!=