moors_macros
A collection of procedural macros for moors.
Installation in moors
Added directly as:
# In Cargo.toml
[]
= { = moors_macros" }
Algorithm Builders
use ;
use ;
// problem data
const WEIGHTS: = ;
const VALUES: = ;
const CAPACITY: f64 = 15.0;
/// Compute multi-objective fitness [–total_value, total_weight]
/// Returns an Array2<f64> of shape (population_size, 2)
// build and run the NSGA-II algorithm
let mut algorithm = default
.fitness_fn
.constraints_fn
.sampler
.crossover
.mutation
.duplicates_cleaner
.n_vars
.population_size
.n_offsprings
.num_iterations
.crossover_rate
.mutation_rate
.lower_bound
.upper_bound
.build
.unwrap;
Limitations & TODO
- Coercion on fitness and constraints is needed to keep Debug on
Nsga2. See https://stackoverflow.com/questions/53380040/function-pointer-with-a-reference-argument-cannot-derive-debug - Optional generics such as
constraints_fnandduplicates_cleanerif are removed from builder, then a turbofish must be addedNsga2Builder::<_, _, _, _, crate::genetic::NoConstraints, crate::duplicates::NoDuplicatesCleaner>::default()...`. See https://github.com/colin-kiegel/rust-derive-builder/issues/343 - Consider using
rust-derive-builder