Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 2.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
148 Кб
Скачать
☆

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

В задачах оптимизации часто применяется класс эвристических алгоритмов. К этому классу относятся и вероятностные эволюционные алгоритмы. Благодаря комбинированию случайного поиска и механизма уточнения(сохранения) решения даже при большом пространстве поиска решение может быть найдено в приемлемые временные рамки.

Рассмотрим общую схему работу Генетического алгоритма(ГА)

Ш.1 Формирование начального поколения

Ш.2 Отбор и применение ГА операторов для нового поколения

Ш.3 Проверка условия останова. Если не выполняется перейти к Ш.2

Ш.4 Лучшая особь выбирается как найденное решение.

В работе алгоритма используется набор решений, которые, как и в живой природе, борются с друг с другом за первенство. Лучшие выживают и передают свои свойства потомкам, худшие отмирают и не участвуют в отборе.

ГА является общим алгоритмом для решения любой задачи, и при его применении к конкретной необходимо выбрать механизм кодирования параметров задачи(фенотипа) в гены особи(генотипа), определить оптимизационную функцию (fitness function) и выбрать условия останова.

В данном случае решения задачи теории расписания минимаксный критерий будет являться оптимизационной функцией, а условием останова неизменность лучшего решения в течение поколений.

Ключевые точки алгоритма описаны в прошлой методичке. На основе описанных там методе реализации кодирования хромосом, преобразования хромосом в расписания, реализации операторов кроссовера и мутации, методе отбора особей можно реализовать весь итерационный процесс поиска решения с помощью ГА.

Рассмотрим подробнее Ш.2 алгоритма

Проставить формулы

Ш.2.1 На вход шага поступает исходный вектор особей (хромосом), каждая из особей представляет какое-то расписание с соответствующим ему Tmax и соотвественно приспособленностью особи.

Ch1=[0(S:48), 1(S:41), 2(S:32), 3(S:42), 4(S:37), 5(S:47), 6(S:26), 7(S:37), 8(S:37), 9(S:31)] Новое поколение должно быть записано в новый вектор Ch2, который на следующем шаге послужит исходным.

Ш.2.2 Если используется механизм элитных особей, то лучшие Nособей переходят в новое поколение без изменений (обычно ограничиваются одной особь).

Ш.2.3 В цикле по всем особям, за исключением элитных производят применение ГА операторов.

Ш.2.4 iтая особь переходит в следующее поколение, если к ней не применятся какие-либо операторы, то она сохранится в следующем поколении без изменений.

Ш.2.5 Выполняется оператор кроссовера с заданной вероятностью к примеру 0.95. Простым способом задать такую вероятность является получение случайногоо числа в интервале [0..1] R=RND(), и проверка условия R<0.95. Для применения оператора кроссовера необходимо выбрать две особи, например с помощью двоичного турнирного отбора.

Ш.2.6 Выполняется оператор мутации с заданной вероятностью.

Ш.2.7 Если i<N перейти к шагу Ш.2.4

Ш.2.8 Сформировано поколение Ch2. После проверки условия останова в Ш.3 оно послужит начальным вектором для шага Ш.2.1.

Попробуем найти решение для параметров задачи указанных выше и следующими параметрами ГА

Вероятность кроссовера: 0.95

Вероятность мутации: 0.05

Кол-во особей: 10

Лимит останова

Использование Элиты: 1 особь

Ш.1 Начальное поколение

Поколение №0

Особи: SumF:378 0(S:48, ), 1(S:41, ), 2(S:32, ), 3(S:42, ), 4(S:37, ), 5(S:47, ), 6(S:26, ), 7(S:37, ), 8(S:37, ), 9(S:31, )

Лучшей особью является

Особь #6 Tmax: 26

[1 r:0] summ:26/26 4(4) 5(22)

[2 r:0] summ:22/22 2(15) 3(7)

[3 r:0] summ:20/20 0(5) 1(10) 6(5)

Поколение №1

Особи: SumF:361 1000(S:26, ), 1001(S:31, ), 1002(S:37, ), 1003(S:27, ), 1004(S:51, ), 1005(S:30, ), 1006(S:41, ), 1007(S:44, ), 1008(S:37, ), 1009(S:37, ),

Видно что в новом поколении лучшая особь не изменилась, но суммарная присобленность (SumF) улучшилась, что говорит о начале сходимости алгоритма вокруг лучшего решения.

…Пропускаем до 37 поколения

Поколение №37

Особи: SumF:264 1000(S:26, ), 1001(S:26, ), 1002(S:26, ), 1003(S:26, ), 1004(S:24, ), 1005(S:26, ), 1006(S:26, ), 1007(S:26, ), 1008(S:26, ), 1009(S:32, )

Лучшей особью является

Особь #1004 Tmax: 24

[1 r:1] summ:22/22 5(22)

[2 r:2] summ:24/24 2(15) 4(4) 6(5)

[3 r:3] summ:22/22 0(5) 1(10) 3(7)

Поколение №38

Особи: SumF: 267 0(S:24, ), 1(S:26, ), 2(S:30, ), 3(S:26, ), 4(S:26, ), 5(S:26, ), 6(S:31, ), 7(S:26, ), 8(S:26, ), 9(S:26, )

…Пропускаем до 87 поколения. Останов алгоритма.

Особи: SumF: 263 1000(S:24, ), 1001(S:24, ), 1002(S:27, ), 1003(S:24, ), 1004(S:24, ), 1005(S:24, ), 1006(S:44, ), 1007(S:24, ), 1008(S:24, ), 1009(S:24, )

Любая из особей с Tnax:24 может быть выбрана как решение.

Особь #1004 Tmax: 24

[1 r:1] summ:22/22 5(22)

[2 r:2] summ:24/24 2(15) 4(4) 6(5)

[3 r:3] summ:22/22 0(5) 1(10) 3(7)

Графически процесс решения можно увидеть на след графике.