use crate::configuration::ProblemSolving;
#[derive(Debug, Clone, PartialEq)]
pub enum HillClimbMode {
Stochastic,
SteepestAscent,
}
#[derive(Clone)]
pub struct HillClimbConfiguration {
pub mode: HillClimbMode,
pub no_improvement_limit: usize,
pub problem_solving: ProblemSolving,
pub fitness_target: Option<f64>,
}
impl Default for HillClimbConfiguration {
fn default() -> Self {
Self {
mode: HillClimbMode::Stochastic,
no_improvement_limit: 100,
problem_solving: ProblemSolving::Minimization,
fitness_target: None,
}
}
}
impl HillClimbConfiguration {
pub fn with_mode(mut self, mode: HillClimbMode) -> Self {
self.mode = mode;
self
}
pub fn with_no_improvement_limit(mut self, limit: usize) -> Self {
self.no_improvement_limit = limit;
self
}
pub fn with_problem_solving(mut self, ps: ProblemSolving) -> Self {
self.problem_solving = ps;
self
}
pub fn with_fitness_target(mut self, t: f64) -> Self {
self.fitness_target = Some(t);
self
}
}