All Projects → JuliaConstraints → LocalSearchSolvers.jl

JuliaConstraints / LocalSearchSolvers.jl

Licence: MIT license
A Julia package to manage Constraint-Based Local Search (CBLS) solvers.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to LocalSearchSolvers.jl

Optaplanner
AI constraint solver in Java to optimize the vehicle routing problem, employee rostering, task assignment, maintenance scheduling, conference scheduling and other planning problems.
Stars: ✭ 2,454 (+13533.33%)
Mutual labels:  constraint-programming, local-search, constraint-solver
Decider
An Open Source .Net Constraint Programming Solver
Stars: ✭ 112 (+522.22%)
Mutual labels:  constraint-programming, constraint-solver
ConstraintSolver.jl
ConstraintSolver in Julia: Blog posts ->
Stars: ✭ 107 (+494.44%)
Mutual labels:  constraint-programming, constraint-solver
GHOST
General meta-Heuristic Optimization Solving Toolkit
Stars: ✭ 28 (+55.56%)
Mutual labels:  constraint-programming
clpz
Constraint Logic Programming over Integers
Stars: ✭ 131 (+627.78%)
Mutual labels:  constraint-programming
simsttab
Simple timetabling engine for schools
Stars: ✭ 21 (+16.67%)
Mutual labels:  constraint-programming
optaplanner-quickstarts
OptaPlanner quick starts for AI optimization: many use cases shown in many different technologies.
Stars: ✭ 226 (+1155.56%)
Mutual labels:  constraint-solver
biteopt
Derivative-Free Optimization Method for Global Optimization (C++)
Stars: ✭ 91 (+405.56%)
Mutual labels:  constraint-programming
pymzn
A Python wrapper for the MiniZinc tool pipeline.
Stars: ✭ 54 (+200%)
Mutual labels:  constraint-programming
CNApy
An integrated visual environment for metabolic modeling with common methods such as FBA, FVA and Elementary Flux Modes, and advanced features such as thermodynamic methods, extended Minimal Cut Sets, OptKnock, RobustKnock, OptCouple and more!
Stars: ✭ 27 (+50%)
Mutual labels:  constraint-programming
ordered
Entropy-controlled contexts in Python
Stars: ✭ 36 (+100%)
Mutual labels:  constraint-programming
pycsp3
A Python Library for modeling combinatorial constrained problems
Stars: ✭ 39 (+116.67%)
Mutual labels:  constraint-programming
conjure
Conjure: The Automated Constraint Modelling Tool
Stars: ✭ 84 (+366.67%)
Mutual labels:  constraint-programming
ConstraintTP
Constraint Type provider is a Type provider that provides constraints over F# Types.
Stars: ✭ 12 (-33.33%)
Mutual labels:  constraint-programming
minizinc-python
Access to all MiniZinc functionality directly from Python
Stars: ✭ 92 (+411.11%)
Mutual labels:  constraint-programming
codac
Codac is a library for constraint programming over reals, trajectories and sets.
Stars: ✭ 31 (+72.22%)
Mutual labels:  constraint-programming
cplex-scala
A scala library for IBM ILOG CPLEX
Stars: ✭ 20 (+11.11%)
Mutual labels:  constraint-programming
monadiccp
Monadic Constraint Programming framework
Stars: ✭ 25 (+38.89%)
Mutual labels:  constraint-programming
SeaPearl.jl
Julia hybrid constraint programming solver enhanced by a reinforcement learning driven search.
Stars: ✭ 119 (+561.11%)
Mutual labels:  constraint-programming
HyperGraphLib
C++ Hypergraph modelling Library using Boost and OpenMP with some algorithms, including isomorphism using Gecode.
Stars: ✭ 19 (+5.56%)
Mutual labels:  constraint-programming

LocalSearchSolvers

Docs Docs Build Status codecov Code Style: Blue

Constraint-Based Local Search Framework

The LocalSearchSolvers.jl framework proposes sets of technical components of Constraint-Based Local Search (CBLS) solvers and combine them in various ways. Make your own CBLS solver!

A higher-level JuMP interface is available as CBLS.jl and is the recommended way to use this package. A set of examples is available within ConstraintModels.jl.

Dependencies

This package makes use of several dependencies from the JuliaConstraints GitHub org:

It also relies on great packages from the julialang ecosystem, among others,

  • ModernGraphs.jl (incoming): a dynamic multilayer framework for complex graphs which allows a fine exploration of entangled neighborhoods

Related packages

  • JuMP.jl: a rich interface for optimization solvers
  • CBLS.jl: the actual interface with JuMP for LocalSearchSolvers.jl
  • ConstraintModels.jl: a dataset of models for Constraint Programming
  • COPInstances.jl (incoming): a package to store, download, and generate combinatorial optimization instances

Features

Wanted features list:

  • Strategies
    • Move: local move, permutation between n variables
    • Neighbor: simple or multiplexed neighborhood, dimension/depth
    • Objective(s): single/multiple objectives, Pareto, etc.
    • Parallel: distributed and multi-threaded, HPC clusters
    • Perturbation: dynamic, restart, pool of solutions
    • Portfolio: portfolio of solvers, partition in sub-problems
    • Restart
      • restart sequence
      • partial/probabilistic restart (in coordination with perturbation strategies)
    • Selection of variables: roulette selection, multi-variables, meta-variables (cf subproblem)
    • Solution(s): management of pool, best versus diverse
    • Tabu
      • No Tabu
      • Weak-tabu
      • Keen-tabu
    • Termination: when, why, how, interactive, results storage (remote)
  • Featured strategies
    • Adaptive search
    • Extremal optimization
  • Others
    • Resolution of problems
      • SATisfaction
      • OPTimisation (single-objective)
      • OPTimisation (multiple-objective)
      • Dynamic problems
    • Domains
      • Discrete domains (any type of numbers)
      • Continuous domains
      • Arbitrary Objects such as physical ones
    • Domain Specific Languages (DSL)
      • Straight Julia :raw
      • JuMPish | MathOptInterface.jl
      • MiniZinc
      • OR-tools ?
    • Learning settings (To be incorporated in MetaStrategist.jl)
      • Compositional Networks (error functions, cost functions)
      • Reinforcement learning for above mentioned learning features
      • Automatic benchmarking and learning from all the possible parameter combination (instance, model, solver, size, restart, hardware, etc.)

Contributing

Contributions to this package are more than welcome and can be arbitrarily, and not exhaustively, split as follows:

  • All features mentioned above
  • Adding new constraints and symmetries
  • Adding new problems and instances
  • 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 workspace, the julialang Zulip server (Constraint Programming stream), or the Humans of Julia Humans-of-Julia discord server(julia-constraint channel).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].