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