def crossover(self, pcross): for i in xrange(0, self.pop_size, 2): if random() < pcross: (son1, son2) = Crossovers.single_point_crossover(self.internal_pop[i], self.internal_pop[i+1]) self.internal_pop[i] = son1 self.internal_pop[i].needs_eval = True self.internal_pop[i+1] = son2 self.internal_pop[i+1].needs_eval = True
#import Mutators import time if __name__ == "__main__": size = 100 cross_max_iters = 100000 #mut_max_iters = 1000000 pmut = 0.02 dad = BinaryString.BinaryString(size) mom = BinaryString.BinaryString(size) #print dad #print mom start = time.time() for i in xrange(1, cross_max_iters): (son1, son2) = Crossovers.single_point_crossover(dad, mom) end = time.time() print "single_point_crossover time:", ((end-start)*1000) / cross_max_iters, "ms" #print son1 #print son2 start = time.time() for i in xrange(1, cross_max_iters): (son1, son2) = Crossovers.two_point_crossover(dad, mom) end = time.time() print "two_point_crossover time:", ((end-start)*1000) / cross_max_iters, "ms" start = time.time() for i in xrange(1, cross_max_iters): (son1, son2) = Crossovers.uniform_crossover(dad, mom)