quarta-feira, 17 de março de 2010

Para acabar com a Selecção

Para concluir as versões mais usadas de selecção vamos incluir o método por ordem:

def rank(population, numb,s):
"""linear version."""
pop_size = len(population)
pop = population[:]
pop.sort(key=itemgetter(1))
probabilities = [((2 - s)/pop_size) + ((2*i*(s -1))/float((pop_size * (pop_size - 1))))
for i in range(pop_size)]
mate_pool = []
for i in range(numb):
value = random.uniform(0,1)
index = 0
total = probabilities[index]
while total < value:
index += 1
total += probabilities[index]
mate_pool.append(population[index])
return mate_pool


Os interessados podem consultar o livro do Eiben e Smith, página 60.

Sem comentários:

Enviar um comentário