Fixed bugs involving None types
This commit is contained in:
@ -243,17 +243,15 @@ class Crossover_Methods:
|
|||||||
for _ in range(len(gene_list_2)):
|
for _ in range(len(gene_list_2)):
|
||||||
|
|
||||||
# Remove it if it is already used
|
# Remove it if it is already used
|
||||||
for i in range(len(gene_list_1)):
|
if gene_list_2[-1] in gene_list_1:
|
||||||
if gene_list_1[i] == gene_list_2[-1]:
|
gene_list_2.pop(-1)
|
||||||
gene_list_2.pop(-1)
|
|
||||||
break
|
|
||||||
|
|
||||||
# Add it if it has not been used
|
# Add it if it has not been used
|
||||||
else:
|
else:
|
||||||
gene_list_1[input_index] = gene_list_2.pop(-1)
|
|
||||||
input_index += 1
|
|
||||||
if input_index == index_1:
|
if input_index == index_1:
|
||||||
input_index = index_2
|
input_index = index_2
|
||||||
|
gene_list_1[input_index] = gene_list_2.pop(-1)
|
||||||
|
input_index += 1
|
||||||
|
|
||||||
return gene_list_1
|
return gene_list_1
|
||||||
|
|
||||||
@ -296,16 +294,14 @@ class Crossover_Methods:
|
|||||||
for _ in range(len(gene_list_2)):
|
for _ in range(len(gene_list_2)):
|
||||||
|
|
||||||
# Remove it if it is already used
|
# Remove it if it is already used
|
||||||
for i in range(len(gene_list_1)):
|
if gene_list_2[-1] in gene_list_1:
|
||||||
if gene_list_1[i] == gene_list_2[-1]:
|
gene_list_2.pop(-1)
|
||||||
gene_list_2.pop(-1)
|
|
||||||
break
|
|
||||||
|
|
||||||
# Add it if it has not been used
|
# Add it if it has not been used
|
||||||
else:
|
else:
|
||||||
gene_list_1[input_index] = gene_list_2.pop(-1)
|
|
||||||
input_index += 1
|
|
||||||
if input_index == index_1:
|
if input_index == index_1:
|
||||||
input_index = index_2
|
input_index = index_2
|
||||||
|
gene_list_1[input_index] = gene_list_2.pop(-1)
|
||||||
|
input_index += 1
|
||||||
|
|
||||||
return gene_list_1
|
return gene_list_1
|
||||||
|
|||||||
@ -159,7 +159,7 @@ class Mutation_Methods:
|
|||||||
|
|
||||||
# Indexes of genes to swap
|
# Indexes of genes to swap
|
||||||
index_one = index
|
index_one = index
|
||||||
index_two = random.randrange(index_one)
|
index_two = random.randrange(len(chromosome))
|
||||||
|
|
||||||
# Swap genes
|
# Swap genes
|
||||||
chromosome[index_one], chromosome[index_two] = chromosome[index_two], chromosome[index_one]
|
chromosome[index_one], chromosome[index_two] = chromosome[index_two], chromosome[index_one]
|
||||||
|
|||||||
@ -7,9 +7,14 @@ class Gene:
|
|||||||
self.value = deepcopy(value)
|
self.value = deepcopy(value)
|
||||||
|
|
||||||
|
|
||||||
def __eq__(self, gene):
|
def __eq__(self, other_gene):
|
||||||
"""Comparing two genes by their value."""
|
"""Comparing two genes by their value.
|
||||||
return self.value == gene.value
|
Returns False if either gene is None."""
|
||||||
|
|
||||||
|
if (self is None) or (other_gene is None):
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return self.value == other_gene.value
|
||||||
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user