From b56050a3d9e7445222b3092cc9e05e2a7b66835f Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sun, 2 Nov 2025 12:24:19 +0100 Subject: [PATCH] chore(tsp): few minor updates --- codes/tsp_hw01/src/main.rs | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/codes/tsp_hw01/src/main.rs b/codes/tsp_hw01/src/main.rs index e8cb896be2b11cc5bea13a8d19c10b6b3e429ec7..dc68cc9113e3cd9dc795b470a2fe74d28da110b7 100644 --- a/codes/tsp_hw01/src/main.rs +++ b/codes/tsp_hw01/src/main.rs @@ -13,7 +13,7 @@ use perturbations::{MovePerturbation, Random2OptPerturbation, ReverseSubsequence use binary_string_representation::TSPBinaryStringWrapper; use nalgebra::{Dim, Dyn}; use eoa_lib::{ - binary_string::BinaryString, comparison::MinimizingOperator, crossover::BinaryNPointCrossover, evolution::{evolution_algorithm, EvolutionStats}, initializer::{Initializer, RandomInitializer}, local_search::{local_search_first_improving, LocalSearchStats}, pairing::AdjacentPairing, perturbation::{apply_to_perturbations, BinaryStringBitPerturbation, BinaryStringFlipNPerturbation, BinaryStringSingleBitPerturbation, CombinedPerturbation, MutationPerturbation, PerturbationOperator}, replacement::{BestReplacement, TournamentReplacement}, selection::{BestSelection, RouletteWheelSelection}, terminating::MaximumCyclesTerminatingCondition + binary_string::BinaryString, comparison::MinimizingOperator, crossover::BinaryNPointCrossover, evolution::{evolution_algorithm, EvolutionStats}, initializer::{Initializer, RandomInitializer}, local_search::{local_search_first_improving, LocalSearchStats}, pairing::AdjacentPairing, perturbation::{apply_to_perturbations, BinaryStringBitPerturbation, BinaryStringFlipNPerturbation, BinaryStringSingleBitPerturbation, CombinedPerturbation, MutationPerturbation, PerturbationOperator}, replacement::{BestReplacement, TournamentReplacement}, selection::{BestSelection, RouletteWheelSelection, TournamentSelection}, terminating::MaximumCyclesTerminatingCondition }; use rand::rng; use std::env; @@ -86,8 +86,7 @@ fn extract_evolution_data( let mut evaluations = Vec::new(); for candidate in &stats.best_candidates { - let fitness_evaluations = initial_population_size + candidate.iteration * offspring_count; - iterations.push(fitness_evaluations); + iterations.push(candidate.evaluation); evaluations.push(candidate.evaluated_chromosome.evaluation); } @@ -118,8 +117,7 @@ fn extract_binary_evolution_data( let mut evaluations = Vec::new(); for candidate in &stats.best_candidates { - let fitness_evaluations = initial_population_size + candidate.iteration * offspring_count; - iterations.push(fitness_evaluations); + iterations.push(candidate.evaluation); evaluations.push(candidate.evaluated_chromosome.evaluation); } @@ -218,13 +216,13 @@ fn load_optimal_cost(instance_filename: &str) -> Result) -> Result> { let mut rng = rng(); - let initializer = MinimumSpanningTreeInitializer::new(instance); + let initializer = TSPRandomInitializer::new(); let dimension = instance.dimension(); // Create combined perturbation with two mutations wrapped in MutationPerturbation - let move_mutation = MutationPerturbation::new(Box::new(MovePerturbation::new()), 0.05); - let swap_mutation = MutationPerturbation::new(Box::new(SwapPerturbation::new()), 0.05); - let reverse_mutation = MutationPerturbation::new(Box::new(ReverseSubsequencePerturbation::new()), 0.0); + let move_mutation = MutationPerturbation::new(Box::new(MovePerturbation::new()), 0.1); + let swap_mutation = MutationPerturbation::new(Box::new(SwapPerturbation::new()), 0.1); + let reverse_mutation = MutationPerturbation::new(Box::new(ReverseSubsequencePerturbation::new()), 0.1); let mut combined_perturbation = CombinedPerturbation::new(vec![ Box::new(move_mutation), Box::new(swap_mutation), @@ -233,19 +231,19 @@ fn run_evolution_algorithm(instance: &TSPInstance) -> Result) -> Result