Практика 1.2: Генетический алгоритм, скрещивание
Используем формулу
F=G10GmaxFmax−Fmin+Fmin,
где Gmax=2m−1 и G10 - генотип, m - длина гена, F - фенотип.
Задание: провести скрещивание двух особей, определить генотипы, фенотипы и значение функции приспособленности особей-потомков.
Пример решения задачи
Дано
f=x2+y2 - функция приспособленности
Первый родительский пул (в нем генотипы 3х родителей):
0010∣0110
1010∣0100
1100∣1001
Второй родительский пул (в нем генотипы 2х родителей ):
1111∣0000
1000∣1010
Длина гена:m=4
Поисковый интервал: F∈[0;8]
Точка рассечения №1 : между 3 и 4 разрядами хромосомы
Точка рассечения №2 : между 5 и 6 разрядами хромосомы
Решение
Шаг 1. Турнирный отбор
Проведем турнирный отбор между родителями по формуле
F=G10GmaxFmax−Fmin+Fmin,
определим фенотип родителей. Для этого необходимо перевести генотип из двоичной системы в десятичную и подставим в формулу.
0010 -> 2 | 0110 -> 6
1010 -> 10 | 0100 -> 4
1100 ->12 | 1001 -> 9
Полученные значения подставим в функцию приспособленности и выберем лучшего родителя в каждом пуле.
- Для первого родителя из пула:
Fx=2∗158−0+0=1516=1.07
Fy=6∗158−0+0=1548=3.2
f1(Fx,Fy)=10.24+1.14=11.4
- Для второго родителя из пула:
Fx=10∗158−0+0=1580=5.3
Fy=4∗158−0+0=1532=2.13
f2(Fx,Fy)=28.4+4.5=32.9
- Для третьего родителя из пула:
Fx=12∗158−0+0=1596=6.4
Fy=9∗158−0+0=1572=4.8
f3(Fx,Fy)=41+23=64
Первый родитель является лучшим. Рассмотрим второй пул.
- Для первого родителя из пула:
Fx=15∗158−0+0=15120=8
Fy=0∗158−0+0=150=0
f1(Fx,Fy)=64+0=64
- Для второго родителя из пула:
Fx=8∗158−0+0=1564=4.2
Fy=10∗158−0+0=1580=5.3
f2(Fx,Fy)=18.2+28.1=36.3
Второй родитель является лучшим из данного пула.
Шаг 2. Скрещивание
В генотипе двух родителей меняем местами указанные в условии промежутки (точки рассечения). В данном случае:
G1 001|00|110 -> 001|01|110
G2 100|01|010 -> 100|00|010
Шаг 3. Фенотип потомков
Вычисляем фенотип и функцию приспособленности потомков.
- Для первого потомка:
Fx=2∗158−0+0=1516=1.07
Fy=14∗158−0+0=15112=7.4
f1(Fx,Fy)=1.14+54.76=55.9
- Для второго потомка:
Fx=8∗158−0+0=1564=4.2
Fy=2∗158−0+0=1516=1.07
f2(Fx,Fy)=17.64+1.14=18.76
Ответ
Генотип: G1=00101110
Фенотип: F1=(1.07,7.4)
Функция приспособленности: f1=55.9
Генотип: G2=10000010
Фенотип: F2=(4.2,1.07)
Функция приспособленности: f2=18.78