From 5dbba6edf39d07fef9fe2b7054dc757a9ccc2e07 Mon Sep 17 00:00:00 2001 From: Sepehr Madani <ssepehrmadani@gmail.com> Date: Sun, 26 Jul 2020 15:45:53 -0400 Subject: [PATCH] fixed update_fitness calculation error --- algorithms/genetic_bucket_algorithm.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/algorithms/genetic_bucket_algorithm.py b/algorithms/genetic_bucket_algorithm.py index 63e0558..121df27 100644 --- a/algorithms/genetic_bucket_algorithm.py +++ b/algorithms/genetic_bucket_algorithm.py @@ -64,23 +64,20 @@ class GeneticBucketAlgorithm(BaseAlgorithm): chromosome.gene[idx] = Chromosome.new_gene(self.bit_count) def update_fitness(self, use_exact_angle=True): + self.buckets = [[]] * 8 for chromosome in self.chromosomes: - chromosome.fitness = -20 * log10( - abs( - compute_pattern( - N=self.N, - k=self.k, - weights=self.make_weights(chromosome), - degrees=self.null_degrees, - use_absolute_value=False, - )[0] - ) - ) + chromosome.fitness = compute_pattern( + N=self.N, + k=self.k, + weights=self.make_weights(chromosome), + degrees=self.null_degrees, + use_absolute_value=False, + )[0] bucket_idx = int(((cmath.phase(chromosome.fitness) + pi) / (2 * pi)) * 8) % 8 self.buckets[bucket_idx].append(chromosome) def sort_fitness(self): - self.chromosomes.sort(key=lambda x: abs(x.fitness), reverse=True) + self.chromosomes.sort(key=lambda x: -20 * log10(abs(x.fitness)), reverse=True) def make_weights(self, chromosome): weights = [] @@ -104,4 +101,4 @@ class GeneticBucketAlgorithm(BaseAlgorithm): def intialize_sample(self): self.chromosomes = [ Chromosome(self.N, self.bit_count) for i in range(self.sample_size) - ] \ No newline at end of file + ] -- GitLab