def main(): population = create_initial_population() population = Evolver.sort_by_fitness(population) print('Initial population:') print_population(population) fitness_evolution = [(0, fitnesses(population))] try: for n in range(iteration): population = Evolver.evolve(population) print(n, fitnesses(population), end=" \r") if (n + 1) % (iteration // 4) == 0: fitness_evolution += [(n + 1, fitnesses(population))] except KeyboardInterrupt: pass finally: print('Final population:') print_population(population) plot_fitness_distributions(fitness_evolution) plt.show()
def test_sort_by_fitness_gives_entities_descending_order_by_fitness(): entity_1 = Mock(fitness=1) entity_2 = Mock(fitness=2) entity_3 = Mock(fitness=3) population = Evolver.sort_by_fitness([entity_1, entity_3, entity_2]) assert population == [entity_3, entity_2, entity_1] assert [entity.fitness for entity in population] == [3, 2, 1]