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"])
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)
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"])
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
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)