From bd76e967ffbcfbea23e633bde8dae148ef485bd0 Mon Sep 17 00:00:00 2001 From: danielwilczak101 <44122838+danielwilczak101@users.noreply.github.com> Date: Tue, 29 Sep 2020 20:52:06 -0400 Subject: [PATCH] Added fitness function and changed evolve function --- .DS_Store | Bin 0 -> 6148 bytes src/EasyGA.py | 19 +++++++++++------- .../default_fitness_example.py | 2 ++ src/initialization/__init__.py | 5 +++-- src/run_testing.py | 2 +- 5 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 .DS_Store create mode 100644 src/fitness_function/default_fitness_example.py diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e09bcec82ba35e0c9ae5fd34cc730e237f24f56c GIT binary patch literal 6148 zcmeHK!EVz)5S>jzyH1730jWLug2bUhsag>sgk;k65D5^%2o8W+yN;+O*BiwSX$e8T z@DcDwd;uTA2f*9iNkx)!=mnu_N1A=J<2UR0?Z)dRBGDZuJ47ual5mYR56vZ}uWMhi z8fVsk!i@2ZLOP&(RMOcB+a>--1@zo)&=cy@K4$LE`78UGI*v0HgQ1tlL-^fa#t;#C z^a2%+sYg%EoS#y%SRpo-DkK#&z}gto5Nl*e=S%!AOZ+oiZ)q^rhxQkZc2$CCVB6p8?9R6RX{XahynBB( z^W^58ok#tn)ANthPqWWo@hC8XKaa6njC1&gfJOKaj`B?9?~$3a=PZX#0jGdd;K~Z{ zi$rc*xzZIl1)KucT><@m@ZlN*#>%33b)Ydv0AK@YV~F*~qOS271IEfCuE2yX1=>=< zM+{-hk@uMwFjf|AISD>|2)?u66N)f*$N0XXlL#!j)+yi=SX7{HyDh!{AN>9NzgXmY zP64ODwNgMddSS1NN8-J8<>B;R>%))W+BC1Scu|7DY{lT}t#}J=40&G%z<{x`hz!hq O2pAb$;}rO(3j79Iz<=fd literal 0 HcmV?d00001 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()