From 9c455957f2640cf65f4206f60d8b2e9659d1e65f Mon Sep 17 00:00:00 2001 From: SimpleArt <71458112+SimpleArt@users.noreply.github.com> Date: Mon, 9 Nov 2020 16:02:01 -0500 Subject: [PATCH] Edge case for converting fitness to minimization Avoid catastrophic cancellations --- src/EasyGA.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/EasyGA.py b/src/EasyGA.py index 1399ea4..11642bc 100644 --- a/src/EasyGA.py +++ b/src/EasyGA.py @@ -141,7 +141,10 @@ class GA(Attributes): if self.target_fitness_type == 'max': return fitness_value max_fitness = self.population.get_chromosome(-1).get_fitness() min_fitness = self.population.get_chromosome(0).get_fitness() - return max_fitness - fitness_value + min_fitness + if min_fitness / max_fitness < 1e-5: + return -fitness_value + else: + return max_fitness - fitness_value + min_fitness def print_generation(self):