greyjack 0.4.6

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

use crate::score_calculation::scores::ScoreTrait;
use crate::agents::base::Individual;
use crate::score_calculation::score_requesters::VariablesManager;
use ndarray::Array1;
use std::ops::AddAssign;
use std::fmt::Debug;
use super::metaheuristic_kinds_and_names::{MetaheuristicKind, MetaheuristicNames};

pub trait MetaheuristicBaseTrait<ScoreType>
where ScoreType: ScoreTrait + Clone + AddAssign + PartialEq + PartialOrd + Ord + Debug + Send {

    fn sample_candidates_plain(
        &mut self,
        population: &mut Vec<Individual<ScoreType>>, 
        current_top_individual: &Individual<ScoreType>,
        variables_manager: &VariablesManager
    ) -> Vec<Array1<f64>>;

    fn sample_candidates_incremental(
        &mut self,
        population: &mut Vec<Individual<ScoreType>>, 
        current_top_individual: &Individual<ScoreType>,
        variables_manager: &VariablesManager
    ) -> (Array1<f64>, Vec<Vec<(usize, f64)>>);

    fn build_updated_population(
        &mut self, 
        current_population: &Vec<Individual<ScoreType>>, 
        candidates: &mut Vec<Individual<ScoreType>>
    ) -> Vec<Individual<ScoreType>>;

    fn build_updated_population_incremental(
        &mut self, 
        current_population: &Vec<Individual<ScoreType>>, 
        sample: &mut Array1<f64>,
        deltas: Vec<Vec<(usize, f64)>>,
        scores: Vec<ScoreType>,
    ) -> Vec<Individual<ScoreType>>;

    fn get_metaheuristic_kind(&self) -> MetaheuristicKind;

    fn get_metaheuristic_name(&self) -> MetaheuristicNames;
}