Constraints.jl

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.

Follow the list of the constraints currently stored in usual_constraint. Note that if the constraint is named _my_constraint, it can be accessed as usual_contraint[:my_constraint].

Missing docstring.

Missing docstring for Constraints._all_different. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Constraints._all_equal. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Constraints._all_equal_param. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Constraints._dist_different. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Constraints._eq. Check Documenter's build log for details.

Missing docstring.

Missing docstring for Constraints._ordered. Check Documenter's build log for details.

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