def crossover(p1, p2): split = math.floor(p1.data.__len__()/2)#random.randint(1, str(p1.data).__len__()) kid1 = Chromosome() kid2 = Chromosome() for i in range(0, str(p1.data).__len__()): if i < split: kid1.data = kid1.data + p1.data[i] kid2.data = kid2.data + p2.data[i] else: kid1.data = kid1.data + p2.data[i] kid2.data = kid2.data + p1.data[i] return (kid1, kid2)
def mutate(chromosome): newChromosome = Chromosome() for c in chromosome.data: r = random.randint(0, 100) if r < 10: if c is '0': c = '1' elif c is '1': c = '0' newChromosome.data = newChromosome.data + c return newChromosome