Генетические алгоритмы

Download Report

Transcript Генетические алгоритмы

Генетические
алгоритмы
Формальное определение
• Генетический алгоритм — это алгоритм,
который позволяет найти
удовлетворительное решение к
аналитически неразрешимым проблемам
через последовательный подбор и
комбинирование искомых параметров с
использованием механизмов,
напоминающих биологическую эволюцию.
2
Зачем нужны ГА?
• Генетические алгоритмы применяются для
решения следующих задач:
– Оптимизация функций
– Разнообразные задачи на графах (задача
коммивояжера, раскраска, нахождение паросочетаний)
– Настройка и обучение искусственной нейронной сети
– Составление расписаний
– Игровые стратегии
– Аппроксимация функций
– Искусственная жизнь
– Биоинформатика
3
Ключевые работы
• Родителем современной теории генетических алгоритмов
считается Д.Х. Холланд (J. Holland). Однако сначала его
интересовала, прежде всего, способность природных
систем к адаптации, а его мечтой было создание такой
системы, которая могла бы приспосабливаться к любым
условиям окружающей среды.
• В 1975 году Холланд публикует свою самую знаменитую
работу «Adaptation in Natural and Artificial Systems».В ней
он впервые ввёл термин «генетический алгоритм» и
предложил схему классического генетического алгоритма
(canonical GA). В дальнейшем понятие «генетические
алгоритмы» стало очень широким, и зачастую к ним
относятся алгоритмы, сильно отличающиеся от
классического ГА.
• Ученики Холланда - Кеннет Де Йонг (Kenneth De Jong) и
Дэвид Голдберг (David E. Goldberg) - внесли огромный
вклад в развитие ГА. Наиболее известная работа Голдберга
- «Genetic algorithms in search optimization and machine
4
learning» (1989).
Принцип работы ГА
• Популяция – совокупностью всех «особей»,
представляющих собой строки, кодирующие одно из
решений задачи.
• С помощью функции приспособленности:
– наиболее приспособленные (более подходящие
решения) получают возможность скрещиваться и
давать потомство
– наихудшие (плохие решения) удаляются из популяции и
не дают потомства
• Таким образом, приспособленность нового поколения в
среднем выше предыдущего.
• В классическом ГА:
– начальная популяция формируется случайным образом
– размер популяции (количество особей N) фиксируется и
не изменяется в течение работы всего алгоритма
– каждая особь генерируется как случайная L-битная
строка, где L — длина кодировки особи
– длина кодировки для всех особей одинакова
5
Схема работы любого ГА
1.
2.
3.
Шаг алгоритма состоит из
трех стадий:
генерация промежуточной
популяции (intermediate
generation) путем отбора
(selection) текущего
поколения
скрещивание
(recombination) особей
промежуточной популяции
путем кроссовера
(crossover), что приводит к
формированию нового
поколения
мутация нового поколения
6
Применение генетических
алгоритмов в задачах
оптимизации – поиска минимума
функции Швефеля
Были разработаны специальные функции для тестирования различных
оптимизационных алгоритмов. Такие функции характеризуются множеством
локальных минимумов и одним глобальным. Задача состоит в том, чтобы найти
этот глобальный минимум и при этом не застрять в одном из локальных
минимумов.
В качестве такой функции примем функцию Ханс-Пауля Швефеля,
предложенную им в своей работе 1977 года.
В оригинальной работе она выражена так:
n
f ( x1 ,... x n ) 
x
i
* sin
xi
i 1
Здесь аргументов функции может быть множество – это
многокритериальная оптимизация. Для геометрической интерпретации поиска
примем эту функцию от двух аргументов, так как большее количество
аргументов уже не представимо графически в нашем трёхмерном
пространстве.
f ( x1 , x 2 )   x1 * sin
x1  x 2 * sin
x2
Трёхмерная поверхность этой функции имеет следующий вид:
На плоскости XY под трёхмерным графиком находится контурный
график с изображёнными линиями одинакового уровня.
Для дальнейшей работы строим плоский график этих уровней,
причём раскрашиваем его в серые тона, где более тёмные места
означают меньшие значения функции.
Затем на этот график накладываются точки особей популяции в
количестве 1000 особей. Это начальная популяция – поколение №1.
Рядом с этим графиком строится гистограмма распределения
значений функции по популяции.
Затем для каждой особи популяции вычисляется целевая функция
– это значение функции. По величине целевой функции сортируется
популяция. Верхние 500 особей с меньшими значениями будут
родителями, а 500 нижних не выживут и не перейдут в следующее
поколение. Их места займут дети верхних особей.
Затем кроссовер между родителями, и родители вместе с детьми
составляют поколение №2.
После этого к каждой особи нового поколения применяется
оператор мутации с вероятностью 3%.
Затем также осуществляется отбор и далее аналогично.
Поколение 1
Гистограмма значений функции
1000
35
900
30
800
25
700
600
y
20
500
15
400
300
10
200
5
100
0
0
200
400
600
x
800
1000
0
-1500
-1000
-500
0
500
1000
1500
2000
По графикам видно, что почти всё поле
покрыто точками особей. Гистограмма
показывает, что математическое ожидание
около 0, так как функция симметрична
относительно 0, и значения её
простираются примерно от -1500 до 1500.
Переходим к последующим поколениям.
Поколение2
Гистограмма значений функции
1000
40
900
35
800
30
700
25
y
600
500
20
400
15
300
10
200
5
100
0
0
200
400
600
x
800
1000
0
-1500
-1000
-500
0
500
1000
1500
Поколение3
Гистограмма значений функции
1000
70
900
60
800
50
700
600
y
40
500
30
400
300
20
200
10
100
0
0
200
400
600
x
800
1000
0
-1500
-1000
-500
0
500
1000
y
Поколение4
Гистограмма значений функции
1000
50
900
45
800
40
700
35
600
30
500
25
400
20
300
15
200
10
100
5
0
0
200
400
600
x
800
1000
0
-1500
-1000
-500
0
500
1000
Поколение5
Гистограмма значений функции
1000
80
900
70
800
60
700
50
y
600
500
40
400
30
300
20
200
10
100
0
0
200
400
600
x
800
1000
0
-1500
-1000
-500
0
500
Поколение6
Гистограмма значений функции
1000
90
900
80
800
70
700
60
600
y
50
500
40
400
30
300
20
200
10
100
0
0
200
400
600
x
800
1000
0
-1500
-1000
-500
0
500
Поколение7
Гистограмма значений функции
1000
90
900
80
800
70
700
60
600
y
50
500
40
400
30
300
20
200
10
100
0
0
200
400
600
x
800
1000
0
-1500
-1400
-1300
-1200
-1100
-1000
y
Поколение8
Гистограмма значений функции
1000
200
900
180
800
160
700
140
600
120
500
100
400
80
300
60
200
40
100
20
0
0
200
400
600
x
800
1000
0
-1500
-1400
-1300
-1200
-1100
-1000
-900
-800
Поколение9
Гистограмма значений функции
1000
300
900
250
800
700
200
y
600
500
150
400
100
300
200
50
100
0
0
200
400
600
x
800
1000
0
-1450
-1400
-1350
-1300
-1250
-1200
-1150
-1100
Поколение10
Гистограмма значений функции
1000
250
900
800
200
700
y
600
150
500
400
100
300
200
50
100
0
0
200
400
600
x
800
1000
0
-1430
-1420
-1410
-1400
-1390
-1380
Поколение11
Гистограмма значений функции
1000
300
900
250
800
700
200
y
600
500
150
400
100
300
200
50
100
0
0
200
400
600
x
800
1000
0
-1430 -1425 -1420 -1415 -1410 -1405 -1400 -1395 -1390
Поколение12
Гистограмма значений функции
1000
600
900
500
800
700
400
y
600
500
300
400
200
300
200
100
100
0
0
200
400
600
x
800
1000
0
-1430
-1429
-1428
-1427
-1426
-1425
-1424
-1423
Поколение13
Гистограмма значений функции
1000
900
900
800
800
700
700
600
600
y
500
500
400
400
300
300
200
200
100
100
0
0
200
400
600
x
800
1000
0
-1430
-1429
-1428
-1427
-1426
-1425
-1424
-1423
Поколение14
Гистограмма значений функции
1000
800
900
700
800
600
700
500
y
600
500
400
400
300
300
200
200
100
100
0
0
200
400
600
x
800
1000
0
-1430
-1425
-1420
-1415
Поколение15
Гистограмма значений функции
1000
600
900
500
800
700
400
y
600
500
300
400
200
300
200
100
100
0
0
200
400
600
x
800
1000
0
-1430 -1429.5 -1429 -1428.5 -1428 -1427.5 -1427 -1426.5 -1426