Esempio n. 1
0
 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)
Esempio n. 2
0
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)
Esempio n. 3
0
 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)
Esempio n. 4
0
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)