From 8baa410fa4e493dbfafcb89eaad43c6a5ad3f4f4 Mon Sep 17 00:00:00 2001 From: George Lacey Date: Sun, 24 Sep 2017 17:38:04 +0100 Subject: [PATCH] Implement roulette method --- src/population.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/population.py b/src/population.py index 4463f4e..1b274d6 100644 --- a/src/population.py +++ b/src/population.py @@ -1,5 +1,7 @@ from individual import Individual +from random import Random +rand = Random() class Population(object): @@ -18,10 +20,10 @@ class Population(object): total += member.fitness return total - def roulette(self): - total = self.total_fitness() + def roulette(self, divisor=1): + total = self.total_fitness() / divisor + position = rand.uniform(0, total) for member in self.members: - total -= member.fitness - if total <= 0: - pass - # todo: add to crossover list + position -= member.fitness / divisor + if position <= 0: + return member