El cruce de un solo punto en el algoritmo genético es una forma de cruce en el que se seleccionan dos cromosomas principales y se selecciona un punto aleatorio/dado y los genes/datos se intercambian entre ellos después del punto dado/seleccionado, por ejemplo
Ejemplos:
P1: 000011110011 P2: 101010101010 Point: 4 After Crossover: C1: 000010101010 C2: 101011110011
El problema es seleccionar un punto aleatorio para el cruce de dos padres dados y generar al menos cinco generaciones de niños del par dado de un cromosoma.
Código: programa Python para cruce de un solo punto en algoritmo genético
# library to generate a random number import random # function for implementing the single-point crossover def crossover(l, q): # converting the string to list for performing the crossover l = list(l) q = list(q) # generating the random number to perform crossover k = random.randint(0, 15) print("Crossover point :", k) # interchanging the genes for i in range(k, len(s)): l[i], q[i] = q[i], l[i] l = ''.join(l) q = ''.join(q) print(l) print(q, "\n\n") return l, q # patent chromosomes: s = '1100110110110011' p = '1000110011011111' print("Parents") print("P1 :", s) print("P2 :", p, "\n") # function calling and storing the off springs for # next generation crossover for i in range(5): print("Generation ", i+1, "Childrens :") s, p = crossover(s, p)
Producción:
Parents P1 : 1100110110110011 P2 : 1000110011011111 Generation 1 Childrens : Crossover point : 2 1100110011011111 1000110110110011 Generation 2 Childrens : Crossover point : 7 1100110110110011 1000110011011111 Generation 3 Childrens : Crossover point : 0 1000110011011111 1100110110110011 Generation 4 Childrens : Crossover point : 7 1000110110110011 1100110011011111 Generation 5 Childrens : Crossover point : 2 1000110011011111 1100110110110011
Publicación traducida automáticamente
Artículo escrito por AKSHAYRAJ4 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA