Added files for all the main classes inside of EasyGA
This commit is contained in:
@ -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
22
src/chromosome.py
Normal 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
31
src/defaults.py
Normal 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
25
src/gene.py
Normal 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
8
src/population.py
Normal 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)
|
||||
Reference in New Issue
Block a user