def __init__(self, p_grow: float = 1 / 3, p_prune: float = 1 / 3, p_change: float = 1 / 3): self.method_sampler = DiscreteSampler( [grow_mutations, prune_mutations], [p_grow, p_prune], cache_size=1000)
class UniformMutationProposer(TreeMutationProposer): def __init__(self, prob_method: List[float] = None, prob_method_lookup: Mapping[Callable[[Tree], TreeMutation], float] = None): if prob_method_lookup is not None: self.prob_method_lookup = prob_method_lookup else: if prob_method is None: prob_method = [0.5, 0.5] self.prob_method_lookup = { x[0]: x[1] for x in zip([ uniformly_sample_grow_mutation, uniformly_sample_prune_mutation ], prob_method) } self.methods = list(self.prob_method_lookup.keys()) self.method_sampler = DiscreteSampler( list(self.prob_method_lookup.keys()), list(self.prob_method_lookup.values()), cache_size=1000) def propose(self, tree: Tree) -> TreeMutation: method = self.method_sampler.sample() try: return method(tree) except NoSplittableVariableException: return self.propose(tree) except NoPrunableNodeException: return self.propose(tree)
def __init__(self, prob_method: List[float] = None, prob_method_lookup: Mapping[Callable[[Tree], TreeMutation], float] = None): if prob_method_lookup is not None: self.prob_method_lookup = prob_method_lookup else: if prob_method is None: prob_method = [0.5, 0.5] self.prob_method_lookup = { x[0]: x[1] for x in zip([ uniformly_sample_grow_mutation, uniformly_sample_prune_mutation ], prob_method) } self.methods = list(self.prob_method_lookup.keys()) self.method_sampler = DiscreteSampler( list(self.prob_method_lookup.keys()), list(self.prob_method_lookup.values()), cache_size=1000)
class UniformMutationProposer(TreeMutationProposer): def __init__(self, p_grow: float = 1 / 3, p_prune: float = 1 / 3, p_change: float = 1 / 3): self.method_sampler = DiscreteSampler( [grow_mutations, prune_mutations], [p_grow, p_prune], cache_size=1000) def propose(self, tree: Tree) -> TreeMutation: method = self.method_sampler.sample() try: return method(tree) except NoSplittableVariableException: return self.propose(tree) except NoPrunableNodeException: return self.propose(tree)