Edge case for converting fitness to minimization

Avoid catastrophic cancellations
This commit is contained in:
SimpleArt
2020-11-09 16:02:01 -05:00
parent ce0d879f82
commit 9c455957f2

View File

@ -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):