ga-scheduler 0.1.0

A Genetic Algorithm optimizer designed for scheduling and similar tasks
Documentation
pub mod full;
pub mod sample;

use crate::candidate::Candidate;

#[mockall_double::double]
use crate::rando::Rando;

#[derive(Debug, PartialEq)]
pub enum LeftRight {
    Left,
    Right,
}

pub trait Game<const N: usize, const NSYMS: usize> {
    /// not all games require an RNG, but most do, and putting the RNG into the constructor means we'd need to use mutable Game's.
    /// similarly, not all games use [Game.score_weights], but some do and all probably should.
    fn run(
        &self,
        left: &Candidate<N, NSYMS>,
        right: &Candidate<N, NSYMS>,
        rng: &mut Rando,
        score_weights: &Vec<f64>,
    ) -> LeftRight;
}