Skip to content

Commit 552e8b2

Browse files
committed
Add get_genes on Chromosome Trait as debug helper method
1 parent 6800698 commit 552e8b2

File tree

11 files changed

+32
-0
lines changed

11 files changed

+32
-0
lines changed

src/chromosome.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ pub trait ChromosomeManager<G: Genotype> {
7171
/// Mandatory, also resets state
7272
fn set_genes(&mut self, chromosome: &mut G::Chromosome, genes: &G::Genes);
7373
/// Mandatory
74+
fn get_genes(&self, chromosome: &G::Chromosome) -> G::Genes;
75+
/// Mandatory
7476
fn chromosome_bin_push(&mut self, _chromosome: G::Chromosome);
7577
/// Mandatory
7678
/// Take from the recycling bin or create new chromosome with capacities set.

src/genotype/binary.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,9 @@ impl ChromosomeManager<Self> for Binary {
273273
chromosome.genes.clone_from(genes);
274274
self.reset_chromosome_state(chromosome);
275275
}
276+
fn get_genes(&self, chromosome: &BinaryChromosome) -> Vec<bool> {
277+
chromosome.genes.clone()
278+
}
276279
fn copy_genes(&mut self, source: &BinaryChromosome, target: &mut BinaryChromosome) {
277280
target.genes.clone_from(&source.genes);
278281
self.copy_chromosome_state(source, target);

src/genotype/bit.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,9 @@ impl ChromosomeManager<Self> for Bit {
354354
chromosome.genes.clone_from(genes);
355355
self.reset_chromosome_state(chromosome);
356356
}
357+
fn get_genes(&self, chromosome: &BitChromosome) -> FixedBitSet {
358+
chromosome.genes.clone()
359+
}
357360
fn copy_genes(&mut self, source: &BitChromosome, target: &mut BitChromosome) {
358361
target.genes.clone_from(&source.genes);
359362
self.copy_chromosome_state(source, target);

src/genotype/dynamic_matrix.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,9 @@ where
674674
x.copy_from_slice(genes);
675675
self.reset_chromosome_state(chromosome);
676676
}
677+
fn get_genes(&self, chromosome: &DynamicMatrixChromosome) -> Vec<T> {
678+
self.get_genes_by_id(chromosome.row_id).to_vec()
679+
}
677680
fn copy_genes(
678681
&mut self,
679682
source: &DynamicMatrixChromosome,

src/genotype/list.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,9 @@ impl<T: Allele + PartialEq + Hash> ChromosomeManager<Self> for List<T> {
317317
chromosome.genes.clone_from(genes);
318318
self.reset_chromosome_state(chromosome);
319319
}
320+
fn get_genes(&self, chromosome: &ListChromosome<T>) -> Vec<T> {
321+
chromosome.genes.clone()
322+
}
320323
fn copy_genes(&mut self, source: &ListChromosome<T>, target: &mut ListChromosome<T>) {
321324
target.genes.clone_from(&source.genes);
322325
self.copy_chromosome_state(source, target);

src/genotype/multi_list.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,9 @@ impl<T: Allele + PartialEq + Hash> ChromosomeManager<Self> for MultiList<T> {
369369
chromosome.genes.clone_from(genes);
370370
self.reset_chromosome_state(chromosome);
371371
}
372+
fn get_genes(&self, chromosome: &MultiListChromosome<T>) -> Vec<T> {
373+
chromosome.genes.clone()
374+
}
372375
fn copy_genes(&mut self, source: &MultiListChromosome<T>, target: &mut MultiListChromosome<T>) {
373376
target.genes.clone_from(&source.genes);
374377
self.copy_chromosome_state(source, target);

src/genotype/multi_range.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,9 @@ where
602602
chromosome.genes.clone_from(genes);
603603
self.reset_chromosome_state(chromosome);
604604
}
605+
fn get_genes(&self, chromosome: &MultiRangeChromosome<T>) -> Vec<T> {
606+
chromosome.genes.clone()
607+
}
605608
fn copy_genes(
606609
&mut self,
607610
source: &MultiRangeChromosome<T>,

src/genotype/multi_unique.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,9 @@ impl<T: Allele + Hash> ChromosomeManager<Self> for MultiUnique<T> {
389389
chromosome.genes.clone_from(genes);
390390
self.reset_chromosome_state(chromosome);
391391
}
392+
fn get_genes(&self, chromosome: &MultiUniqueChromosome<T>) -> Vec<T> {
393+
chromosome.genes.clone()
394+
}
392395
fn copy_genes(
393396
&mut self,
394397
source: &MultiUniqueChromosome<T>,

src/genotype/range.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,9 @@ where
548548
chromosome.genes.clone_from(genes);
549549
self.reset_chromosome_state(chromosome);
550550
}
551+
fn get_genes(&self, chromosome: &RangeChromosome<T>) -> Vec<T> {
552+
chromosome.genes.clone()
553+
}
551554
fn copy_genes(&mut self, source: &RangeChromosome<T>, target: &mut RangeChromosome<T>) {
552555
target.genes.clone_from(&source.genes);
553556
self.copy_chromosome_state(source, target);

src/genotype/static_matrix.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,9 @@ where
669669
x.copy_from_slice(genes.as_slice());
670670
self.reset_chromosome_state(chromosome);
671671
}
672+
fn get_genes(&self, chromosome: &StaticMatrixChromosome) -> Box<[T; N]> {
673+
Box::new(self.data[chromosome.row_id])
674+
}
672675
fn copy_genes(&mut self, source: &StaticMatrixChromosome, target: &mut StaticMatrixChromosome) {
673676
self.copy_genes_by_id(source.row_id, target.row_id);
674677
self.copy_chromosome_state(source, target);

0 commit comments

Comments
 (0)