UserPreferences

GPxorProgram


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