def test_should_terminate(self): candidate = Candidate() candidate.fitness = Fitness(50) population = Population() population.append(candidate) termination_condition = TargetFitness(100) self.assertEqual(termination_condition.should_terminate(population), False) candidate.fitness = Fitness(150) self.assertEqual(termination_condition.should_terminate(population), True)
def test_should_terminate_not_natural(self): candidate = Candidate() candidate.fitness = Fitness(-50, is_natural=False) population = Population() population.append(candidate) termination_condition = TargetFitness(-100) self.assertEqual(termination_condition.should_terminate(population), False) candidate.fitness = Fitness(-150, is_natural=False) self.assertEqual(termination_condition.should_terminate(population), True)
def test_should_terminate(self): candidate = Candidate() candidate.fitness = Fitness(1) population = Population() population.append(candidate) termination_condition = Stagnation(3) self.assertEqual(termination_condition.should_terminate(population), False) self.assertEqual(termination_condition.should_terminate(population), False) self.assertEqual(termination_condition.should_terminate(population), True) candidate.fitness = Fitness(2) self.assertEqual(termination_condition.should_terminate(population), False) self.assertEqual(termination_condition.should_terminate(population), False) self.assertEqual(termination_condition.should_terminate(population), True)
def test_trigger(self): candidate = Candidate() candidate.fitness = Fitness(1) population = Population([candidate]) observer = ConsoleObserver() observer.trigger(Event(Event.INITIALIZE, {'population': population})) observer.trigger( Event(Event.EVALUATED_POPULATION, { 'generation': 1, 'population': population })) observer.trigger( Event(Event.TERMINATE, { 'generation': 1, 'population': population }))
def create_candidate(self, fitness=None, is_natural=True): candidate = Candidate() candidate.fitness = Fitness(fitness, is_natural=is_natural) return candidate