コード例 #1
0
    # Create parent population by keeping top X% (top_selection)
    top_num = round(top_selection*N_pop)
    # parent_indices = [i for i,e in enumerate(fitness_ordered_ind) if e <= top_num]
    parent_indices = fitness_ordered_ind[:top_num]
    parent_population = population[parent_indices, :]

    num_children = len(population) - len(parent_population)
    children_pop = np.zeros(shape=(num_children,player_char_num + team_char_num + schedule_char_num))
    # Create Children
    for c in range(num_children):
        parent1 = parent_population[np.random.randint(len(parent_population), size=1)]
        parent2 = parent_population[np.random.randint(len(parent_population), size=1)]
        children_pop[c,:] = GA_Funs.get_child(parent1, parent2)
        # Mutate Children
        children_pop[c,:] = GA_Funs.mutate_individual(children_pop[c,:], mutation_p, lower_bounds, upper_bounds)

    # Combine children and parents
    population = np.vstack((parent_population, children_pop))

    # Recheck Fitness
    for n in range(N_pop):
        fitness[n] = GA_Funs.get_fitness(population[n,], schedule_data,
                                         team_data1, team_data2, team_cols1, team_cols2,
                                         player_data1, player_data2, player_cols1, player_cols2, health_data)

    # Save max fitness
    fitness_plot_vals[g] = max(fitness)
    print(max(fitness))

    # Calculate timing
コード例 #2
0
    parent_indices = fitness_ordered_ind[:top_num]
    parent_population = population[parent_indices, :]

    num_children = len(population) - len(parent_population)
    children_pop = np.zeros(shape=(num_children, player_char_num +
                                   team_char_num + schedule_char_num))
    # Create Children
    for c in range(num_children):
        parent1 = parent_population[np.random.randint(len(parent_population),
                                                      size=1)]
        parent2 = parent_population[np.random.randint(len(parent_population),
                                                      size=1)]
        children_pop[c, :] = GA_Funs.get_child(parent1, parent2)
        # Mutate Children
        children_pop[c, :] = GA_Funs.mutate_individual(children_pop[c, :],
                                                       mutation_p,
                                                       lower_bounds,
                                                       upper_bounds)

    # Combine children and parents
    population = np.vstack((parent_population, children_pop))

    # Recheck Fitness
    for n in range(N_pop):
        fitness[n] = GA_Funs.get_fitness(population[n, ], schedule_data,
                                         team_data1, team_data2, team_cols1,
                                         team_cols2, player_data1,
                                         player_data2, player_cols1,
                                         player_cols2, health_data)

    # Save max fitness
    fitness_plot_vals[g] = max(fitness)