use super::*;
#[cfg(feature = "async-evolution")]
mod async_iterative;
#[cfg(feature = "async-evolution")]
pub use self::async_iterative::{AsyncIterative, AsyncParams};
mod iterative;
pub use self::iterative::Iterative;
pub trait EvolutionStrategy {
type Context: HeuristicContext<Objective = Self::Objective, Solution = Self::Solution>;
type Objective: HeuristicObjective<Solution = Self::Solution>;
type Solution: HeuristicSolution;
fn run(
&mut self,
heuristic_ctx: Self::Context,
termination: Box<dyn Termination<Context = Self::Context, Objective = Self::Objective>>,
) -> EvolutionResult<Self::Solution>;
}