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

Искусственный интеллект. Лабораторная работа №6

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

Цель работы: Получить практические навыки в создании и использовании генетических алгоритмов.

Теоретические сведения:

Подобно нейронным сетям, генетические алгоритмы основываются на свойствах биологического прототипа. В рамках этого подхода обучение рассматривается как кон­куренция внутри популяции между эволюционирующими кандидатами на роль решения задачи. Каждое решение оценивается согласно критерию отбора. По результатам оценки определяется, будет ли этот экземпляр участвовать в следующем поколении решений. Затем с помощью операций, аналогичных трансформации биологического воспроизводства, создается новое поколение решений-кандидатов.

Пусть Р(t) — поколение решений-кандидатов в момент времени t P(t) = { , ,…, }.

В общем виде генетический алгоритм можно представить следующим образом.

procedure genetic algorithm;

begin

установить t:=0;

инициализировать популяцию P(t);

while не достигнуто условие завершения

begin

вычислить значение критерия качества для каждого члена

популяции P(t);

на основе значений критерия качества выбрать из Р(t) нужное

число членов;

создать следующее поколение с помощью генетических операций;

заменить с учётом значений критерия качества особей

популяции P(t) их потомками;

установить время t: = t+1

end.

end.

Этот алгоритм отражает основные принципы генетического обучения. Его конкретные реализации могут отличаться в зависимости от задачи. Какое процентное соотноше­ние особей выживает в следующем поколении? Сколько особей участвуют в скрещива­нии? Как часто и к кому применяются генетические операторы? Процедуру "заменить особей популяции P(t)" можно реализовать простейшим образом, заменив фиксиро­ванное процентное соотношение слабейших кандидатов. Более сложный подход со­стоит в упорядочении популяции согласно критерию качества и удалении особей с учетом вероятности, обратно пропорциональной значению критерия качества. Такую меру можно использовать для выбора исключаемых особей. И хотя для наилучших особей популяции вероятность их исключения очень низка, все же существует шанс удаления самых "сильных" особей популяции. Преимущество этой схемы состоит в возможности сохранения некоторых "слабых" особей, которые в дальнейшем могут внести свой вклад в получение более точного решения.Такой алгоритм замены извес­тен под многими именами, в том числе как метод Монте-Карло (Monte-Carlo), правило рулетки (roulette wheel) или алгоритм отбора пропорционально критерию качест­ва (fitness proportionate selection).

Решение задачи будем описывать с помо­щью обычных битовых строк. Предположим, что необходимо с помощью генетического алгоритма научиться классифицировать строки, состоящие из единиц и нулей. В такой задаче популяцию битовых строк можно описывать с помощью шаблона, состоящего из 1, 0 и символов #, которые могут соответствовать как 1, так и 0. Следовательно, шаблон 1##00##1 представляет всё восьмибитовые строки, начинающиеся, заканчивающиеся 1 и содержащие в середине строки два нуля подряд.

При работе генетического алгоритма популяция кандидатов Р(0) некоторым образом инициализируется. Обычно инициализация выполняется с помощью датчика случайных чисел. Для оценки решений-кандидатов вводится критерий качества f( ), определяю­щий меру соответствия каждого кандидата в момент времени t. При классификации ме­рой соответствия кандидатов является процентное соотношение правильных ответов на множестве обучающих примеров. При таком критерии качества каждому решению-кандидату соответствует значение

f ( ) / m (Р, t) ,

где m (Р, t) — среднее значение критерия качества для всех членов популяции. Обычно мера соответствия изменяется во времени, поэтому критерий качества может быть функ­цией от стадии решения всей проблемы или f( ).

После анализа каждого кандидата выбираются пары для рекомбинации. При этом используются генетические операторы, в результате выполнения которых новые решения получаются путем комбинации свойств родителей. Как и в естественном процессе эволю­ции, степень участия в репродуктивном процессе для каждого кандидата определяется зна­чением критерия качества: кандидаты с более высоким значением критерия качества участ­вуют в процессе воспроизводства с более высокой вероятностью. Как уже отмечалось, вы­бор осуществляется на основе вероятностных законов, когда слабые члены популяции имеют меньшую вероятность воспроизводства, однако такая возможность не исключается. Выживание некоторых слабейших особей имеет важное значение для развития популяции, поскольку они могут содержать некоторые важные компоненты решения, например, фрагмент битовой строки, которые могут извлекаться при воспроизводстве.

Генетические операторы.

Существует множество генетических операторов получения потомства, обладаю­щего свойствами своих родителей. Основными являются селекция, кроссовер и мутация.

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

Собственно воспроизводство ведется с помощью оператора кроссовера - скрещива­ния (crossover). При скрещивании два решения-кандидата делятся на несколько частей и обмениваются этими частями, результатом становятся два новых кандидата.

На рис.1 показана операция скрещивания шаблонов битовых строк длины 8. Эти строки делятся на две равные части, после чего формируются два потомка, содержащих по одному сегменту каждого из родителей. Заметим, что разбиение родительских особей на две равные части— это достаточно произвольный выбор. Решения-кандидаты могут разбиваться в любой точке, которую можно выбирать и изменять случайным образом в ходе решения задачи.

Предположим, что целевой класс — это набор всех строк, которые начинаются и заканчиваются единицей. Обе родительские строки, показанные на рис.1, достаточно хорошо подходят для решения этой задачи. Однако первый их потомок гораздо точнее соответствует критерию качества, чем любой из родителей: с помощью этого шаблона не будет пропущен ни один из целевых примеров, а нераспознанными останутся гораздо меньше строк, чем в реальном классе решения. Заметим также, что его "собрат" гораздо хуже, чем любой из родителей, поэтому этот экземпляр, скорее всего, будет исключен в одном из ближайших поколений.

Мутация (mutation) — это еще один важный генетический оператор. Она состоит в слу­чайном выборе кандидата и случайном изменении некоторых его свойств. Например, мутация может состоять в случайном выборе бита в шаблоне и изменении его значения с 1 на 0 или #. Значение мутации состоит в возможном восполнении важных компонентов решения, отсутст­вующих в исходной популяции. Если в рассмотренном выше примере ни один из членов ис­ходной популяции не содержит 1 в первой позиции, то в процессе скрещивания нельзя полу­чить потомка, обладающего этим свойством. Значение первого бита может измениться лишь вследствие мутации. Этой цели можно также достичь с помощью другого генетического опе­ратора — инверсии (inversion), который заключается в том, что хромосома делится на две части, и затем они меняются местами.

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

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

Задание.

Напишите программу, иллюстрирующую пример использования генетического алгоритма.

Варианты задания:

  1. Применить оператор селекции и кроссовера.

  2. Применить оператор мутации.

  3. Применить оператор инверсии.

  4. Применить оператор селекции и кроссовера.

  5. Применить оператор мутации.

  6. Применить оператор инверсии.

  7. Применить оператор селекции и кроссовера.

  8. Применить оператор мутации.

  9. Применить оператор инверсии.

  10. Применить оператор селекции и кроссовера.

  11. Применить оператор мутации.

  12. Применить оператор инверсии.

  13. Применить оператор селекции и кроссовера.