Implement advance_generation
-Implement printing
This commit is contained in:
parent
1e97d4e031
commit
6d1c9be3a3
|
@ -7,10 +7,19 @@ rand = Random()
|
|||
class Population(object):
|
||||
|
||||
def __init__(self, size):
|
||||
self.members = []
|
||||
self.members = list()
|
||||
for current in range(0, size):
|
||||
self.members.append(Individual())
|
||||
|
||||
def __str__(self):
|
||||
return_string = ""
|
||||
position = 0
|
||||
for member in self.members:
|
||||
return_string += "%d:\tx: %f\ty: %f\tfit: %f\n" %\
|
||||
(position, member.x, member.y, member.fitness)
|
||||
position += 1
|
||||
return return_string
|
||||
|
||||
def fitness_function(self):
|
||||
for member in self.members:
|
||||
member.fitness_function()
|
||||
|
@ -24,11 +33,21 @@ class Population(object):
|
|||
def roulette(self, divisor=1):
|
||||
total = self.total_fitness() / divisor
|
||||
position = rand.uniform(0, total)
|
||||
|
||||
for member in self.members:
|
||||
position -= member.fitness / divisor
|
||||
if position <= 0:
|
||||
return member
|
||||
|
||||
def advance_generation(self):
|
||||
crossover_members = []
|
||||
crossover_members.append(self.roulette())
|
||||
self.fitness_function()
|
||||
parents = list()
|
||||
for i in range(0, len(self.members)):
|
||||
parents.append(self.roulette())
|
||||
|
||||
children = list()
|
||||
for i in range(0, len(parents) - 2, 2):
|
||||
parents[i].crossover(parents[i + 1])
|
||||
children.append(parents[i])
|
||||
children.append(parents[i+1])
|
||||
self.members = children
|
||||
|
|
Loading…
Reference in New Issue
Block a user