UserPreferences

GPUserDefinedFunsProgram


  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 

from pyrobot.brain.gp import *
from math import pi


class PI_GP(GA):
    def __init__(self, cnt, **args):
        GA.__init__(self, Population(cnt, GPGene, bias = .6,
                                     verbose = 1,
                                     elitePercent = .1),
                    verbose = 1, maxGeneration = 25)
    def fitnessFunction(self, pos, pr = 0):
        diff = abs(self.pop.individuals[pos].eval() - pi)
        if pr:
            self.pop.individuals[pos].display()
            print
        return max(pi - diff, 0)

    def isDone(self):
        return abs(self.fitnessFunction(0, 1) - pi) < .001

share.env = Environment(env)
share.env.update( {'+1': Operator(lambda obj: obj + 1, 1, "regular"),
                   '1/2': .5,
                   'e': math.e } )
gp = PI_GP(100)
gp.evolve()