예제 #1
0
파일: EA.py 프로젝트: ziluke/AI
 def iteration(self):
     pop = self.__pop.getPop()
     i1 = random.randint(0, len(pop) - 1)
     i2 = random.randint(0, len(pop) - 1)
     if i1 != i2:
         c = Individual.crossover(pop[i1], pop[i2])
         c.mutate(self.__prob)
         f1 = pop[i1].fitness()
         f2 = pop[i2].fitness()
         fc = c.fitness()
         if (f1 > f2) and (f1 > fc):
             pop[i1] = c
         if (f2 > f1) and (f2 > fc):
             pop[i2] = c
     self.__pop.setPop(pop)
예제 #2
0
 def iteration(self):
     """
     an iteration
     pop: the current population
     pM: the probability the mutation to occure
     vmin: the minimum possible value
     vmax: the maximum possible value
     """
     i1 = self.__population.selection()
     i2 = self.__population.selection()
     if i1 != i2:
         child = Individual.crossover(i1, i2)
         child.mutate(self.__mutationProbability)
         self.__population.getPopulation().append(child)
         self.__population.getPopulation().sort(reverse=True)
         self.__population.getPopulation().pop(0)