In: Computer Science
Creates a function called biochild. The function has as parameters the number m and lists biomotℎer and biofatℎer. The lists biomotℎer and biofatℎer contain 0’s and 1’s. For example: biomotℎer = [1,0,0,1,0,1] and biofatℎer = [1,1,1,0,0,1] Both lists have the same length n. The 0’s and 1’s represent bits of information (remember that a bit is 0 or 1). The function has to generate a new list (child). The child list has to have the same length n. child is generated by randomly combining some of the information from the biomotℎer and biofatℎer. The first part of the child list will be composed of the first b bits of biomotℎer and the second part by the last n b bits of the biofatℎ
Crea una función llamada biochild. La función tiene como parámetros el número m y las listas ??????ℎ?? y ??????ℎ??. Las listas ??????ℎ?? y ??????ℎ?? contienen 0’s y 1’s. Por ejemplo: ??????ℎ?? = [1,0,0,1,0,1] y ??????ℎ?? = [1,1,1,0,0,1] Ambas listas tienen el mismo largo ?. Los 0’s y 1’s representan bits de información (recuerda que un bit es 0 o 1). La función tiene que generar una nueva lista (child). La lista child tiene que tener el mismo largo ?. child se genera por medio de combinar aleatoriamente parte de la información del ??????ℎ?? y ??????ℎ??. La primera parte de la lista child estará compuesta por los primeros ? bits de ??????ℎ?? y la segunda parte por los últimos ? − ? bits del ??????ℎ??. Por ejemplo, si ? = 3, ??????ℎ?? = [?, ?, ?, 1,0,1] y ??????ℎ?? = [1,1,1, ?, ?, ?], entonces ?ℎ??? = [1,0,0,0,0,1]. El valor ? tiene que ser elegido aleatoriamente por la función. Luego de haber generado child, cada bit de la lista es considerado para mutación. Para cada bit de child, con probabilidad ? el bit es “mutado” al ser sustituido por su inverso (si el bit es 0 es sustituido por 1, y si es 1 es sustituido por 0). Finalmente, la función devuelve la lista child
import random
def biochild(m,bioMother,bioFather):
b=random.randint(1,len(bioMother))#generate a number b
randomly
child=bioMother[:b]+bioFather[b:]#create child list using 1st b
elements of mother, and remaining of father
for i in range(len(bioMother)):#loop through the list
if random.random()<=m:#generate a random number in [0,1] and
using that to see if but should be inverted
child[i]=int(not child[i])#invert bit using not , then convert
boolean to 1 or 0
return child#return the list