| 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() |