Source code for funcs

import solution
import random




[docs]def diagonal(pop,n): """ This is an implementation of diagonal recombination """ if not pop: return [] childs = [solution.solution(p.settings) for p in pop] pnts = [random.randint(1,pop[0].settings.solSet['length']-1) for i in xrange(n)] pnts.sort() pnts.append(pop[0].settings.solSet['length']) for c in childs: last = 0 nex = pnts[0] for i in xrange(1,len(pnts)+1): if i!=len(pnts): c.bits[last:nex] = pop[i%len(pop)].bits[last:nex] last = nex nex = pnts[i] else: c.bits[last:] = pop[i%len(pop)].bits[last:] d = pop[0] pop = pop[1:] pop.append(d) return childs