Skip to content

dbofmmbt/optimum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Optimum: a Rust-based Optimization Framework

crate documentation build status

Note: As I started a full-time job and I'm not working with optimization, my motivation for developing optimum is low right now. I think it may already be useful and it may give you a taste of what an optimization framework could be in Rust.

Current state: Some core components have their initial shape and may be used (feedback will be appreciated). There's a genetic metaheuristic ready (BRKGA) and I'm experimenting stuff for neighborhood-based components/metaheuristics.

Be aware that some stuff will probably change, specially those I'm working right now. Some core stuff may be updated too, but this is less likely to happen.

Based on my experience working with Metaheuristics, I'm building a framework capable of accelerating the development of heuristic algorithms efficiently by leveraging Rust features that ease the creation of reliable and efficient software.

Until a 0.1.0 version is released, I recommend you to depend on the main branch when using optimum.

Goals

Optimum aims to be:

  • Flexible
    • It must be reasonably easy to design new metaheuristics and solve many kinds of problems using Optimum. Therefore it needs to be extensible and configurable.
  • Fast
    • Based of zero-cost abstractions, using the framework shouldn't imply in a significant computational overhead.
  • Complete
    • Coding the heuristic is not the only task we have when solving a problem. Parameter tuning, validation of generated solutions, instances, result analysis... It should be easier to get all this done in a convenient, standardized way.

Optimum aims to have:

  • Increasing support for many kinds of Metaheuristics
  • Common building blocks for the development of problem-specific solutions
  • Evaluation tools to speed up the analysis of the heuristics built
  • And whatever makes sense for us as developers and researchers!

Inspirations

To learn from others is key to design a solution which pushes things forward.