diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..e09bcec Binary files /dev/null and b/.DS_Store differ diff --git a/src/EasyGA.py b/src/EasyGA.py index c66edf4..bd851b4 100644 --- a/src/EasyGA.py +++ b/src/EasyGA.py @@ -4,7 +4,7 @@ import random from initialization import population as create_population from initialization import chromosome as create_chromosome from initialization import gene as create_gene - +from fitness_function import default_fitness_example as default_fitness_example # Import functionality defaults from initialization import random_initialization @@ -24,13 +24,16 @@ class GA: # Defualt EastGA implimentation structure self.initialization_impl = random_initialization - self.update_fitness = True + self.fitness_funciton_impl = default_fitness_example #self.mutation_impl = PerGeneMutation(Mutation_rate) #self.selection_impl = TournamentSelection() #self.crossover_impl = FastSinglePointCrossover() #self.termination_impl = GenerationTermination(Total_generations) #self.evaluation_impl = TestEvaluation() + # If we want the fitnesses to be updated by the computer + self.update_fitness = True + def initialize_population(self): """Initialize the population""" self.population = self.initialization_impl( @@ -39,12 +42,13 @@ class GA: self.chromosome_impl, self.gene_impl) - def fitness_impl(self, chromosome): - """Returns the fitness of a chromosome""" - pass - def evolve(self): """Runs the ga until the ga is no longer active.""" + while(ga.active()) + if(self.current_generation == 0): + initialize_population() + + get_fitness(population) # run one iteration while the ga is active while self.active(): @@ -52,7 +56,8 @@ class GA: def active(self): """Returns if the ga should terminate or not""" - return self.current_generation < self.generations + return self.termination_impl.active(self) + def evolve_generation(self, number_of_generations): """Evolves the ga the specified number of generations. diff --git a/src/fitness_function/default_fitness_example.py b/src/fitness_function/default_fitness_example.py new file mode 100644 index 0000000..c85ecc4 --- /dev/null +++ b/src/fitness_function/default_fitness_example.py @@ -0,0 +1,2 @@ +def default_fitness_example(): + pass diff --git a/src/initialization/__init__.py b/src/initialization/__init__.py index 4211183..41eba81 100644 --- a/src/initialization/__init__.py +++ b/src/initialization/__init__.py @@ -1,5 +1,6 @@ # __init__.py from .random_initialization import random_initialization -from .population_structure.population import population -from .chromosome_structure.chromosome import chromosome +from .population_structure.population import population +from .chromosome_structure.chromosome import chromosome from .gene_structure.gene import gene +from .fitness_function import default_fitness_example diff --git a/src/run_testing.py b/src/run_testing.py index 5cd49a6..55dd6db 100644 --- a/src/run_testing.py +++ b/src/run_testing.py @@ -18,6 +18,6 @@ def user_gene_domain(gene_index): # If the user wants to use a domain ga.chromosome_impl = user_gene_domain -ga.initialize_population() +ga.evolve() ga.population.print_all()