Roma
roma is a Rust metaheuristics framework for optimization and experimentation.
It provides reusable building blocks to define optimization problems, configure algorithms, run reproducible executions, and observe progress through console or file-based reports.
Features
- Single-objective algorithms: Hill Climbing, Genetic Algorithm, Simulated Annealing, PSO.
- Multi-objective optimization with NSGA-II and Pareto rank/crowding quality metadata.
- Generic
ProblemandSolutionabstractions for custom domains. - Structured observers (console, chart, HTML report) and checkpoint utilities.
- Experiment runner for repeated case execution and comparative summaries.
Installation
[]
= "0.1.1"
Quick Start
use ;
use BitFlipMutation;
use KnapsackBuilder;
use SolutionSet;
Core Concepts
Problem<T, Q>defines solution generation, evaluation, objective direction, and formatting.Solution<T, Q>stores decision variables and an optional quality cache.Algorithm<T, Q>executes a shared runtime lifecycle and returns aSolutionSet.- Observers subscribe to runtime events and can render progress/summary outputs.
Experimentruns multiple algorithm cases repeatedly and computes aggregate statistics.
Documentation
- API docs: https://docs.rs/roma
- Repository: https://github.com/DRLKs/roma
License
Licensed under either:
- MIT license
- Apache License, Version 2.0
at your option.