Alot of name changes and file name changes
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
# FROM (. means local) file_name IMPORT function_name
|
||||
from .examples import initialization_examples
|
||||
from .population_structure.population import population
|
||||
from .chromosome_structure.chromosome import chromosome
|
||||
from .gene_structure.gene import gene
|
||||
from .methods import Initialization_methods
|
||||
from .population_structure.population import Population
|
||||
from .chromosome_structure.chromosome import Chromosome
|
||||
from .gene_structure.gene import Gene
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
class chromosome:
|
||||
class Chromosome:
|
||||
|
||||
def __init__(self, genes = None):
|
||||
def __init__(self, gene_list = None):
|
||||
"""Initialize the chromosome based on input gene list, defaulted to an empty list"""
|
||||
if genes is None:
|
||||
self.genes = []
|
||||
if gene_list is None:
|
||||
self.gene_list = []
|
||||
else:
|
||||
self.genes = genes
|
||||
self.gene_list = gene_list
|
||||
# The fitness of the overal chromosome
|
||||
self.fitness = None
|
||||
# If the chromosome has been selected then the flag would switch to true
|
||||
@ -14,16 +14,16 @@ class chromosome:
|
||||
def add_gene(self, gene, index = -1):
|
||||
"""Add a gene to the chromosome at the specified index, defaulted to end of the chromosome"""
|
||||
if index == -1:
|
||||
index = len(self.genes)
|
||||
self.genes.insert(index, gene)
|
||||
index = len(self.gene_list)
|
||||
self.gene_list.insert(index, gene)
|
||||
|
||||
def remove_gene(self, index):
|
||||
"""Remove a gene from the chromosome at the specified index"""
|
||||
del self.genes[index]
|
||||
del self.gene_list[index]
|
||||
|
||||
def get_genes(self):
|
||||
"""Return all genes in the chromosome"""
|
||||
return self.genes
|
||||
return self.gene_list
|
||||
|
||||
def get_fitness(self):
|
||||
"""Return the fitness of the chromosome"""
|
||||
@ -31,11 +31,11 @@ class chromosome:
|
||||
|
||||
def set_gene(self, gene, index):
|
||||
"""Set a gene at a specific index"""
|
||||
self.genes[index] = gene
|
||||
self.gene_list[index] = gene
|
||||
|
||||
def set_genes(self, genes):
|
||||
def set_genes(self, gene_list):
|
||||
"""Set the entire gene set of the chromosome"""
|
||||
self.genes = genes
|
||||
self.gene_list = gene_list
|
||||
|
||||
def set_fitness(self, fitness):
|
||||
"""Set the fitness value of the chromosome"""
|
||||
@ -44,6 +44,6 @@ class chromosome:
|
||||
def __repr__(self):
|
||||
"""Format the repr() output for the chromosome"""
|
||||
output_str = ''
|
||||
for gene in self.genes:
|
||||
for gene in self.gene_list:
|
||||
output_str += gene.__repr__()
|
||||
return output_str
|
||||
|
||||
@ -3,7 +3,7 @@ def check_gene(value):
|
||||
assert value != "" , "Gene can not be empty"
|
||||
return value
|
||||
|
||||
class gene:
|
||||
class Gene:
|
||||
|
||||
def __init__(self, value):
|
||||
"""Initialize a gene with fitness of value None and the input value"""
|
||||
|
||||
@ -1,31 +1,31 @@
|
||||
# Import the data structure
|
||||
from .population_structure.population import population as create_population
|
||||
from .chromosome_structure.chromosome import chromosome as create_chromosome
|
||||
from .gene_structure.gene import gene as create_gene
|
||||
from .population_structure.population import Population as create_population
|
||||
from .chromosome_structure.chromosome import Chromosome as create_chromosome
|
||||
from .gene_structure.gene import Gene as create_gene
|
||||
|
||||
class initialization_examples:
|
||||
class Initialization_methods:
|
||||
"""Initialization examples that are used as defaults and examples"""
|
||||
|
||||
def random_initialization(population_size, chromosome_length, chromosome_impl, gene_impl):
|
||||
def random_initialization(ga):
|
||||
"""Takes the initialization inputs and choregraphs them to output the type of population
|
||||
with the given parameters."""
|
||||
# Create the population object
|
||||
population = create_population()
|
||||
|
||||
# Fill the population with chromosomes
|
||||
for i in range(population_size):
|
||||
for i in range(ga.population_size):
|
||||
chromosome = create_chromosome()
|
||||
#Fill the Chromosome with genes
|
||||
for j in range(chromosome_length):
|
||||
for j in range(ga.chromosome_length):
|
||||
# Using the chromosome_impl to set every index inside of the chromosome
|
||||
if chromosome_impl != None:
|
||||
if ga.chromosome_impl != None:
|
||||
# Each chromosome location is specified with its own function
|
||||
chromosome.add_gene(create_gene(chromosome_impl(j)))
|
||||
chromosome.add_gene(create_gene(ga.chromosome_impl(j)))
|
||||
# Will break if chromosome_length != len(lists) in domain
|
||||
elif gene_impl != None:
|
||||
elif ga.gene_impl != None:
|
||||
# gene_impl = [range function,lowerbound,upperbound]
|
||||
function = gene_impl[0]
|
||||
chromosome.add_gene(create_gene(function(*gene_impl[1:])))
|
||||
function = ga.gene_impl[0]
|
||||
chromosome.add_gene(create_gene(function(*ga.gene_impl[1:])))
|
||||
else:
|
||||
#Exit because either were not specified
|
||||
print("Your domain or range were not specified")
|
||||
@ -1,11 +1,11 @@
|
||||
class population:
|
||||
class Population:
|
||||
|
||||
def __init__(self, chromosomes = None):
|
||||
def __init__(self, chromosome_list = None):
|
||||
"""Intiialize the population with fitness of value None, and a set of chromosomes dependant on user-passed parameter"""
|
||||
if chromosomes is None:
|
||||
self.chromosomes = []
|
||||
if chromosome_list is None:
|
||||
self.chromosome_list = []
|
||||
else:
|
||||
self.chromosomes = chromosomes
|
||||
self.chromosome_list = chromosome_list
|
||||
self.fitness = None
|
||||
|
||||
def get_closet_fitness(self,value):
|
||||
@ -15,42 +15,42 @@ class population:
|
||||
def add_chromosome(self, chromosome, index = -1):
|
||||
"""Adds a chromosome to the population at the input index, defaulted to the end of the chromosome set"""
|
||||
if index == -1:
|
||||
index = len(self.chromosomes)
|
||||
self.chromosomes.insert(index, chromosome)
|
||||
index = len(self.chromosome_list)
|
||||
self.chromosome_list.insert(index, chromosome)
|
||||
|
||||
def remove_chromosome(self, index):
|
||||
"""removes a chromosome from the indicated index"""
|
||||
del self.chromosomes[index]
|
||||
del self.chromosome_list[index]
|
||||
|
||||
def get_all_chromosomes(self):
|
||||
"""returns all chromosomes in the population"""
|
||||
return chromosomes
|
||||
return chromosome_list
|
||||
|
||||
def get_fitness(self):
|
||||
"""returns the population's fitness"""
|
||||
return self.fitness
|
||||
|
||||
def set_all_chromosomes(self, chromosomes):
|
||||
def set_all_chromosomes(self, chromosome_list):
|
||||
"""sets the chromosome set of the population"""
|
||||
self.chromosomes = chromosomes
|
||||
self.chromosome_list = chromosome_list
|
||||
|
||||
def set_chromosome(self, chromosome, index):
|
||||
"""sets a specific chromosome at a specific index"""
|
||||
self.chromosomes[index] = chromosome
|
||||
self.chromosome_list[index] = chromosome
|
||||
|
||||
def set_fitness(self, fitness):
|
||||
"""Sets the fitness value of the population"""
|
||||
"""Sets the fitness value of the population"""
|
||||
self.fitness = fitness
|
||||
|
||||
def __repr__(self):
|
||||
"""Sets the repr() output format"""
|
||||
return ''.join([chromosome.__repr__() for chromosome in self.chromosomes])
|
||||
return ''.join([chromosome.__repr__() for chromosome in self.chromosome_list])
|
||||
|
||||
def print_all(self):
|
||||
"""Prints information about the population in the following format:"""
|
||||
"""Ex .Current population"""
|
||||
"""Chromosome 1 - [gene][gene][gene][.etc] / Chromosome fitness - """
|
||||
print("Current population:")
|
||||
for index in range(len(self.chromosomes)):
|
||||
print(f'Chromosome - {index} {self.chromosomes[index]}', end = "")
|
||||
print(f' / Fitness = {self.chromosomes[index].fitness}')
|
||||
for index in range(len(self.chromosome_list)):
|
||||
print(f'Chromosome - {index} {self.chromosome_list[index]}', end = "")
|
||||
print(f' / Fitness = {self.chromosome_list[index].fitness}')
|
||||
|
||||
Reference in New Issue
Block a user