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

Автор работы: Пользователь скрыл имя, 01 Февраля 2014 в 14:21, курсовая работа

Краткое описание

Природа поражает своей сложностью и богатством проявлений. Среди примеров можно назвать сложные социальные системы, иммунные и нейронные системы, сложные взаимосвязи между видами. Они - всего лишь некоторые из чудес, ставшие очевидными при глубоком исследовании природы вокруг нас. Наука - это одна из систем, которая объясняет окружающее и помогает приспособиться к новой информации, получаемой из внешней среды. Многое из того, что мы видим и наблюдаем, можно объяснить теорией эволюции через наследственность, изменение и отбор.

Содержание

Введение
Глава 1. Генетические алгоритмы
1.1 Естественный отбор в природе
1.2 Представление объектов. Кодирование признаков
1.3 Основные генетические операторы
1.4 Схема функционирования генетического алгоритма
Вывод
Глава 2. Задачи оптимизации
2.1 Задачи, решаемые с помощью генетических алгоритмов
2.2 Математическая постановка задачи оптимизации
2.3 Решение Диофантова уравнения
2.4 Пути решения задач оптимизации
2.5 Задача коммивояжера
Вывод
Глава 3. Программная реализация. Создание пособия по генетическим алгоритмам
3.1 Обоснование выбора программного обеспечения
3.2 Описание программной реализации
Заключение
Библиография

Прикрепленные файлы: 1 файл

нургуль ген.doc

— 318.00 Кб (Скачать документ)

Рассмотрим функционирование этого оператора

Хромосома_1:

0000000000

Хромосома_2:

1111111111


Допустим, разрыв происходит после 3-го бита хромосомы, тогда получаем.

 

Хромосома_1:

0000000000

>>

000

1111111

Результирующая хромосома 1

Хромосома_2:

1111111111

>>

111

0000000

Результирующая хромосома 2


 

Итак, рассмотрим все  же операторы по порядку:

1) кроссинговер - создание  структуры, основанной на двух  структурах - заменой одной части  первой структуры на ту же область во второй.

Пример: из (A, B, C, D, E) и (a, b, c, d, e) получится (A, B, c, d, E).

Затем с вероятностью 0,5 определяется одна из результирующих хромосом в качестве потомка.

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

000

1111111

>>

1111111

000


 

2) инверсия - перестановка  в структуре некоторой ее части  наоборот 

Пример: из (1, 1, 0, 1, 0, 0, 1, 0) получится (1, 1, 0, 0, 1, 0, 1, 0).

3) мутация - замена  в структуре одного из значений  случайно выбранной компоненты 

Пример: из (1, 1, 0, 1, 0, 0, 1, 0) получится (1, 1, 0, 1, 1, 0, 1, 0).

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

 

1.4. Схема функционирования  генетического алгоритма

 

Теперь, зная как интерпретировать значения генов, перейдем к описанию функционирования генетического алгоритма. Рассмотрим схему функционирования генетического алгоритма в его классическом варианте.

Инициировать начальный  момент времени t=0 . Случайным образом  сформировать начальную популяцию, состоящую из k особей. 

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

  1. Выбрать особь  из популяции. 
  2. С определенной вероятностью (вероятностью кроссовера ) выбрать вторую особь из популяции и произвести оператор кроссовера.
  3. С определенной вероятностью (вероятностью мутации) выполнить оператор мутации.
  4. С определенной вероятностью (вероятностью инверсии ) выполнить оператор инверсии.
  5. Поместить полученную хромосому в новую популяцию
  6. Выполнить операции, начиная с пункта 3, k раз.
  7. Увеличить номер текущей эпохи t=t+1.
  8. Если выполнилось условие остановки, то завершить работу, иначе переход на шаг 2 [13].

Распишем более подробно следующие этапы:

1. Выбор родительской  пары .

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

Второй способ выбора особей в родительскую пару - так  называемый селективный. Его суть состоит  в том, что "родителями" могут  стать только те особи, значение приспособленности которых не меньше среднего значения приспособленности по популяции, при равной вероятности таких кандидатов составить брачную пару. Такой подход обеспечивает более быструю сходимость алгоритма. Однако из-за быстрой сходимости селективный выбор родительской пары не подходит тогда, когда ставиться задача определения нескольких экстремумов, поскольку для таких задач алгоритм, как правило, быстро сходится к одному из решений. Кроме того, для некоторого класса задач со сложным ландшафтом приспособленности быстрая сходимость может превратиться в преждевременную сходимость к квазиоптимальному решению. Этот недостаток может быть отчасти компенсирован использованием подходящего механизма отбора (о чем будет сказано ниже), который бы "тормозил" слишком быструю сходимость алгоритма.

Другие два способа  формирования родительской пары, на которые  хотелось бы обратить внимание, это  инбридинг и аутбридинг. Оба эти  метода построены на формировании пары на основе близкого и дальнего "родства" соответственно. Под "родством" здесь понимается расстояние между членами популяции как в смысле геометрического расстояния особей в пространстве параметров. В связи с этим будем различать генотипный и фенотипный (или географический) инбридинг и аутбридинг. Под инбридингом понимается такой метод, когда первый член пары выбирается случайно, а вторым с большей вероятностью будет максимально близкая к нему особь. Аутбридинг же, наоборот, формирует брачные пары из максимально далеких особей. Использование генетических инбридинга и аутбридинга оказалось более эффективным по сравнению с географическим для всех тестовых функций при различных параметрах алгоритма. Наиболее полезно применение обоих представленных методов для многоэкстремальных задач [14]. Однако два этих способа по-разному влияют на поведение генетического алгоритма. Так инбридинг можно охарактеризовать свойством концентрации поиска в локальных узлах, что фактически приводит к разбиению популяции на отдельные локальные группы вокруг подозрительных на экстремум участков ландшафта, напротив аутбридинг как раз направлен на предупреждение сходимости алгоритма к уже найденным решениям, заставляя алгоритм просматривать новые, неисследованные области.

2. Механизм отбора 

Обсуждение вопроса  о влиянии метода создания родительских пар на поведение генетического алгоритма невозможно вести в отрыве от реализуемого механизма отбора при формировании нового поколения. Наиболее эффективные два механизма отбора элитный и отбор с вытеснением.

Идея элитного отбора, в общем, не нова, этот метод основан на построении новой популяции только из лучших особей репродукционной группы, объединяющей в себе родителей, их потомков и мутантов. В основном это объясняют потенциальной опасностью преждевременной сходимости, отдавая предпочтение пропорциональному отбору. Быстрая сходимость, обеспечиваемая элитным отбором, может быть, когда это необходимо, с успехом компенсирована подходящим методом выбора родительских пар, например аутбридингом. Именно такая комбинация "аутбридинг - элитный отбор" является одной из наиболее эффективной. Второй метод, на котором хотелось бы остановиться, это отбор вытеснением. Будет ли особь из репродукционной группы заноситься в популяцию нового поколения, определяется не только величиной ее приспособленности, но и тем, есть ли уже в формируемой популяции следующего поколения особь с аналогичным хромосомным набором. Из всех особей с одинаковыми генотипами предпочтение сначала, конечно же, отдается тем, чья приспособленность выше. Таким образом, достигаются две цели: во-первых, не теряются лучшие найденные решения, обладающие различными хромосомными наборами, а во-вторых, в популяции постоянно поддерживается достаточное генетическое разнообразие. Вытеснение в данном случае формирует новую популяцию скорее из далеко расположенных особей, вместо особей, группирующихся около текущего найденного решения. Этот метод особенно хорошо себя показал при решении многоэкстремальных задач, при этом помимо определения глобальных экстремумов появляется возможность выделить и те локальные максимумы, значения которых близки к глобальным.

 

Вывод

 

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

 Как и в вопросе о нейронных  сетях, здесь нельзя ответить  однозначно. С одной стороны, в  математике существует достаточно  большой класс абсолютно надежных (в смысле гарантии получения точного решения) методов решения различных задач. С другой стороны, речь идет о действительно сложных практических задачах, в которых эти надежные методы часто неприменимы. Нередко эти задачи выглядят настолько необозримыми, что не предпринимается даже попыток их осмысленного решения.[15]

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

Генетические алгоритмы — реализация одной из наиболее популярных идей такого рода. Эта популярность вызвана, по-видимому, исключительной красотой подхода и его близостью к природному механизму. Подобным образом популярность нейросетевой технологии подогревается во многом ее сходством с работой мозга. По-настоящему активное развитие эвристических подходов непосредственно связано с развитием свободного рынка и экономики в целом.

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

 

ГЛАВА 2. ЗАДАЧИ ОПТИМИЗАЦИИ.

 

2.1  Задачи, решаемые с помощью генетических алгоритмов

 

Теперь мы с вами понимаем, на чем основаны принципы работы генетических алгоритмов. Но для решения каких задач реализуются эти алгоритмы? Итак, в этой главе нами будут рассмотрены задачи оптимизации, их математическая постановка и пути решения. Так же нами будут рассмотрены решение Диофантова уравнения и задачи коммивояжера.

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

2.2 Математическая постановка задачи оптимизации

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

Нельзя отождествлять  критерий (критерии) оптимальности  и целевую функцию.

Целевая функция –  это аналитическая зависимость  между критерием (критериями) оптимальности и подлежащими оптимизации параметрами с указанием направления экстремума.

Отличие понятий «критерий» и «целевая функция» состоит в  следующем:

    1. Целевая функция может включать в себя более одного критерия.
    2. Для целевой функции всегда и обязательно указывается вид экстремума:

Различают два вида задач  оптимизации:

    • Задачу минимизации.
    • Задачу максимизации.

Чтобы решить задачу минимизации  функции  на множестве, необходимо найти такой вектор ( а также соответствующее значение целевой функции), чтобы неравенство: выполнялось для всех. При этом называют оптимальным решением (точнее здесь – минимальным решением), а - оптимумом (минимумом).

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

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

 

2.3 Решение Диофантова  уравнения

 

Рассмотрим Диофантово (только целые решения) уравнение: a+2b+3c+4d=30, где a, b, c и d - некоторые положительные целые. Применение ГА за очень короткое время находит искомое решение (a, b, c, d).

Информация о работе Генетические алгоритмы