Python | Cruce de punto único en algoritmo genético

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *