Added files for all the main classes inside of EasyGA
This commit is contained in:
@ -1,65 +1,6 @@
|
|||||||
# Defult packages for GA functionality
|
# Defult packages for GA functionality
|
||||||
from initialization.random_initialization import random_initialization
|
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:
|
class GA:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -85,33 +26,3 @@ class GA:
|
|||||||
def evolve(self):
|
def evolve(self):
|
||||||
# Evolve will run all the functions
|
# Evolve will run all the functions
|
||||||
initialize()
|
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