Skip to content

GreyJack Solver is the metaheuristic constraint solver for continuous, integer, mixed integer problems built on top of Polars

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE.txt
MIT
LICENSE-MIT.txt
Notifications You must be signed in to change notification settings

CameleoGrey/greyjack-solver-rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Preview

In optimum we trust.

GreyJack Solver is an AI constraint solver for Rust (current version) built on top of Polars. It empowers you to solve a wide range of constraint optimization problems, including continuous, integer, and mixed-integer challenges.

Editions

There are 2 editions of GreyJack Solver:

Key Features of GreyJack Solver (Rust version)

  • Great comfortability, expressiveness and flexibility Thanks to Polars you can express almost all ideas of solutions for almost any problem. And if you need, you can describe some parts of constraints by plain Rust.
  • Universality Supports multiple types of constraint problems (continuous, integer, mixed-integer).
  • Nearly linear horizontal scaling Multi-threaded solving organized as collective work of individual agents (island computation model for all algorithms), which are sharing the results with neighbours during solving. It gives nearly linear horizontal scaling, increases quality and speed of solving (depends on agents settings and problem).
  • Supporting of population and local search algorithms GreyJack currently implements GeneticAlgorithm, TabuSearch, LateAcceptance.
  • Clarity GreyJack gives clear and straightforward approach to design, implement and improve enough effective solutions for almost any constraint problem and situation.
  • Easy integration Observer mechanism (see examples).

Get started with GreyJack Solver in Rust

cargo add greyjack
  • Explore examples. Docs and guides will be later. GreyJack is very intuitively understandable solver (even Rust version).
  • Simply solve your tasks simply.

RoadMap

  • Composite termination criterion (for example: solving limit minutes N AND score not improving M seconds)
  • Add more examples: Job-Shop, Pickup&Delivery, some continuous and MIP tasks, scheduling, etc
  • Modern variations (modifications) of LSHADE (Differential evolution algorithms often appear in articles as sota approaches)
  • CMA, probably its modern variants, adaptations for tasks with integer and categorical variables (often appears in articles as sota approach)
  • Multi-level score
  • Custom moves support
  • Try to impove incremental (pseudo-incremental) score calculation mechanism (caching, no clonning, etc)
  • Write docs
  • Website
  • Useful text materials, guides, presentations
  • Tests, tests, tests...
  • Score explainer / interpreter