2 Техническое задание
Разработать программную реализацию генетического алгоритма.
Необходимо решить задачу в нахождении хромосомы с максимальным количеством единиц. Хромосомы состоят из 12 генов, а популяция насчитывает 8 хромосом. Посмотреть, как протекает процесс решения этой задачи с помощью генетического алгоритма.
Для решения предлагается следующая задача: имеется популяция, состоящая из восьми хромосом которые включают в себя 12 генов (таблица 1).
Таблица 1 – Популяция хромосом 8 вариант
ch1 = [101000100101] |
ch5 = [010101000100] |
ch2 = [000000111010] |
ch6 = [010011000101] |
ch3 = [110001110011] |
ch7 = [000011011011] |
ch4 = [101010101000] |
ch8 = [100010111100] |
Функциональные требования:
- в программе должен быть реализован классический генетический алгоритм.
3 Алгоритм решения задачи
Оценка приспособленности хромосом в популяции. В рассматриваемой популяции хромосом определяем хромосомы, которые содержат наибольшее количество единиц. Поэтому функция приспособленности определяет количество единиц в хромосоме. Обозначим функцию приспособленности символом F. Тогда ее значения для каждой хромосомы из исходной популяции будут такие (таблица 2).
Таблица 2 – Количество единиц в хромосоме
F(ch1) = 6 |
F(ch5) = 5 |
F(ch2) = 7 |
F(ch6) = 8 |
F(ch3) = 8 |
F(ch7) = 7 |
F(ch4) = 5 |
F(ch8) = 7 |
Хромосомы ch3, ch16 характеризуются наибольшим значением функции принадлежности. В этой популяции она считаются наилучшим кандидатом на решение задачи. Если в соответствии с блок-схемой генетического алгоритма (рисунок 1) условие остановки алгоритма не выполняется, то на следующем шаге производится селекция хромосом из текущей популяции.
Таблица 3 - Значение функции приспособленности
v(ch1) = 12,2 |
v(ch5) = 10,2 |
v(ch2) = 14,2 |
v(ch6) = 8,16 |
v(ch3) = 16,3 |
v(ch7) = 14,28 |
v(ch4) = 10,2 |
v(ch8) = 14,28 |
Селекция хромосом. Селекция производится методом рулетки. На основании формул (2) и (3) для каждой из 8 хромосом текущей популяции (в нашем случае - исходной популяции, для которой N = 8) получаем секторы колеса рулетки, выраженные в процентах (рисунок 2). В таблице 3 показаны значения функции приспособленности каждой хромосомы v(chi) в процентах.
Рисунок 2 – Колесо рулетки для селекции
Розыгрыш с помощью колеса рулетки сводится к случайному выбору числа из интервала [0, 100], указывающего на соответствующий сектор на колесе, т.е. на конкретную хромосому.
Допустим, что розыграны следующие 8 чисел: 63, 14, 65, 42, 49, 40, 4, 3.
Это означает выбор хромосом: ch6, ch2, ch6, ch4, ch4, ch4, ch1, ch1.
Как видно, хромосома ch4 была выбрана трижды. Именно эти хромосомы имеют наибольшее значение функции приспособленности. Все выбранные таким образом хромосомы включаются в так называемый родительский пул.
Применение генетических операторов. Ни одна из отобранных в процессе селекции хромосом не подверглась мутации, и все они составляют популяцию хромосом, предназначенных для скрещивания. Это означает, что вероятность скрещивания pc = 1, а вероятность мутации pm = 0. Из этих хромосом случайным образом сформированы пары родителей: ch6 и ch2, ch6 и ch4, ch4 и ch1, ch1 и ch1.
Для пар случайным образом выбраны точки скрещивания lk = 5 и lk = 9 Процесс скрещивания представлен в таблице 4.
Таблица 4 – Процесс скрещивания хромосом
Первая пара родителей |
|
Первая пара потомков |
[001101100100] [110100111010] lk = 5 |
скрещивание → |
[001101100110] [110100111000] |
Вторая пара родителей |
|
Вторая пара потомков |
[000011000101] [110101110011] lk = 5 |
скрещивание →
|
[000011000111] [110101110001] |
Третья пара родителей |
|
Третья пара потомков |
[010101101000] [110101110011] lk = 9 |
скрещивание →
|
[010101101011] [110101110000]
|
Четвертая пара родителей |
|
Четвертая пара потомков |
[110001100101] [110001100101] lk = 9 |
скрещивание →
|
[110001100101] [110001100101] |
В результате выполнения оператора скрещивания получилось 4 пары потомков. При скрещивании пар ch1 и ch1 получилась пара потомков, идентичных своим родителям. Эта ситуация наиболее вероятна для хромосом с наибольшим значением функции приспособленности, т.е. именно такие хромосомы получают наибольшие шансы на переход в новую популяцию.
Формирование новой популяции. После выполнения операции скрещивания мы получаем следующую популяцию потомков (таблица 5).
Таблица 5 - следующую популяцию потомков
Ch1 = [001101100110] |
Ch5 = [010101101011] |
Ch2 = [110100111000] |
Ch6 = [110101110000] |
Ch3 = [000011000111] |
Ch7 = [110001100101] |
Ch4 = [110101110001] |
Ch8 = [110001100101] |
Для отличия от хромосом предыдущей популяции обозначения вновь сформированных хромосом начинаются с заглавной буквы С.
Согласно блок-схеме генетического алгоритма (рис.1) производится возврат ко второму этапу, т.е. к оценке приспособленности хромосом из вновь сформированной популяции, которая становится текущей. Значения функций приспособленности хромосом этой популяции представлены в таблице 6.
Таблица 6 – Количество единиц в хромосомах новой популяции
F(ch1) = 6 |
F(ch5) = 7 |
F(ch2) = 6 |
F(ch6) = 6 |
F(ch3) = 5 |
F(ch7) = 6 |
F(ch4) = 7 |
F(ch8) = 6 |
Полученная популяция потомков характеризуется гораздо более высоким средним значением функции приспособленности, чем популяция родителей.