Exemplo n.º 1
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     rand = randint(2, 100)
     rule = Rule([ModuloFeature(rand)], [1.0])
     rule.mappers = [BooleanMapper()]
     self.add_rule(rule, 1.0)
     self._log(logging.DEBUG, 'Created with rule={}'.format(rule))
Exemplo n.º 2
0
    def invent_number(self, low, high):
        '''Invent new number from given interval.'''
        self._log(logging.DEBUG, "Inventing number from ({}, {})"
                  .format(low, high))
        ars = []
        steps = 0
        while len(ars) < 10 and steps < 1000:
            steps += 1
            r = randint(low, high)
            ar = Artifact(self, r)
            ar.domain = int
            if ar not in self.A:
                ars.append(ar)

        if len(ars) == 0:
            self._log(logging.INFO,
                      "Could not invent new number!".format(self))
            return 1, 0.0

        best_eval, fr = self.evaluate(ars[0])
        ars[0].add_eval(self, best_eval, fr)
        best_number = ars[0].obj
        best_ar = ars[0]
        for ar in ars[1:]:
            e, fr = self.evaluate(ar)
            ar.add_eval(self, e, fr)
            if e > best_eval:
                best_eval = e
                best_number = ar.obj
                best_ar = ar

        self._log(logging.DEBUG, "Invented number {}, with e = {}."
                  .format(best_number, best_eval))
        if best_eval > 0.5:
            rule = Rule([ModuloFeature(best_number)], [1.0])
            rule.mappers = [BooleanMapper()]
            self.add_rule(rule, 1.0)
            self._log(logging.INFO,
                      "Appended {} to features.".format(best_number))

        return best_ar