From f39d246106fe659544aca5cad3ce1fb343d9cfa4 Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sat, 8 Nov 2025 17:26:10 +0100 Subject: [PATCH] feat(lib): allow modifying fitness function in evolution_algorithm --- codes/eoa_lib/src/evolution.rs | 9 ++++++--- codes/tsp_hw01/src/main.rs | 30 +++++++++++++++--------------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/codes/eoa_lib/src/evolution.rs b/codes/eoa_lib/src/evolution.rs index 837c3b54643e101be22922a460071a60d39e763e..cbb350ed5f7d9e7b72c891b65b34abc286ab308e 100644 --- a/codes/eoa_lib/src/evolution.rs +++ b/codes/eoa_lib/src/evolution.rs @@ -35,13 +35,14 @@ pub fn evolution_algorithm TResult: Clone, const DParents: usize, TSelection: Selection, + TFitness: FitnessFunction, TPairing: Pairing, TCrossover: Crossover, TReplacement: Replacement, TPerturbation: PerturbationOperator>( initial_population: Population, parents_count: usize, - fitness: &impl FitnessFunction, + fitness: &mut TFitness, selection: &mut TSelection, pairing: &mut TPairing, crossover: &mut TCrossover, @@ -56,6 +57,7 @@ pub fn evolution_algorithm &EvolutionStats, &EvaluatedPopulation, + &mut TFitness, &mut TSelection, &mut TPairing, &mut TCrossover, @@ -149,6 +151,7 @@ pub fn evolution_algorithm iteration, &stats, ¤t_population, + fitness, selection, pairing, crossover, @@ -195,7 +198,7 @@ pub mod tests { let result = evolution_algorithm( population, 50, - &one_max, + &mut one_max, &mut TournamentSelection::new(5, 0.8), &mut AdjacentPairing::new(), &mut BinaryOnePointCrossover::new(), @@ -213,7 +216,7 @@ pub mod tests { &MinimizingOperator, 1000, &mut rng, - |_, _, _, _, _, _, _, _| () + |_, _, _, _, _, _, _, _, _| () ).unwrap(); assert_eq!( diff --git a/codes/tsp_hw01/src/main.rs b/codes/tsp_hw01/src/main.rs index d23a9b1f40b637ffcb85ab40453086186085907e..df99b70bb703bccbfa2e20c3023274709a1fe79d 100644 --- a/codes/tsp_hw01/src/main.rs +++ b/codes/tsp_hw01/src/main.rs @@ -269,7 +269,7 @@ fn run_evolution_algorithm(instance: &TSPInstance) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result) -> Result