greyjack 0.4.6

Rust version of GreyJack Solver for constraint continuous, integer, mixed integer optimization problems
Documentation


use super::{GeneticAlgorithmBase, LateAcceptanceBase, MetaheuristicBaseTrait, TabuSearchBase};
use crate::score_calculation::scores::ScoreTrait;
use std::fmt::{Debug, Display};
use std::ops::AddAssign;
use serde::{Serialize};

pub enum MetaheuristicsBasesVariants<ScoreType>
where 
ScoreType: ScoreTrait + Clone + AddAssign + PartialEq +  PartialOrd + Ord + Debug + Display + Send + Serialize {
    GAB(GeneticAlgorithmBase),
    LAB(LateAcceptanceBase<ScoreType>),
    TSB(TabuSearchBase),
    None
}

impl<ScoreType> MetaheuristicsBasesVariants<ScoreType> 
where 
ScoreType: ScoreTrait + Clone + AddAssign + PartialEq +  PartialOrd + Ord + Debug + Display + Send + Serialize {

    pub fn as_trait(&mut self) -> &mut dyn MetaheuristicBaseTrait<ScoreType> {

        match self {
            MetaheuristicsBasesVariants::None => panic!("Metaheuristic base is not initialized"),
            MetaheuristicsBasesVariants::GAB(gab) => gab,
            MetaheuristicsBasesVariants::TSB(tsb) => tsb,
            MetaheuristicsBasesVariants::LAB(lab) => lab,

        }
    }
}