Exemple #1
0
def main():
  import input
  logging.basicConfig(level=logging.INFO, stream=sys.stdout)
  np.set_printoptions(precision=3, edgeitems=3, threshold=20)

  random.seed(5108) # used by the GA
  randSample = random.Random(input.SAMPLE_SEED) # used for data set sampling

  inp = input.Input("train3-std.tsv", randSample)
  print "Train set:",
  inp.trainSet.show()
  
  print "Test set:",
  inp.testSet.show()

  n = inp.trainSet.size * 20/100
  a = ANN()
  a.prepare(inp.trainSet, POPSIZE)
  
  tester = SampleTester()
  tester.prepare(inp.testSet, randSample)
  tester.showSampleSets()

  params = []
  generatePop(params)
  mutateValue = 6.0

  for genIndex in range(5000):
    print "Generation", genIndex, "starting."
    logFP("Population", params)
    outputValues = a.evaluate(params, returnOutputs=True)
    
    logFP("Outputs", outputValues)
    
    thresholds = a.nlargest(n)
    logFP("Thresholds", thresholds)

    lifts = a.lift(n)
    logFP("Lifts", lifts)

    taggedParams = sorted(zip(lifts, params, range(len(params))),
                          key=lambda (l, p, i): l,
                          reverse=True)
    sortedParams = [p for l, p, i in taggedParams]
    logFP("Sorted pop", sortedParams)

    testLift, _ = tester.test(sortedParams[0])

    genplot.addGeneration(lifts, testLift, genIndex)
    
    params = generateGeneration(sortedParams, mutateValue)
    if genIndex%500 == 499:
        mutateValue -= 0.5

  args = sys.argv[1:]
  if len(args) == 1:
    open(args[0], "w").write(repr(sortedParams[0]))

  genplot.plot()
Exemple #2
0
#!/usr/bin/python
import genops
import genplot

def fitnessTest(generation):
    fitList = []
    for i in generation:
        fitList.append(i.ih[3][2] - i.c[1][15])

    zippedGen = zip(fitList, generation)
    zippedGen.sort()
    zippedGen.reverse()
    return zippedGen

currGen = genops.generatePop(500)
currFit = []
zippedGen = fitnessTest(currGen)
currFit, currGen = zip(*zippedGen)

genplot.addGeneration(currFit, 0)
for i in range(1,100):
    print "Generation", i
    nextGen = genops.generateGeneration(currGen)
    zippedGen = fitnessTest(nextGen)
    currFit, currGen = zip(*zippedGen)
    genplot.addGeneration(currFit, i)

genplot.plot()