def mutate(self, chromo): """ Function takes chromosome inputs and mutates the chromosome based on mutation rate :param chromo: input player chromosome :return: mutated player chromosome """ for z in xrange(len(chromo)): if random_number() < MUTATION_RATE: chromo[z] = random_number() return chromo
def crossover(self, offspring1, offspring2): """ perform a crossover on the offspring and return the changed offsprings with new chromosomes :param offspring1: first NN player :param offspring2: second NN player :return: new offsprings generated """ # if random_number() < CROSSOVER_RATE: # crossover_val = int(random_number() * len(offspring1)) # t1 = offspring1[:crossover_val] + offspring2[crossover_val:] # t2 = offspring2[:crossover_val] + offspring1[crossover_val:] # Changing the way we do crossovers for c_ix in range(len(offspring1)): if random_number() < CROSSOVER_RATE: offspring1[c_ix], offspring2[c_ix] = offspring2[c_ix], offspring1[c_ix] # return t1, t2 return offspring1, offspring2