From a404eba685dea9e05ff11a2867df181bdfcdca5c Mon Sep 17 00:00:00 2001 From: SimpleArt <71458112+SimpleArt@users.noreply.github.com> Date: Wed, 9 Dec 2020 10:35:09 -0500 Subject: [PATCH] Changed the way probabilities adapt work --- src/EasyGA.py | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/EasyGA.py b/src/EasyGA.py index d847c8a..07915c5 100644 --- a/src/EasyGA.py +++ b/src/EasyGA.py @@ -131,43 +131,40 @@ class GA(Attributes): best_chromosome = self.population[0] tol = lambda i: self.dist(best_chromosome, self.population[i]) - # Change rates with: - multiplier = 1 + self.adapt_probability_rate - # Too few converged: cross more and mutate less if tol(amount_converged//2) > tol(amount_converged//4)*2: - self.selection_probability = min( - self.max_selection_probability, - self.selection_probability * multiplier + self.selection_probability = sum( + self.adapt_probability_rate * self.max_selection_probability, + (1-self.adapt_probability_rate) * self.selection_probability ) - self.chromosome_mutation_rate = max( - self.min_chromosome_mutation_rate, - self.chromosome_mutation_rate / multiplier + self.chromosome_mutation_rate = sum( + self.adapt_probability_rate * self.min_chromosome_mutation_rate, + (1-self.adapt_probability_rate) * self.chromosome_mutation_rate ) - self.gene_mutation_rate = max( - self.min_gene_mutation_rate, - self.gene_mutation_rate / multiplier + self.gene_mutation_rate = sum( + self.adapt_probability_rate * self.min_gene_mutation_rate, + (1-self.adapt_probability_rate) * self.gene_mutation_rate ) # Too many converged: cross less and mutate more else: - self.selection_probability = max( - self.min_selection_probability, - self.selection_probability / multiplier + self.selection_probability = sum( + self.adapt_probability_rate * self.min_selection_probability, + (1-self.adapt_probability_rate) * self.selection_probability ) - self.chromosome_mutation_rate = min( - self.max_chromosome_mutation_rate, - self.chromosome_mutation_rate * multiplier + self.chromosome_mutation_rate = sum( + self.adapt_probability_rate * self.max_chromosome_mutation_rate, + (1-self.adapt_probability_rate) * self.chromosome_mutation_rate ) - self.gene_mutation_rate = min( - self.max_gene_mutation_rate, - self.gene_mutation_rate * multiplier + self.gene_mutation_rate = sum( + self.adapt_probability_rate * self.max_gene_mutation_rate, + (1-self.adapt_probability_rate) * self.gene_mutation_rate )