def setUp(self):
		self.pop  = createPop()
		rand_individual = self.pop[random.randint(0, len(self.pop))]
		self.ch1 = [rand_individual.wi, rand_individual.wo]
		rand_individual = self.pop[random.randint(0, len(self.pop))]
		self.ch2 = [rand_individual.wi, rand_individual.wo]
		self.o1, self.o2 = crossover(self.ch1, self.ch2, NN)
예제 #2
0
def runTrial():
    """
    Fresh population of NN individuals are evalutated, paired with 
    their fitness scores and ordered by fitness in descending order (fittest first)
    """
    pop = createPop()
    pairedPop = pairPop(pop)
    rankedPop = sorted(pairedPop, key=itemgetter(-1), reverse=True) 
    all_results = {
        'train_mses_top' : [],
        'train_mses_avg' : [],
        'train_percents_avg' : [],
        'train_percents_top' : [],
        'test_mse' : 0,
        'test_percent' : 0
    }
    for iters in range(max_iterations):
        # raw_input('==============NEXT==============')
        if not iters % 1:
            print 'Iteration'.rjust(120), iters
        newpopW = evolveNewPop(rankedPop)
        print '\n \nEVOLVE NEW POP'
        rankedPop, top_mse, avg_mse, top_per, avg_per = rankPop(newpopW, pop, verbose=NN.pop_size)
        if iters > 0 and iters < 1000:
            newpopW = trainPP(rankedPop, pop, incr=0.25, decr=0.5)
            print '\n \nTRAIN PP'
            rankedPop, top_mse, avg_mse, top_per, avg_per = rankPop(newpopW, pop, verbose=NN.pop_size)
        all_results['train_mses_top'].append(top_mse)
        all_results['train_mses_avg'].append(avg_mse)
        all_results['train_percents_top'].append(top_per)
        all_results['train_percents_avg'].append(avg_per)
    test_mse, test_per = testFittestInd(rankedPop)
    all_results['test_mse'] = test_mse
    all_results['test_percent'] = test_per
    return all_results
예제 #3
0
def runTrial(iters):
    """
    Fresh population of NN individuals are evalutated, paired with 
    their fitness scores and ordered by fitness in descending order (fittest first)
    """
    pop = createPop()
    pairedPop = pairPop(pop, verbose=False)
    rankedPop = sorted(pairedPop, key=itemgetter(-1), reverse=True)
    all_results = {
        'train_mses_top': [],
        'train_mses_avg': [],
        'train_percents_avg': [],
        'train_percents_top': [],
        'test_mse': 0,
        'test_percent': 0
    }
    for iters in range(iters):
        # raw_input('==============NEXT==============')
        if not iters % 1:
            print 'Iteration'.rjust(120), iters
        newpopW = evolveNewPop(rankedPop)
        print '\n \nEVOLVE NEW POP'
        rankedPop, top_mse, avg_mse, top_per, avg_per = rankPop(newpopW,
                                                                pop,
                                                                verbose=False)
        print top_per
        all_results['train_mses_top'].append(top_mse)
        all_results['train_mses_avg'].append(avg_mse)
        all_results['train_percents_top'].append(top_per)
        all_results['train_percents_avg'].append(avg_per)
    test_mse, test_per = testFittestInd(rankedPop)
    all_results['test_mse'] = test_mse
    all_results['test_percent'] = test_per
    return all_results
예제 #4
0
	def setUp(self):
		self.pop = createPop()	
		self.pairedPop = pairPop(self.pop)
		self.rankedPop = sorted(self.pairedPop, key=itemgetter(-1), reverse=True) 
		self.rankedWeights = [x[0] for x in self.rankedPop]
		self.fitnessScores = [x[-1] for x in self.rankedPop]
		self.ch1, self.ch2 = selectTwoIndividuals(self.fitnessScores, self.rankedWeights)
예제 #5
0
def runTrial():
    """
    Fresh population of NN individuals are evalutated, paired with 
    their fitness scores and ordered by fitness in descending order (fittest first)
    """
    pop = createPop()
    pairedPop = pairPop(pop)
    rankedPop = sorted(pairedPop, key=itemgetter(-1), reverse=True) 
    all_results = {
        'train_mses_top' : [],
        'train_mses_avg' : [],
        'train_percents_avg' : [],
        'train_percents_top' : [],
        'test_mse' : 0,
        'test_percent' : 0
    }
    for iters in range(max_iterations):
        if not iters % 1:
            print 'Iteration'.rjust(150), iters
        newpopW = evolveNewPop(rankedPop)
        rankedPop, top_mse, avg_mse, top_per, avg_per = rankPop(newpopW, pop)
        all_results['train_mses_top'].append(top_mse)
        all_results['train_mses_avg'].append(avg_mse)
        all_results['train_percents_top'].append(top_per)
        all_results['train_percents_avg'].append(avg_per)
    test_mse, test_per = testFittestInd(rankedPop)
    all_results['test_mse'] = test_mse
    all_results['test_percent'] = test_per
    return all_results
예제 #6
0
 def setUp(self):
     self.pop = createPop()
     rand_individual = self.pop[random.randint(0, len(self.pop))]
     self.ch1 = [rand_individual.wi, rand_individual.wo]
     rand_individual = self.pop[random.randint(0, len(self.pop))]
     self.ch2 = [rand_individual.wi, rand_individual.wo]
     self.o1, self.o2 = crossover(self.ch1, self.ch2, NN)
	def setUp(self):
		self.pop = createPop()
		paired = pairPop(self.pop, verbose=False)
		ranked = sorted(paired, key=itemgetter(-1), reverse=True)
		self.newpopW = evolveNewPop(ranked)
		for i in range(len(self.pop)):
			self.pop[i].assignWeights(self.newpopW[i])
예제 #8
0
	def setUp(self):
		self.pop = createPop()
		self.pairedPop = pairPop(self.pop)
		self.rankedPop = sorted(self.pairedPop, key=itemgetter(-1), reverse=True) 
		self.rankedWeights = [x[0] for x in self.rankedPop]
		self.fitnessScores = [x[-1] for x in self.rankedPop]
		self.newpopW = evolveNewPop(self.rankedPop)
예제 #9
0
	def setUp(self):
		self.pop = createPop()
		self.pairedPop = pairPop(self.pop)
		self.rankedPop = sorted(self.pairedPop, key=itemgetter(-1), reverse=True) 
		self.rankedWeights = [x[0] for x in self.rankedPop]
		self.fitnessScores = [x[-1] for x in self.rankedPop]
		self.newpopW = evolveNewPop(self.rankedPop)
	def setUp(self):
		self.pop = createPop()
		paired = pairPop(self.pop, verbose=False)
		ranked = sorted(paired, key=itemgetter(-1), reverse=True)
		self.newpopW = evolveNewPop(ranked)
		for i in range(len(self.pop)):
			self.pop[i].assignWeights(self.newpopW[i])
예제 #11
0
	def setUp(self):
		self.pop = createPop()	
		self.pairedPop = pairPop(self.pop)
		self.rankedPop = sorted(self.pairedPop, key=itemgetter(-1), reverse=True) 
		self.rankedWeights = [x[0] for x in self.rankedPop]
		self.fitnessScores = [x[-1] for x in self.rankedPop]
		self.ch1, self.ch2 = selectTwoIndividuals(self.fitnessScores, self.rankedWeights)
	def setUp(self):
		self.pop = createPop()
		self.pairedPop = pairPop(self.pop)
		self.rankedPop = sorted(self.pairedPop, key=itemgetter(-1), reverse=True) 
		self.rankedWeights = [x[0] for x in self.rankedPop]
		self.fitnessScores = [x[-1] for x in self.rankedPop]
		self.copy = array(self.fitnessScores).copy()
		self.index = roulette(self.fitnessScores)
	def setUp(self):
		self.pop = createPop()
		self.pairedPop = pairPop(self.pop)
		self.rankedPop = sorted(self.pairedPop, key=itemgetter(-1), reverse=True) 
		self.rankedWeights = [x[0] for x in self.rankedPop]
		self.fitnessScores = [x[-1] for x in self.rankedPop]
		self.copy = array(self.fitnessScores).copy()
		self.index = roulette(self.fitnessScores)
예제 #14
0
def main ():
  """
  Fresh population of NN individuals are evalutated, paired with 
  their fitness scores and ordered by fitness in descending order (fittest first)
  """
  # Rank first random population
  pop = createPop()
  pairedPop = pairPop(pop)
  # ordered by fitness in descending order
  rankedPop = sorted(pairedPop, key=itemgetter(-1), reverse=True) 
  # tst.correctlyranked(rankedPop)
  # Keep iterating new pops until max_iterations
  iters = 0
  tops, avgs = [], []
  while iters != max_iterations:
    if iters%1 == 0:
      print 'Iteration'.rjust(150), iters
    newpopW = evolveNewPop(rankedPop)
    rankedPop, toperr, avgerr = rankPop(newpopW,pop)
    tops.append(toperr)
    avgs.append(avgerr)
    iters+=1
  
  # test a NN with the fittest weights
  tester = NN ()
  fittestWeights = [ x[0] for x in rankedPop ]
  tester.assignWeights(fittestWeights, 0)
  results, targets = tester.test(testpat)
  x = np.arange(0,150)
  title2 = 'Test after '+str(iters)+' iterations'
  plt.title(title2)
  plt.ylabel('Node output')
  plt.xlabel('Instances')
  plt.plot(results, 'xr', linewidth=1.5, label='Results')
  plt.plot(targets, 's', color='black', linewidth=3, label='Targets')
  plt.legend(loc='lower right')

  plt.figure(2)
  plt.subplot(121)
  plt.title('Top individual error evolution')
  plt.ylabel('Inverse error')
  plt.xlabel('Iterations')
  plt.plot( tops, '-g', linewidth=1)
  plt.subplot(122)
  plt.plot( avgs, '-g', linewidth=1)
  plt.title('Population average error evolution')
  plt.ylabel('Inverse error')
  plt.xlabel('Iterations')
  
  plt.show()
  
  print 'max_iterations',max_iterations,'\tpop_size', \
      pop_size,'pop_size*0.15', \
      int(pop_size*0.15),'\tmutation_rate', \
      NN.mutation_rate,'crossover_rate', \
      NN.crossover_rate,'ni, nh, no', NN.ni, NN.nh, NN.no
예제 #15
0
def main():
    """
    Fresh population of NN individuals are evalutated, paired with 
    their fitness scores and ordered by fitness in descending order (fittest first)
    """
    # Rank first random population
    pop = createPop()
    pairedPop = pairPop(pop)
    # ordered by fitness in descending order
    rankedPop = sorted(pairedPop, key=itemgetter(-1), reverse=True)
    # tst.correctlyranked(rankedPop)
    # Keep iterating new pops until max_iterations
    iters = 0
    tops, avgs = [], []
    while iters != max_iterations:
        if iters % 1 == 0:
            print 'Iteration'.rjust(150), iters
        newpopW = evolveNewPop(rankedPop)
        rankedPop, toperr, avgerr = rankPop(newpopW, pop)
        tops.append(toperr)
        avgs.append(avgerr)
        iters += 1

    # test a NN with the fittest weights
    tester = NN()
    fittestWeights = rankedPop[0][0]
    tester.assignWeights(fittestWeights)
    results, targets = tester.test(testpat)
    title2 = 'Test after ' + str(iters) + ' iterations'
    plt.title(title2)
    plt.ylabel('Node output')
    plt.xlabel('Instances')
    plt.plot(results, 'xr', linewidth=1.5, label='Results')
    plt.plot(targets, 's', color='black', linewidth=3, label='Targets')
    plt.legend(loc='lower right')

    plt.figure(2)
    plt.subplot(121)
    plt.title('Top individual error evolution')
    plt.ylabel('Inverse error')
    plt.xlabel('Iterations')
    plt.plot(tops, '-g', linewidth=1)
    plt.subplot(122)
    plt.plot(avgs, '-g', linewidth=1)
    plt.title('Population average error evolution')
    plt.ylabel('Inverse error')
    plt.xlabel('Iterations')

    plt.show()

    print 'max_iterations',max_iterations,'\tpop_size', \
        NN.pop_size,'pop_size*0.15', \
        int(NN.pop_size*0.15),'\tmutation_rate', \
        NN.mutation_rate,'crossover_rate', \
        NN.crossover_rate,'ni, nh, no', NN.ni, NN.nh, NN.no
예제 #16
0
 def setUp(self):
     self.pop = createPop()
예제 #17
0
 def setUp(self):
     self.pop = createPop()
     self.pairedPop = pairPop(self.pop)
예제 #18
0
	def setUp(self):
		self.pop = createPop()
예제 #19
0
	def setUp(self):
		self.pop = createPop()
		pairedPop = pairPop(self.pop)
		rankedPop = sorted(pairedPop, key=itemgetter(-1), reverse=True) 
		self.newpopW = evolveNewPop(rankedPop)
	def setUp(self):
		self.pop = createPop()
		self.inv_err, self.perc_err = self.pop[0].sumErrors()
예제 #21
0
	def setUp(self):
		self.pop = createPop()
		self.pairedPop = pairPop(self.pop)
 def setUp(self):
     self.pop = createPop()
     self.inv_err, self.perc_err = self.pop[0].sumErrors()