Exemple #1
0
def main():

    pop = Population(popSize=args.popSize,
                     mProb=args.mProb,
                     xProb=args.xProb,
                     tournament_size=args.tournamentSize,
                     verbose=args.verbose)

    pop.calc_fit_stats()

    # main loop
    for i in range(args.nGenerations):
        print('Generation {}'.format(i))
        # apply genetic steps
        pop.tournament_selection()
        pop.CrossOver()
        pop.Mutation
        pop.evaluate_fitnesses()

        # print statistics to console
        if i % args.print_every == 0:
            max_fitness, avg_fitness, std_fitness = pop.calc_fit_stats()
            best = pop.find_best_fit_chromosome
            best_cluster_assignment = best.cluster_assignment
            best_pupil_assignment = \
                dataHandler.derive_pupil_assignment_from_cluster_assignment(best_cluster_assignment)
            num_pupils = dataHandler.calc_numbers_of_pupils_in_classes(
                best_pupil_assignment)
            friends_violations = dataHandler.calc_num_friends_violations(
                best_pupil_assignment)
            anti_friends_violations = dataHandler.calc_num_anti_friends_violations(
                best_pupil_assignment)
            print('Generation {}/{}, Avg fitmess: {:1.3f}({:1.3f})), best fitness: {:1.3f}, \
                   num pupils: {} \
                   friends violations: {}, anti-friends violations: {}'\
                      .format(i,
                              args.nGenerations,
                              avg_fitness,
                              std_fitness,
                              max_fitness,
                              num_pupils,
                              friends_violations,
                              anti_friends_violations
                              ))

    print('Finished searching')
    best = pop.find_best_fit_chromosome
    best_cluster_assignment = best.cluster_assignment
    best_pupil_assignment = \
       dataHandler.derive_pupil_assignment_from_cluster_assignment(best_cluster_assignment)