예제 #1
0
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()
예제 #2
0
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]