Python | Одноточечный кроссовер в генетическом алгоритме
Одноточечный кроссовер в генетическом алгоритме - это форма кроссовера, при которой выбираются две родительские хромосомы и выбирается случайная / заданная точка, а гены / данные обмениваются между ними, например, после заданной / выбранной точки.
Примеры:
P1: 000011110011 P2: 101010101010 Балл: 4 После кроссовера: C1: 000010101010 C2: 101011110011
Задача состоит в том, чтобы выбрать случайную точку для кроссовера двух данных родителей и создать по крайней мере пять поколений детей из данной пары хромосомы.
# library to generate a random number random import # 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, "
" ) return l, q # patent chromosomes: s = '1100110110110011' p = '1000110011011111' print ( "Parents" ) print ( "P1 :" , s) print ( "P2 :" , p, "
" ) # 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) |
Родители P1: 1100110110110011 P2: 1000110011011111 Дети поколения 1: Точка кроссовера: 2 1100110011011111 1000110110110011 Дети поколения 2: Точка кроссовера: 7 1100110110110011 1000110011011111 Дети поколения 3: Точка кроссовера: 0 1000110011011111 1100110110110011 Дети поколения 4: Точка кроссовера: 7 1000110110110011 1100110011011111 Дети поколения 5: Точка кроссовера: 2 1000110011011111 1100110110110011
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.