Skip to content

Instantly share code, notes, and snippets.

@ahmedfgad
Created June 27, 2020 00:26
Show Gist options
  • Save ahmedfgad/e2f55f1b3c2030f6944698b31f724948 to your computer and use it in GitHub Desktop.
Save ahmedfgad/e2f55f1b3c2030f6944698b31f724948 to your computer and use it in GitHub Desktop.
import pygad
import pygad.nn
import pygad.gann
# Preparing the NumPy array of the inputs.
data_inputs = numpy.array([[0, 1],
[0, 0]])
# Preparing the NumPy array of the outputs.
data_outputs = numpy.array([1,
0])
def fitness_func(solution, sol_idx):
global GANN_instance, data_inputs, data_outputs
predictions = pygad.nn.predict(last_layer=GANN_instance.population_networks[sol_idx],
data_inputs=data_inputs)
correct_predictions = numpy.where(predictions == data_outputs)[0].size
solution_fitness = (correct_predictions/data_outputs.size)*100
return solution_fitness
def callback_generation(ga_instance):
global GANN_instance, last_fitness
population_matrices = pygad.gann.population_as_matrices(population_networks=GANN_instance.population_networks,
population_vectors=ga_instance.population)
GANN_instance.update_population_trained_weights(population_trained_weights=population_matrices)
print("Generation = {generation}".format(generation=ga_instance.generations_completed))
print("Fitness = {fitness}".format(fitness=ga_instance.best_solution()[1]))
print("Change = {change}".format(change=ga_instance.best_solution()[1] - last_fitness))
last_fitness = 0
def prepare_GA(GANN_instance):
population_vectors = pygad.gann.population_as_vectors(population_networks=GANN_instance.population_networks)
initial_population = population_vectors.copy()
num_parents_mating = 4
num_generations = 500
mutation_percent_genes = 5
keep_parents = 1
ga_instance = pygad.GA(num_generations=num_generations,
num_parents_mating=num_parents_mating,
initial_population=initial_population,
fitness_func=fitness_func,
mutation_percent_genes=mutation_percent_genes,
keep_parents=keep_parents,
callback_generation=callback_generation)
return ga_instance
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment