From c19ef0d1be7a9c8bb5b613ed31c47cdb16ecd023 Mon Sep 17 00:00:00 2001 From: SimpleArt <71458112+SimpleArt@users.noreply.github.com> Date: Mon, 7 Dec 2020 21:07:04 -0500 Subject: [PATCH] Fixed bugs involving None types --- src/crossover/crossover_methods.py | 20 ++++++++------------ src/mutation/mutation_methods.py | 2 +- src/structure/gene.py | 11 ++++++++--- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/crossover/crossover_methods.py b/src/crossover/crossover_methods.py index 8f1fd6d..f2ed627 100644 --- a/src/crossover/crossover_methods.py +++ b/src/crossover/crossover_methods.py @@ -243,17 +243,15 @@ class Crossover_Methods: for _ in range(len(gene_list_2)): # Remove it if it is already used - for i in range(len(gene_list_1)): - if gene_list_1[i] == gene_list_2[-1]: - gene_list_2.pop(-1) - break + if gene_list_2[-1] in gene_list_1: + gene_list_2.pop(-1) # Add it if it has not been used else: - gene_list_1[input_index] = gene_list_2.pop(-1) - input_index += 1 if input_index == index_1: input_index = index_2 + gene_list_1[input_index] = gene_list_2.pop(-1) + input_index += 1 return gene_list_1 @@ -296,16 +294,14 @@ class Crossover_Methods: for _ in range(len(gene_list_2)): # Remove it if it is already used - for i in range(len(gene_list_1)): - if gene_list_1[i] == gene_list_2[-1]: - gene_list_2.pop(-1) - break + if gene_list_2[-1] in gene_list_1: + gene_list_2.pop(-1) # Add it if it has not been used else: - gene_list_1[input_index] = gene_list_2.pop(-1) - input_index += 1 if input_index == index_1: input_index = index_2 + gene_list_1[input_index] = gene_list_2.pop(-1) + input_index += 1 return gene_list_1 diff --git a/src/mutation/mutation_methods.py b/src/mutation/mutation_methods.py index 594f750..21ba5dd 100644 --- a/src/mutation/mutation_methods.py +++ b/src/mutation/mutation_methods.py @@ -159,7 +159,7 @@ class Mutation_Methods: # Indexes of genes to swap index_one = index - index_two = random.randrange(index_one) + index_two = random.randrange(len(chromosome)) # Swap genes chromosome[index_one], chromosome[index_two] = chromosome[index_two], chromosome[index_one] diff --git a/src/structure/gene.py b/src/structure/gene.py index 543d709..2b797c0 100644 --- a/src/structure/gene.py +++ b/src/structure/gene.py @@ -7,9 +7,14 @@ class Gene: self.value = deepcopy(value) - def __eq__(self, gene): - """Comparing two genes by their value.""" - return self.value == gene.value + def __eq__(self, other_gene): + """Comparing two genes by their 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):