Esempio n. 1
0
 def test_validate(self):
     crossover_operator = StringCrossover(Probability(1), Random(), 1)
     candidate1 = Candidate()
     candidate1.data = 'AAAA'
     candidate2 = Candidate()
     candidate2.data = 'BBBB'
     crossover_operator.validate_parents(candidate1, candidate2)
     candidate2.data = 'BBBBB'
     with self.assertRaises(ValidationException):
         crossover_operator.validate_parents(candidate1, candidate2)
    def test_validate(self):
        crossover_operator = ListCrossover(Probability(1), Random(), 1)
        candidate1 = Candidate()
        candidate1.data = [1, 2, 3, 4]
        candidate2 = Candidate()
        candidate2.data = [5, 6, 7, 8]
        crossover_operator.validate_parents(candidate1, candidate2)

        candidate2.data = [1, 2, 3, 4, 5]
        with self.assertRaises(ValidationException):
            crossover_operator.validate_parents(candidate1, candidate2)
 def _test_apply(self, strings, random, points):
     candidate1 = Candidate()
     candidate1.data = strings[0][0]
     candidate2 = Candidate()
     candidate2.data = strings[0][1]
     crossover_points = points
     crossover_operator = ListCrossover(Probability(1), random, crossover_points)
     result = crossover_operator.mate(candidate1, candidate2)
     self.assertEqual(len(result), 2)
     self.assertEqual(result[0].data, strings[1][0])
     self.assertEqual(result[1].data, strings[1][1])
Esempio n. 4
0
 def test_apply(self):
     candidate1 = Candidate()
     candidate1.data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
     candidate2 = Candidate()
     candidate2.data = [9, 3, 7, 8, 2, 6, 5, 1, 4]
     random = Random()
     random.int = MagicMock(side_effect=[3, 7])
     crossover_operator = ListOrderCrossover(Probability(1), random)
     result = crossover_operator.mate(candidate1, candidate2)
     self.assertEqual(len(result), 2)
     self.assertEqual(result[0].data, [1, 7, 3, 8, 2, 6, 5, 4, 9])
     self.assertEqual(result[1].data, [9, 3, 2, 4, 5, 6, 7, 1, 8])
Esempio n. 5
0
 def _test_get_fitness(self, target, inputs, score):
     candidate = Candidate()
     candidate.data = inputs
     population = Population()
     population.append(candidate)
     fitness_evaluator = StringFitnessEvaluator(target)
     result = fitness_evaluator.get_fitness(candidate, population)
     self.assertIsInstance(result, Fitness)
     self.assertEqual(result, score)
 def test_apply(self):
     candidate = Candidate()
     candidate.data = [1, 2, 3, 4]
     population = Population([candidate])
     probability = Probability(1)
     random = Random()
     random.int = MagicMock(side_effect=[1, 3])
     crossover_operator = ListOrderMutation(probability, random, 1)
     result = crossover_operator.apply(population)
     self.assertEqual(len(result), len(population))
     self.assertEqual(result[0].data, [1, 4, 3, 2])
 def test_apply_zero(self):
     inputs, outputs = ('aaaa', 'aaaa')
     candidate = Candidate()
     candidate.data = inputs
     population = Population()
     population.append(candidate)
     probability = Probability(0)
     random = Random()
     mutation_operator = BitStringMutation(probability, random)
     result = mutation_operator.apply(population)
     self.assertEqual(len(result), len(population))
     self.assertEqual(result[0].data, outputs)
Esempio n. 8
0
 def test_apply_zero(self):
     alphabet = 'abcd'
     inputs, outputs = ('aaaa', 'aaaa')
     candidate = Candidate()
     candidate.data = inputs
     population = Population()
     population.append(candidate)
     probability = Probability(0)
     random = Random()
     crossover_operator = StringMutation(probability, random, alphabet)
     result = crossover_operator.apply(population)
     self.assertEqual(len(result), len(population))
     self.assertEqual(result[0].data, outputs)
 def test_apply_one(self):
     inputs, outputs = ('0110', '1010')
     candidate = Candidate()
     candidate.data = inputs
     population = Population()
     population.append(candidate)
     probability = Probability(1)
     random = Random()
     random.float = MagicMock(side_effect=[0.6, 0.1, 0.9, 0.4])
     mutation_operator = BitStringMutation(probability, random)
     result = mutation_operator.apply(population)
     self.assertEqual(len(result), len(population))
     self.assertEqual(result[0].data, outputs)
Esempio n. 10
0
 def test_apply_one(self):
     alphabet = 'abcd'
     inputs, outputs = ('aaaa', 'abcd')
     candidate = Candidate()
     candidate.data = inputs
     population = Population()
     population.append(candidate)
     probability = Probability(1)
     random = Random()
     random.choice = MagicMock(side_effect=['a', 'b', 'c', 'd'])
     crossover_operator = StringMutation(probability, random, alphabet)
     result = crossover_operator.apply(population)
     self.assertEqual(len(result), len(population))
     self.assertEqual(result[0].data, outputs)