Added Default for gene impl and setter example in Easy GA

This commit is contained in:
danielwilczak101
2020-10-15 01:46:13 -04:00
parent e96d392cf9
commit ec1b67fc00
3 changed files with 20 additions and 17 deletions

View File

@ -27,7 +27,7 @@ class GA:
self.chromosome_length = 10
self.population_size = 10
self.chromosome_impl = None
self.gene_impl = None
self.gene_impl = lambda: random.randint(1, 10)
self.population = None
self.target_fitness_type = 'maximum'
self.update_fitness = True
@ -136,3 +136,14 @@ class GA:
return sorted(chromosome_set, # list to be sorted
key = lambda chromosome: chromosome.get_fitness(), # by fitness
reverse = True) # from highest to lowest fitness
# Example of how the setter error checking will look like
@property
def chromosome_length(self):
return self._chromosome_length
@chromosome_length.setter
def chromosome_length(self, value_input):
if(value_input == 0):
raise ValueError("Sorry your chromosome length must be greater then 0")
self._chromosome_length = value_input

View File

@ -3,19 +3,10 @@ import EasyGA
# Create the Genetic algorithm
ga = EasyGA.GA()
ga.population_size = 25
ga.generation_goal = 100
ga.gene_impl = lambda: random.randint(1, 10)
ga.selection_probability = 0.5
ga.fitness_function_impl = EasyGA.Fitness_Examples.near_5
ga.parent_selection_impl = EasyGA.Parent_Selection.Roulette.stochastic_selection
ga.crossover_population_impl = EasyGA.Crossover_Methods.Population.sequential_selection
ga.crossover_individual_impl = EasyGA.Crossover_Methods.Individual.Arithmetic.int_random
ga.survivor_selection_impl = EasyGA.Survivor_Selection.fill_in_best
ga.chromosome_length = 0
ga.evolve()
ga.set_all_fitness()
ga.population.sort_by_best_fitness(ga)
print(f"Current Generation: {ga.current_generation}")
ga.population.print_all()

View File

@ -5,6 +5,7 @@ import EasyGA
# python3 -m pytest
def test_chromosome_length():
for i in range(0,100):
ga = EasyGA.GA()
ga.chromosome_length = 100
ga.evolve()