Shared package to handle constraints for the different solvers from JuliaConstraints
Author JuliaConstraints
1 Star
Updated Last
3 Months Ago
Started In
December 2020


Docs Docs Build Status codecov Code Style: Blue


A back-end pacage for JuliaConstraints front packages, such as LocalSearchSolvers.jl.

It provides the following features:

  • A dictionary to store usual constraint: usual_contraint, which contains the following entries
    • :all_different
    • :dist_different
    • :eq, :all_equal, :all_equal_param
    • :ordered
    • :always_true (mainly for testing default Constraint() constructor)
  • 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 instanciating c, it will check the existence of a composition related to c and set the error to it.


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, user-friendlier, etc.


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.