- 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.Integerstogether with an alldifferent constraint. PR #283
- Using TableLogger.jl
- Only support Julia v1.6 and above
- Using priority queue also for
BFSproblems PR #274
- Using ConstraintProgrammingExtensions.jl
AllDifferentinstead ofAllDifferentSetAllEqualinstead ofEqualSet
- Allow variables as constraint like
a || !binstead 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:
binaryvariables inTableSetmight have failed becauseinit_valswasn't copied PR #259 - Refactoring constraints
- using
init_constraint!andactivate_constraint!PR #257
- using
- Bugfix in
Orconstraint 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_feasiblewhen setting to inactive - Bugfix in alldifferent constraint when there is a gap in the values
- Support for
Andconstraints in the inner constraints ofIndicatorandReified: i.eb := { sum(x) >= 10 && x in CS.AllDifferent() } - Support for
Orconstraints in the inner constraints ofIndicatorandReified: i.eb := { sum(x) >= 10 || x in CS.AllDifferent() } - Support for
&&and||outside ofIndicatorandReified- i.e
sum(x) >= 10 || x in CS.AllDifferent()
- i.e
- Basic support for
Indicatorinside of reified:- i.e
@constraint(model, b1 := {b2 => { v == 1 }}) - currently lacks support for bridges such that
v > 1in 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_modelto get theConstraintSolverModel- Usage of
JuMP.backendas 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 == xconstraints - 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 != yconstraints into an all different constraint - Combine several
a >= xconstraints with the sameainto a vector constraints- used for better bounds using all different constraints
- Added
copyfunction 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
TableConstraintas 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
AllEqualfor faster/correct pruning - Call to
isapprox_discreteineq_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_solvedfunctions 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
supportandresidues
- 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
==,>=,<=,!=