Constraints
Constraints.jl
A backend package for JuliaConstraints front packages, such as LocalSearchSolvers.jl
.
It provides the following features:

A dictionary to store usual constraint:
usual_constraint
, which contains the following entries (in alphabetical order): :
all_different
 :
all_equal
 :
at_least
 :
at_most
 :
cardinality
 :
cardinality_closed
 :
cardinality_open
 :
channel
 :
circuit
 :
conflicts
 :
count
 :
cumulative
 :
decreasing
 :
dist_different
 :
element
 :
exactly
 :
extension
 :
increasing
 :
instantiation
 :
maximum
 :
mdd
 :
minimum
 :
no_overlap
 :
no_overlap_no_zero
 :
no_overlap_with_zero
 :
nvalues
 :
ordered
 :
regular
 :
strictly_decreasing
 :
strictly_increasing
 :
sum
 :
supports
 :

For each constraint
c
, the following properties arguments length
 concept (predicate the variables compliance with
c
)  error (a function that evaluate how much
c
is violated)  parameters length
 known symmetries of
c

A learning function using
CompositionalNetworks.jl
. If no error function is given when instantiatingc
, it will check the existence of a composition related toc
and set the error to it.
Contributing
Contributions to this package are more than welcome and can be arbitrarily, and not exhaustively, split as follows:
 Adding new constraints and symmetries
 Adding new ICNs to learn error of existing constraints
 Creating other compositional networks which target other kind of constraints
 Just making stuff better, faster, userfriendlier, etc.
Contact
Do not hesitate to contact me (@azzaare) or other members of JuliaConstraints on GitHub (file an issue), the julialang discourse forum, the julialang slack channel, the julialang zulip server, or the Human of Julia (HoJ) discord server.