All pastes #560006 Raw Edit

Miscellany

public python v1 · immutable
·published 2007-06-11 23:44 UTC
rendered paste body
    def reproduce(self):                        proportional_fitness = [None] * self.nsets        for i in xrange(self.nsets):            proportional_fitness[i] = \            float(self.fitness[i]) / sum(self.fitness)                number_of_copies = [0] * self.nsets        number_of_copies[0] = 1        for i in xrange(self.nsets):            number_of_copies[i] = \            int(math.ceil(proportional_fitness[i] * (self.nsets - 1)))            if sum(number_of_copies) >= self.nsets:                number_of_copies[i] -= (sum(number_of_copies) - self.nsets)                break                new_params = []        set_copy_list = \        [(proportional_fitness[i], number_of_copies[i], i) \        for i in xrange(self.nsets)]        set_copy_list.sort()        set_copy_list.reverse()        for set in set_copy_list:            new_params += [copy.deepcopy(self.params[set[2]]) for n in xrange(set[1])]            self.params = new_params