[ANN] (JuliaConstraints) LocalSearchSolvers.jl and CompositionalNetworks.jl

CompositionalNetworks.jl is a Julia package for Interpretable Compositional Networks (ICN), a variant of neural networks, allowing the user to get interpretable results, unlike regular artificial neural networks.

The current state of our ICN focuses on the composition of error functions for LocalSearchSolvers.jl (both packages got their first beta release today), but produces results independently of it and export it to either/both Julia functions or/and human-readable output.

Even though ICN are originally defined for a specific type of functions in Constraint Programming, it can be easily extended to other cases. Do not hesitate to ask or contribute.

LocalSearchSolvers.jl proposes sets of technical components of Constraint-Based Local Search (CBLS) solvers and combine them in various ways. Its goal is to solve Satisfaction and Optimization problems such as a Sudoku grid below, Golomb ruler, or even mincut in Graphs.

Non-exhaustive list of features to come

  • Resolution of problems
    • SATisfaction
    • OPTimisation (single-objective)
    • OPTimisation (multiple-objective)
  • Domains
    • Discrete domains (any type of numbers)
    • Continuous domains
    • Arbitrary Objects such as physical ones
  • Parallelization
    • Multi threading
    • Distributed
  • Solvers
    • Weak-tabu list (method used in GHOST, the C++ lib)
    • Adaptive Search
  • Domain Specific Languages (DSL) & Integration
    • Straight Julia
    • JuMPish
    • MiniZinc
  • Others
    • Dynamic problems
    • Neighbourhoud selection
    • Variable selection
    • Mixed-solvers/methods with learning

Do not hesitate to contribute, file issue, or ask questions :slight_smile:

7 Likes

Great, following with interest!

Does that mean that an external solver (e.g. GHOST) is required now, while Adaptive Search would be a (future) pure Julia implementation?

Good remark! I reproduced the key points of the method used in the GHOST C++ library in Julia, as it was the method I was the most familiar with. AdaptiveSearch is quite similar. Other methods will be added later on.

All the implementation for both packages are in pure Julia (and it works great, even with many perf related features missing).

1 Like