Rewrote data_list to __iter__
This commit is contained in:
@ -71,7 +71,7 @@ class Crossover_Methods:
|
|||||||
|
|
||||||
return ga.make_chromosome([ # Make a new chromosome
|
return ga.make_chromosome([ # Make a new chromosome
|
||||||
ga.make_gene(random.randint(*sorted([data_1, data_2]))) # by randomly selecting integer genes between
|
ga.make_gene(random.randint(*sorted([data_1, data_2]))) # by randomly selecting integer genes between
|
||||||
for data_1, data_2 in zip(parent_1.data_list(), parent_2.data_list())]) # each parents' genes
|
for data_1, data_2 in zip(iter(parent_1), iter(parent_2))]) # each parents' genes
|
||||||
|
|
||||||
|
|
||||||
def int_weighted(ga, parent_1, parent_2):
|
def int_weighted(ga, parent_1, parent_2):
|
||||||
@ -84,7 +84,7 @@ class Crossover_Methods:
|
|||||||
ga.make_gene(int( # filled with new integer genes
|
ga.make_gene(int( # filled with new integer genes
|
||||||
weight*data_1+(1-weight)*data_2 # with weight% from gene 1 and
|
weight*data_1+(1-weight)*data_2 # with weight% from gene 1 and
|
||||||
)) # (100-weight)% from gene 2
|
)) # (100-weight)% from gene 2
|
||||||
for data_1, data_2 in zip(parent_1.data_list(), parent_2.data_list())]) # from each parents' genes
|
for data_1, data_2 in zip(iter(parent_1), iter(parent_2))]) # from each parents' genes
|
||||||
|
|
||||||
|
|
||||||
def float_random(ga, parent_one, parent_two):
|
def float_random(ga, parent_one, parent_two):
|
||||||
@ -92,7 +92,7 @@ class Crossover_Methods:
|
|||||||
|
|
||||||
return ga.make_chromosome([ # Make a new chromosome
|
return ga.make_chromosome([ # Make a new chromosome
|
||||||
ga.make_gene(random.uniform([data_1, data_2])) # by randomly selecting integer genes between
|
ga.make_gene(random.uniform([data_1, data_2])) # by randomly selecting integer genes between
|
||||||
for data_1, data_2 in zip(parent_1.data_list(), parent_2.data_list())]) # from each parents' genes
|
for data_1, data_2 in zip(iter(parent_1), iter(parent_2))]) # from each parents' genes
|
||||||
|
|
||||||
|
|
||||||
def float_weighted(ga, parent_one, parent_two):
|
def float_weighted(ga, parent_one, parent_two):
|
||||||
@ -105,4 +105,4 @@ class Crossover_Methods:
|
|||||||
ga.make_gene( # filled with new float genes
|
ga.make_gene( # filled with new float genes
|
||||||
weight*data_1+(1-weight)*data_2 # with weight% from gene 1 and
|
weight*data_1+(1-weight)*data_2 # with weight% from gene 1 and
|
||||||
) # (100-weight)% from gene 2
|
) # (100-weight)% from gene 2
|
||||||
for data_1, data_2 in zip(parent_1.data_list(), parent_2.data_list())]) # from each parents' genes
|
for data_1, data_2 in zip(iter(parent_1), iter(parent_2))]) # from each parents' genes
|
||||||
|
|||||||
@ -53,9 +53,11 @@ class Chromosome:
|
|||||||
"""Set the fitness value of the chromosome"""
|
"""Set the fitness value of the chromosome"""
|
||||||
self.fitness = fitness
|
self.fitness = fitness
|
||||||
|
|
||||||
def data_list(self):
|
|
||||||
"""Returns a list of the gene values"""
|
def __iter__(self):
|
||||||
return [gene.value for gene in self.gene_list]
|
"""Returns an iterable of the gene values"""
|
||||||
|
for gene in self.gene_list:
|
||||||
|
yeild gene.value
|
||||||
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
|||||||
@ -149,9 +149,10 @@ class Population:
|
|||||||
self.fitness = fitness
|
self.fitness = fitness
|
||||||
|
|
||||||
|
|
||||||
def data_list(self):
|
def __iter__(self):
|
||||||
"""Returns a list of chromosome data lists"""
|
"""Returns an iterable of chromosome iterables"""
|
||||||
return [chromosome.data_list() for chromosome in self.chromosome_list]
|
for chromosome in self.chromosome_list:
|
||||||
|
yield iter(chromosome)
|
||||||
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user