From ec1b67fc006aa133085bedb344fa0af08065d747 Mon Sep 17 00:00:00 2001 From: danielwilczak101 <44122838+danielwilczak101@users.noreply.github.com> Date: Thu, 15 Oct 2020 01:46:13 -0400 Subject: [PATCH] Added Default for gene impl and setter example in Easy GA --- src/EasyGA.py | 13 ++++++++++++- src/run_testing.py | 13 ++----------- src/test_EasyGA.py | 11 ++++++----- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/EasyGA.py b/src/EasyGA.py index d202507..edb60f2 100644 --- a/src/EasyGA.py +++ b/src/EasyGA.py @@ -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 diff --git a/src/run_testing.py b/src/run_testing.py index d619f1b..96827e5 100644 --- a/src/run_testing.py +++ b/src/run_testing.py @@ -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() diff --git a/src/test_EasyGA.py b/src/test_EasyGA.py index 0d8bda7..dcc1586 100644 --- a/src/test_EasyGA.py +++ b/src/test_EasyGA.py @@ -5,12 +5,13 @@ import EasyGA # python3 -m pytest def test_chromosome_length(): - ga = EasyGA.GA() - ga.chromosome_length = 100 - ga.evolve() + for i in range(0,100): + ga = EasyGA.GA() + ga.chromosome_length = 100 + ga.evolve() - """ Test to see if the actual chromosome length is the same as defined.""" - assert ga.population.chromosome_list[0].size() == ga.chromosome_length + """ Test to see if the actual chromosome length is the same as defined.""" + assert ga.population.chromosome_list[0].size() == ga.chromosome_length def test_second():