M codes/eoa_lib/src/crossover.rs => codes/eoa_lib/src/crossover.rs +0 -1
@@ 2,7 2,6 @@ use std::marker::PhantomData;
use nalgebra::{allocator::Allocator, DefaultAllocator, Dim, OVector, Scalar, U1};
use rand::{seq::IteratorRandom, Rng, RngCore};
-use rand_distr::Uniform;
use crate::{binary_string::BinaryString, pairing::ParentPairing, population::{EvaluatedPopulation, Population}};
M codes/eoa_lib/src/evolutionary_strategy.rs => codes/eoa_lib/src/evolutionary_strategy.rs +1 -1
@@ 3,7 3,7 @@ use std::{convert::Infallible, error::Error};
use nalgebra::SVector;
use rand_distr::{Normal, NormalError};
-use crate::{local_search::LocalSearchStats, perturbation::{apply_to_perturbations, BoundedPerturbation, PerturbationOperator, RandomDistributionPerturbation}};
+use crate::{local_search::LocalSearchStats, perturbation::{apply_to_perturbations, PerturbationOperator, RandomDistributionPerturbation}};
pub trait EvolutionaryStrategy<TOut, TPerturbation: PerturbationOperator> {
type Err: Error + 'static;
M codes/eoa_lib/src/pairing.rs => codes/eoa_lib/src/pairing.rs +1 -1
@@ 1,6 1,6 @@
use std::marker::PhantomData;
-use nalgebra::{Const, OVector, SVector};
+use nalgebra::{Const, OVector};
use crate::population::EvaluatedPopulation;
M codes/eoa_lib/src/perturbation/mod.rs => codes/eoa_lib/src/perturbation/mod.rs +1 -1
@@ 1,4 1,4 @@
-use std::{any::Any, borrow::{Borrow, BorrowMut}, marker::PhantomData};
+use std::{any::Any, marker::PhantomData};
use nalgebra::{allocator::Allocator, DefaultAllocator, Dim, SVector};
use rand::{distr::Distribution, Rng, RngCore, prelude::IteratorRandom};
M codes/eoa_lib/src/replacement.rs => codes/eoa_lib/src/replacement.rs +2 -4
@@ 1,7 1,7 @@
use rand::{seq::IteratorRandom, RngCore};
use std::fmt::Debug;
-use crate::{comparison::BetterThanOperator, fitness::FitnessFunction, population::{EvaluatedPopulation, EvaluatedChromosome}, selection::{Selection, TournamentSelection}};
+use crate::{comparison::BetterThanOperator, population::EvaluatedPopulation, selection::{Selection, TournamentSelection}};
fn extract_by_indices<T>(mut x: Vec<T>, mut idxs: Vec<usize>) -> Vec<T> {
idxs.sort_unstable_by(|a, b| b.cmp(a));
@@ 113,14 113,12 @@ impl<TInput, TResult> Replacement<TInput, TResult> for RandomReplacement {
}
pub struct TournamentReplacement {
- selection: TournamentSelection,
- evaluation_pool: Vec<f64>
+ selection: TournamentSelection
}
impl TournamentReplacement {
pub fn new(k: usize, p: f64) -> Self {
TournamentReplacement {
- evaluation_pool: vec![],
selection: TournamentSelection::new(
k,
p,
M codes/eoa_lib/src/selection.rs => codes/eoa_lib/src/selection.rs +2 -2
@@ 1,6 1,6 @@
-use nalgebra::{Dyn, OVector, Scalar, U1};
+use nalgebra::Scalar;
use rand::{seq::IteratorRandom, Rng, RngCore};
-use rand_distr::uniform::{SampleRange, SampleUniform};
+use rand_distr::uniform::SampleUniform;
use std::{cmp::Ordering, fmt::Debug, ops::{AddAssign, Sub}};
use crate::{comparison::BetterThanOperator, population::EvaluatedPopulation};
M codes/tsp_hw01/src/crossovers.rs => codes/tsp_hw01/src/crossovers.rs +1 -1
@@ 227,7 227,7 @@ where
&self,
parents: &eoa_lib::population::EvaluatedPopulation<Self::Chromosome, Self::Out>,
pairs: impl Iterator<Item = eoa_lib::pairing::ParentPairing<2>>,
- rng: &mut dyn RngCore
+ _: &mut dyn RngCore
) -> Population<Self::Chromosome> {
let mut offsprings = vec![];
M codes/tsp_hw01/src/initializers.rs => codes/tsp_hw01/src/initializers.rs +5 -7
@@ 1,5 1,5 @@
use std::{cmp::Ordering, marker::PhantomData};
-use nalgebra::{allocator::Allocator, Const, DefaultAllocator, Dim, OVector, U1, U2};
+use nalgebra::{allocator::Allocator, DefaultAllocator, Dim, OVector, U1, U2};
use rand::{prelude::SliceRandom, seq::IteratorRandom, Rng, RngCore};
use eoa_lib::initializer::Initializer;
use crate::{graph::{Graph, minimal_spanning_tree_kruskal, GenericGraph}, tsp::{NodePermutation, TSPCity, TSPEdge, TSPInstance}};
@@ 37,22 37,21 @@ where
}
}
-pub struct NearestNeighborInitializer<'a, D: Dim>
+pub struct NearestNeighborInitializer<D: Dim>
where
DefaultAllocator: nalgebra::allocator::Allocator<D>,
DefaultAllocator: nalgebra::allocator::Allocator<D, D>
{
- instance: &'a TSPInstance<D>,
neighbors_order: Vec<Vec<usize>>,
_phantom: PhantomData<D>,
}
-impl<'a, D: Dim> NearestNeighborInitializer<'a, D>
+impl<D: Dim> NearestNeighborInitializer<D>
where
DefaultAllocator: nalgebra::allocator::Allocator<D>,
DefaultAllocator: nalgebra::allocator::Allocator<D, D>
{
- pub fn new(instance: &'a TSPInstance<D>) -> Self {
+ pub fn new(instance: &TSPInstance<D>) -> Self {
let mut neighbors_order = vec![
(0..instance.cities.len()).collect::<Vec<_>>();
instance.cities.len()
@@ 69,7 68,6 @@ where
Self {
neighbors_order,
- instance,
_phantom: PhantomData
}
}
@@ 118,7 116,7 @@ where
}
}
-impl<'a, D: Dim> Initializer<D, NodePermutation<D>> for NearestNeighborInitializer<'a, D>
+impl<D: Dim> Initializer<D, NodePermutation<D>> for NearestNeighborInitializer<D>
where
DefaultAllocator: nalgebra::allocator::Allocator<D>,
DefaultAllocator: nalgebra::allocator::Allocator<D, D>
M codes/tsp_hw01/src/main.rs => codes/tsp_hw01/src/main.rs +3 -3
@@ 8,12 8,12 @@ pub mod graph;
use tsp::{NodePermutation, TSPInstance};
use initializers::{MinimumSpanningTreeInitializer, NearestNeighborInitializer, TSPRandomInitializer};
-use crossovers::{CycleCrossover, EdgeRecombinationCrossover, NoCrossover, PartiallyMappedCrossover};
-use perturbations::{MovePerturbation, Random2OptPerturbation, ReverseSubsequencePerturbation, SwapPerturbation};
+use crossovers::{CycleCrossover, EdgeRecombinationCrossover, PartiallyMappedCrossover};
+use perturbations::{MovePerturbation, ReverseSubsequencePerturbation, SwapPerturbation};
use binary_string_representation::TSPBinaryStringWrapper;
use nalgebra::{Dim, Dyn};
use eoa_lib::{
- binary_string::BinaryString, comparison::MinimizingOperator, crossover::BinaryNPointCrossover, evolution::{evolution_algorithm, EvolutionStats}, evolutionary_strategy::IdentityStrategy, initializer::{Initializer, RandomInitializer}, local_search::{local_search_first_improving, LocalSearchStats}, pairing::AdjacentPairing, perturbation::{apply_to_perturbations, BinaryStringBitPerturbation, BinaryStringFlipNPerturbation, BinaryStringSingleBitPerturbation, CombinedPerturbation, IdentityPerturbation, MutationPerturbation, OneOfPerturbation, PerturbationOperator}, random_search::random_search, replacement::{BestReplacement, TournamentReplacement}, selection::{BestSelection, RouletteWheelSelection, TournamentSelection}, terminating::MaximumCyclesTerminatingCondition
+ binary_string::BinaryString, comparison::MinimizingOperator, crossover::BinaryNPointCrossover, evolution::{evolution_algorithm, EvolutionStats}, evolutionary_strategy::IdentityStrategy, initializer::{Initializer, RandomInitializer}, local_search::{local_search_first_improving, LocalSearchStats}, pairing::AdjacentPairing, perturbation::{apply_to_perturbations, BinaryStringBitPerturbation, BinaryStringFlipNPerturbation, BinaryStringSingleBitPerturbation, CombinedPerturbation, IdentityPerturbation, MutationPerturbation, OneOfPerturbation}, random_search::random_search, replacement::{BestReplacement, TournamentReplacement}, selection::{BestSelection, RouletteWheelSelection}, terminating::MaximumCyclesTerminatingCondition
};
use rand::rng;
use std::env;
M codes/tsp_hw01/src/tsp.rs => codes/tsp_hw01/src/tsp.rs +1 -1
@@ 5,7 5,7 @@ use itertools::Itertools;
use nalgebra::{allocator::Allocator, distance, Const, DefaultAllocator, Dim, Dyn, OMatrix, OVector, Point};
use plotters::prelude::*;
-use crate::graph::{minimal_spanning_tree_kruskal, Edge, GenericGraph, Graph, WeightedEdge};
+use crate::graph::{Edge, GenericGraph, WeightedEdge};
#[derive(PartialEq, Clone, Debug)]
pub struct TSPCity {