def selection(population, iteration, breakPoint=50, k=3): shape = population.individuals.shape[0] new_population = Population(None) new_population.individuals = np.empty(shape=shape, dtype=object) for i in range(shape): new_population.individuals[i] = roulette(population) if ( iteration < breakPoint) else tournament(population) return new_population
def crossover(population, crossover_ratio=0.70): shape = population.individuals.shape[0] newPopulation = Population(None) newPopulation.individuals = np.empty(shape=shape, dtype=object) for i in range(shape): newPopulation.individuals[i] = one_point_crossover( population.individuals[i], population.individuals[(i + 1) % (shape - 1)]) return newPopulation