pub fn solve<G>( genetic: Box<dyn Genetic<G>>, progress: Option<Progress<G>>, cost_target: f64, cross_over_candidates: usize, epoch_limit: usize, mutation_rate: f64, population_size: usize, time_limit: Duration) -> Result<Success<G>, Failure> where G: Clone + Debug + Eq + PartialEq,