pub trait OptimizationAlgorithm<T: FloatNumber, N: Dim, D: Dim>{
// Required methods
fn step(&mut self);
fn state(&self) -> &State<T, N, D>;
// Provided methods
fn get_simplex(&self) -> Option<&Vec<OVector<T, D>>> { ... }
fn get_replica_populations(&self) -> Option<Vec<OMatrix<T, N, D>>> { ... }
fn get_replica_temperatures(&self) -> Option<Vec<T>> { ... }
}