Beispiel #1
0
 def test_to_dict(self):
     operator = OnePointStrictLeafBiasedRecombinator()
     variator = CrossoverVariator(operator, 10)
     result = variator.to_dict()
     self.assertIsInstance(result, dict)
     self.assertEqual(operator.to_dict(), result["operator"])
     self.assertEqual(variator.n_offspring, result["n_offspring"])
     self.assertEqual(variator.n_way, result["n_way"])
     self.assertEqual(variator.c_prob, result["c_prob"])
Beispiel #2
0
 def test_from_dict(self):
     test_cases = (CrossoverVariator, Variator, Serializable)
     for cls in test_cases:
         with self.subTest(name=cls.__name__):
             operator = OnePointStrictLeafBiasedRecombinator()
             variator = CrossoverVariator(operator, 3)
             result = cls.from_dict(variator.to_dict())
             self.assertIsInstance(result, CrossoverVariator)
             self.assertEqual(variator.operator.__class__,
                              result.operator.__class__)
             self.assertEqual(variator.n_offspring, result.n_offspring)
             self.assertEqual(variator.n_way, result.n_way)
             self.assertEqual(variator.c_prob, result.c_prob)
Beispiel #3
0
 def test_to_dict(self):
     cx_variator = CrossoverVariator(Recombinator(), 2)
     pop_operator = CrossoverPopOperator([cx_variator])
     result = pop_operator.to_dict()
     self.assertIsInstance(result, dict)
     self.assertEqual([v.to_dict() for v in pop_operator.variators],
                      result["variators"])
Beispiel #4
0
 def test_variators(self):
     cx_variator = CrossoverVariator(Recombinator(), 2)
     mut_variator = MutationVariator(Mutator())
     operator = CrossoverPopOperator([cx_variator, mut_variator])
     with self.assertRaises(ValueError):
         operator.variators = [cx_variator, mut_variator]
     with self.assertRaises(TypeError):
         operator.crossover_variator = mut_variator
Beispiel #5
0
 def test_from_dict(self):
     test_cases = (CrossoverPopOperator, PopulationOperator, Serializable)
     for cls in test_cases:
         with self.subTest(name=cls.__name__):
             cx_variator = CrossoverVariator(Recombinator(), 2)
             pop_operator = CrossoverPopOperator([cx_variator])
             result = cls.from_dict(pop_operator.to_dict())
             self.assertIsInstance(result, CrossoverPopOperator)
             self.assertEqual(pop_operator.variators[0].__class__,
                              result.variators[0].__class__)
    def _create_default_grammar(n_offspring: int,
                                cx_prob: float,
                                m_prob: float,
                                base_kernel_names: Optional[List[str]] = None,
                                hyperpriors: Optional[HyperpriorMap] = None):
        mutator = HalfAndHalfMutator(binary_tree_node_cls=KernelNode, max_depth=1)
        recombinator = SubtreeExchangeRecombinator()  # OnePointStrictRecombinator()

        cx_variator = CrossoverVariator(recombinator, n_offspring=n_offspring, c_prob=cx_prob)
        mut_variator = MutationVariator(mutator, m_prob=m_prob)
        variators = [cx_variator, mut_variator]
        pop_operator = CrossMutPopOperator(variators)

        return EvolutionaryGrammar(population_operator=pop_operator, base_kernel_names=base_kernel_names,
                                   hyperpriors=hyperpriors)