Added save_data attribute to be able to turn off saving the population to the database.

This commit is contained in:
danielwilczak
2021-05-04 23:39:37 -04:00
parent f54c188136
commit b4de63eb48
3 changed files with 32 additions and 14 deletions

View File

@ -84,6 +84,7 @@ class GA(Attributes):
self.sort_by_best_fitness()
# Save the population to the database
if self.save_data == True:
self.save_population()
# Adapt the ga if the generation times the adapt rate

View File

@ -99,6 +99,7 @@ class Attributes:
population = None,
target_fitness_type = 'max',
update_fitness = False,
save_data = True,
parent_ratio = 0.10,
selection_probability = 0.50,
@ -151,6 +152,7 @@ class Attributes:
self.population = population
self.target_fitness_type = target_fitness_type
self.update_fitness = update_fitness
self.save_data = save_data
# Selection variables
self.parent_ratio = parent_ratio

View File

@ -1,18 +1,33 @@
import matplotlib.pyplot as plt
import EasyGA
import random
for _ in range(2):
# Create a new genetic algorithm each.
ga = EasyGA.GA()
ga.evolve()
ga.print_population()
# Create the Genetic algorithm
ga = EasyGA.GA()
# Graph the average of the two runs
plt.subplot(1, 2, 1)
ga.graph.highest_value_chromosome("average")
ga.save_data = False
plt.subplot(1, 2, 1)
ga.graph.highest_value_chromosome("all")
def is_it_5(chromosome):
"""A very simple case test function - If the chromosomes gene value is a 5 add one
to the chromosomes overall fitness value."""
# Overall fitness value
fitness = 0
# For each gene in the chromosome
for gene in chromosome.gene_list:
# Check if its value = 5
if(gene.value == 5):
# If its value is 5 then add one to
# the overal fitness of the chromosome.
fitness += 1
ga.graph.show()
return fitness
ga.fitness_function_impl = is_it_5
# Create random genes from 0 to 10
ga.gene_impl = lambda: random.randint(0, 10)
ga.evolve()
# Print your default genetic algorithm
ga.print_generation()
ga.print_population()