| 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
28
29
30
31
32
33
34
35
36
|
from pyrobot.brain.gp import *
from math import pi
share.env = Environment(env)
share.env.update( {'i1':0, 'i2':0} )
class GP(GA):
def __init__(self, cnt, **args):
GA.__init__(self, Population( cnt, GPGene, bias =.6,
elitePercent = .1, verbose = 1),
maxGeneration = 100,
verbose = 1)
def fitnessFunction(self, pos):
outputs = [ 0, 1, 1, 0 ] # outputs for XOR
inputs = [ {'i1' : 0, 'i2' : 0},
{'i1' : 0, 'i2' : 1},
{'i1' : 1, 'i2' : 0},
{'i1' : 1, 'i2' : 1} ]
diff = 0
for i in range(len(inputs)):
set, goal = inputs[i], outputs[i]
retval = self.pop.individuals[pos].eval(set)
item = retval - goal
diff += abs(item)
return max(4 - diff, 0)
def isDone(self):
fit = self.pop.bestMember.fitness
self.pop.bestMember.display()
print
return fit == 4
gp = GP(50)
gp.evolve() |