Применение генетических алгоритмов

Автор работы: Пользователь скрыл имя, 07 Декабря 2011 в 18:47, курсовая работа

Описание

Целью данной курсовой работы является разработка программы, использующей генетический алгоритм.
Задачи:
1. проанализировать возможности генетических алгоритмов;
2. изучить особенности генетических алгоритмов;
3. создание программы с использованием генетического алгоритма.

Содержание

Теоретическая часть.......................................................................................3
Введение…………………………………………………………….……….3
Раздел I. Основные понятия генетического алгоритма…………..…….....7
1. 1. Классический генетический алгоритм……………………..…………7
1. 2. Алгоритм работы……………………………………………….…….10
1.3. Шимы, теорема шим……………………………………………..…...13
Раздел II. Модели генетических алгоритмов.............................................20
2. 1. Настройка генетических алгоритмов………………………….……20
2. 2. Модели генетических алгоритмов......................................................21
Раздел III. Применение генетических алгоритмов....................................30
3. 1. Применение генетических алгоритмов..............................................30
3. 2. Перспективные направления развития нейрокомпьютерных технологий..............................................................................................................32
Выводы………………………………………………………………….….36
Практическая часть......................................................................................39
Литература………………………………………………………………....47

Работа состоит из  1 файл

Курсовая - Применение генетических алгоритмов.doc

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

         Отбор особи для замены производится  по ее ранку (рейтингу), а не  по приспособленности.

     Утверждается (Syswerda, 1991), что в Genitor поиск гиперплоскостей происходит лучше, а сходимость быстрее, чем у классического ГА[21].

     CHC

     CHC расшифровывается как Cross generational elitist selection, Heterogenous recombination, Cataclysmic mutation. Этот алгоритм был создан Eshelman (1991) и характеризуется следующими параметрами:

         Для нового поколения выбираются N лучших различных особей среди  родителей и детей. Дублирование  строк не допускается.

         Для скрещивания выбирается случайная  пара, но не допускается, чтобы  между родителями было мало Хэммингово расстояние или мало расстояние между крайними различающимися битами.

         Для скрещивания используется  разновидность однородного кроссовера HUX (Half Uniform Crossover): ребенку переходит  ровно половина битов каждого  родителя.

         Размер популяции небольшой, около 50 особей. Этим оправдано использование однородного кроссовера.

         CHC противопоставляет агрессивный  отбор агрессивному кроссоверу, однако все равно малый размер  популяции быстро приводит ее  к состоянию, когда создаются  только более или менее одинаковые строки. В таком случае CHC применяет cataclysmic mutation: все строки, кроме самой приспособленной, подвергаются сильной мутации (изменяется около трети битов). Таким образом, алгоритм перезапускается и далее продолжает работу, применяя только кроссовер[7;195].

     Hybrid Algorithms

     Идея  гибридных алгоритмов (hybrid algorithms) заключается  в сочетании генетического алгоритма  с некоторым другим методом поиска, подходящим в данной задаче (зачастую это бывает hill-climbing). На каждом поколении каждый полученный потомок оптимизируется этим методом, после чего производятся обычные для ГА действия. При использовании hill-climbing получается, что каждая особь достигает локального максимума, вблизи которого она находится, после чего подвергается отбору, скрещиванию и мутации.

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

     Генетический  алгоритм способен быстро найти во всей области поиска хорошие решения, но он может испытывать трудности  в получении из них наилучших. Такой метод, как hill-climbing быстро достигает  локального максимума, однако не может искать глобальный. Сочетание этих двух алгоритмов способно использовать преимущества обоих.

     Параллельные  ГА

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

     Сделаем из классического ГА параллельный. Для этого будем использовать турнирный отбор. Заведем N ⁄ 2 процессов (здесь и далее процесс подразумевается  как некоторая машина, процессор, который может работать независимо) [15;175]. Каждый из них будет выбирать случайно из популяции 4 особи, проводить 2 турнира, и победителей скрещивать. Полученные дети будут записываться в новое поколение. Таким образом, за один цикл работы одного процесса будет сменяться целое поколение.

     Island Models

     Островная модель (island model) — это тоже модель параллельного генетического алгоритма. Она заключается в следующем: пусть у нас есть 16 процессов  и 1600 особей. Разобьем их на 16 подпопуляций по 100 особей. Каждая их них будет развиваться отдельно с помощью некого генетического алгоритма. Таким образом, можно сказать, что мы расселили особи по 16-ти изолированным островам.

     Изредка (например, каждые 5 поколений) процессы (или острова) будут обмениваться несколькими хорошими особями. Это называется миграция. Она позволяет островам обмениваться генетическим материалом[15;183].

     Островная модель

     

     Так как населенность островов обычно бывает невелика, подпопуляции будут склонны к преждевременной сходимости. Поэтому важно правильно установить частоту миграции. Чересчур частая миграция (или миграция слишком большого числа особей) приведет к смешению всех подпопуляций, и тогда островная модель будет несильно отличаться от обычного ГА. Если же миграция будет слишком редкой, то она не сможет предотвратить преждевременного схождения подпопуляций.

     Генетические  алгоритмы стохастичны, поэтому  при разных его запусках популяция может сходиться к разным решениям (хотя все они в некоторой степени «хорошие»). Островная модель позволяет запустить алгоритм сразу несколько раз и пытаться совмещать «достижения» разных островов для получения в одной из подпопуляций наилучшего решения[10;198].

     Cellular Genetic Algorithms

     Cellular Genetic Algorithms — модель параллельных ГА. Пусть дано 2500 процессов, расположенных на сетке размером 50×50 ячеек, замкнутой, как показано на рисунке (левая сторона замыкается с правой, верхняя с нижней, получается тор).

     Клеточная модель

     

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

     По  мере работы такого алгоритма возникают эффекты, похожие на островную модель. Сначала все особи имеют случайную приспособленность (на рисунке она определяется по цвету). Спустя несколько поколений образуются небольшие области похожих особей с близкой приспособленностью[17;235]. По мере работы алгоритма эти области растут и конкурируют между собой.

     Другие  модели

     До  сих пор мы рассматривали ГА с  фиксированными параметрами, такими как  размер популяции, длина строки, вероятность  кроссовера и мутации. Однако существуют генетические алгоритмы, в которых эти параметры могут изменяться и подстраиваться.

     К примеру, пусть вероятность мутации  для каждой особи будет отдельной. Можно добавить к строке особи  подстроку, кодирующую эту вероятность. При вычислении приспособленности  эта подстрока будет игнорироваться, но она будет подвергаться кроссоверу и мутации так же, как и остальная часть строки. Вероятность каждого бита данной особи быть инвертированным при мутации будет равна значению, кодируемому добавленной подстрокой[13;275]. Инициализируются вероятности мутации случайным образом.

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

 

      Раздел III. Применение генетических алгоритмов 

     3. 1. Применение генетических алгоритмов 

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

     Тем не менее, возможно наиболее популярное приложение генетических алгоритмов - оптимизация многопараметрических функций. Многие реальные задачи могут быть сформулированы как поиск оптимального значения, где значение - сложная функция, зависящая от некоторых входных параметров. В некоторых случаях, представляет интерес найти те значения параметров, при которых достигается наилучшее точное значение функции. В других случаях, точный оптимум не требуется - решением может считаться любое значение, которое лучше некоторой заданное величины. В этом случае, генетические алгоритмы - часто наиболее приемлемый метод для поиска "хороших" значений. Сила генетического алгоритма заключена в его способности манипулировать одновременно многими параметрами, эта особенность ГА использовалось в сотнях прикладных программ, включая проектирование самолетов, настройку параметров алгоритмов и поиску устойчивых состояний систем нелинейных дифференциальных уравнений[23].

     Однако  нередки случаи, когда ГА работает не так эффективно, как ожидалось.

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

     Если  же пространство поиска небольшое, то решение может быть найдено методом полного перебора, и можно быть уверенным, что наилучшее возможное решение найдено, тогда как ГА мог с большей вероятностью сойтись к локальному оптимуму, а не к глобально лучшему решению[18;325]. Если пространство гладкое и унимодальное любой градиентный алгоритм, такой как, метод скорейшего спуска будет более эффективен, чем ГА. Если о пространстве поиска есть некоторая дополнительная информация (как, например, пространство для хорошо известной задачи о коммивояжере), методы поиска, использующие эвристики, определяемые пространством, часто превосходят любой универсальный метод, каким является ГА. При достаточно сложном рельефе функции приспособленности методы поиска с единственным решением в каждый момент времени, такой как простой метод спуска, могли "затыкаться" в локальном решении, однако считается, что ГА, так как они работают с целой "популяцией" решений, имеют меньше шансов сойтись к локальному оптимуму и робастно функционируют на многоэкстремальном ландшафте.

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

      3. 2. Перспективные направления развития нейрокомпьютерных технологий 

      Детальный анализ зарубежных разработок нейрокомпьютеров позволил выделить основные перспективные направления современного развития нейрокомпьютерных технологий: нейропакеты, нейросетевые экспертные системы, СУБД с включением нейросетевых алгоритмов, обработка изображений, управление динамическими системами и обработка сигналов, управление финансовой деятельностью, оптические нейрокомпьютеры, виртуальная реальность. Сегодня разработками в этой области занимается более 300 зарубежных компаний, причем число их постоянно увеличивается. Среди них такие гиганты как Intel, DEC, IBM и Motorolla. Сегодня наблюдается тенденция перехода от программной эмуляции к программно-аппаратной реализации нейросетевых алгоритмов с резким увеличением числа разработок СБИС нейрочипов с нейросетевой архитектурой[19;227]. Резко возросло количество военных разработок, в основном направленных на создание сверхбыстрых, "умных" супервычислителей.

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

      В Японии с 1993 года принята программа "Real world computing program",. Ее основная цель - создание адаптивной, эволюционирующей ЭВМ. Проект рассчитан на 10 лет. Основой разработки является нейротехнология, используемая для распознавания образов, обработки семантической информации, управления информационными потоками и роботами, которые способны адаптироваться к окружающей обстановке. Только в 1996 году было проведено около сотни международных конференций по нейрокомпьютерам и смежным проблемам. Разработки нейрокомпьютеров ведутся во многих странах мира и даже в Австралии создан свой образец коммерческого супернейрокомпьютера.

Информация о работе Применение генетических алгоритмов