Added files for all the main classes inside of EasyGA

This commit is contained in:
danielwilczak101
2020-09-21 23:39:15 -04:00
parent 1af16cd0d3
commit 4c0090a9ed
5 changed files with 86 additions and 89 deletions

View File

@ -1,65 +1,6 @@
# Defult packages for GA functionality
from initialization.random_initialization import random_initialization
def check_gene(value):
#Check to make sure the gene is not empty
assert value != "" , "Gene can not be empty"
return value
## Your main structure
class gene:
# Defults
# fitness = Anything, value = Anything
def __init__(self, value):
self.fitness = None
self.value = check_gene(value)
def set_fitness(self,fitness):
self.fitness = fitness
def get_fitness(self):
return self.fitness
def get_value(self):
return self.value
def print_value(self):
print(self.value)
def print_fitness(self):
print(self.fitness)
class chromosome:
# Defults
# fitness = Anything, genes = [gene,gene,gene,etc]
def __init__(self):
self.fitness = None
self.genes = []
def add_gene(self,gene):
self.genes.append(gene)
def get_fitness(self):
return self.fitness
def get_chromosome(self):
return self.genes
def print_chromosome(self):
for i in range(len(self.genes)):
# Print the gene one by one.
if(i == len(self.genes) - 1):
print(f"[{self.genes[i].get_value()}]")
else:
print(f"[{self.genes[i].get_value()}],", end = '')
class population:
# population = [chromosome,chromosome,etc]
def __init__(self):
self.chromosomes = []
def add_chromosome(self,chromosome):
self.chromosomes.append(chromosome)
class GA:
def __init__(self):
@ -85,33 +26,3 @@ class GA:
def evolve(self):
# Evolve will run all the functions
initialize()
class defaults(self):
def __init__(self):
self.generations = 3
self.chromosome_length = 4
self.population_size = 5
self.mutation_rate = 0.03
def default_gene_function():
return random.randint(1, 100)
def default_fitness_function():
pass
def default_initialize_functio():
return random_initialization()
def default_selection_function():
return tournament_selection()
def default_crossover_function():
return fast_single_point_crossover()
def default_mutations_function():
return per_gene_mutation()
def default_termination_function(generations):
return generation_termination(generations)

22
src/chromosome.py Normal file
View File

@ -0,0 +1,22 @@
class chromosome:
# fitness = Empty, genes = [gene,gene,gene,etc]
def __init__(self):
self.fitness = None
self.genes = []
def add_gene(self,gene):
self.genes.append(gene)
def get_fitness(self):
return self.fitness
def get_chromosome(self):
return self.genes
def print_chromosome(self):
for i in range(len(self.genes)):
# Print the gene one by one.
if(i == len(self.genes) - 1):
print(f"[{self.genes[i].get_value()}]")
else:
print(f"[{self.genes[i].get_value()}],", end = '')

31
src/defaults.py Normal file
View File

@ -0,0 +1,31 @@
class defaults(self):
# Defult values so that the user doesnt have to explicidly
# state every feature of the genetic algorithm.
def __init__(self):
self.generations = 3
self.chromosome_length = 4
self.population_size = 5
self.mutation_rate = 0.03
def default_gene_function():
return random.randint(1, 100)
def default_fitness_function():
pass
def default_initialize_functio():
return random_initialization()
def default_selection_function():
return tournament_selection()
def default_crossover_function():
return fast_single_point_crossover()
def default_mutations_function():
return per_gene_mutation()
def default_termination_function(generations):
return generation_termination(generations)

25
src/gene.py Normal file
View File

@ -0,0 +1,25 @@
def check_gene(value):
#Check to make sure the gene is not empty
assert value != "" , "Gene can not be empty"
return value
class gene:
# fitness = Empty, value = Define by gene function
def __init__(self, value):
self.fitness = None
self.value = check_gene(value)
def set_fitness(self,fitness):
self.fitness = fitness
def get_fitness(self):
return self.fitness
def get_value(self):
return self.value
def print_value(self):
print(self.value)
def print_fitness(self):
print(self.fitness)

8
src/population.py Normal file
View File

@ -0,0 +1,8 @@
class population:
# population = [chromosome,chromosome,etc]
def __init__(self):
self.chromosomes = []
self.fitness = None
def add_chromosome(self,chromosome):
self.chromosomes.append(chromosome)