Edge case for converting fitness to minimization
Avoid catastrophic cancellations
This commit is contained in:
@ -141,6 +141,9 @@ class GA(Attributes):
|
|||||||
if self.target_fitness_type == 'max': return fitness_value
|
if self.target_fitness_type == 'max': return fitness_value
|
||||||
max_fitness = self.population.get_chromosome(-1).get_fitness()
|
max_fitness = self.population.get_chromosome(-1).get_fitness()
|
||||||
min_fitness = self.population.get_chromosome(0).get_fitness()
|
min_fitness = self.population.get_chromosome(0).get_fitness()
|
||||||
|
if min_fitness / max_fitness < 1e-5:
|
||||||
|
return -fitness_value
|
||||||
|
else:
|
||||||
return max_fitness - fitness_value + min_fitness
|
return max_fitness - fitness_value + min_fitness
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user