def combinar_genes(self, genes1, genes2): """Funcion tonta para combinar los genes, aleatoriamente""" combinacion1 = [] combinacion2 = [] if self.cruzamiento == 1: # combinar aleatoriamente for i in xrange(81): if random.randint(0,1): combinacion1.append(genes1[i]) combinacion2.append(genes2[i]) else: combinacion1.append(genes2[i]) combinacion2.append(genes1[i]) elif self.cruzamiento == 2: # combinar por cortes azarosos i = random.randint(0,80) combinacion1.extend(genes1[0:i]) combinacion1.extend(genes2[i:81]) combinacion2.extend(genes2[0:i]) combinacion2.extend(genes1[i:81]) elif self.cruzamiento == 3: # combinar por fila for i in xrange(9): if random.randint(0,1): combinacion1.extend(genes1[i:i+9]) combinacion2.extend(genes2[i:i+9]) else: combinacion1.extend(genes2[i:i+9]) combinacion2.extend(genes1[i:i+9]) pass # BINOMIAL PURO return (convertir(combinacion1, type(self.genes)), convertir(combinacion2, type(self.genes)))
def get_region(self, region): """Funcion personalizada para obtener una region (base 0) a partir de los genes""" mi_region = [] start = (region/3)*27 + (region%3)*3 for j in xrange(0, 18, 9): for i in xrange(start, start + 3): mi_region.append(self.genes[i + j]) return convertir(mi_region, type(self.genes))
def get_columna(self, columna): """Funcion personalizada para obtener una columna (base 0) a partir de los genes""" mi_columna = [] for fila in xrange(0, 80, 9): try: mi_columna.append(self.genes[fila + columna]) except: print self.genes print len(self.genes) print fila + columna raise return convertir(mi_columna, type(self.genes))