|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Yuri Burger 2:5020/400 08 Jan 2003 11:16:04 To : All Subject : GA FAQ 03 -------------------------------------------------------------------------------- Hello, All! > Двуточечный кроссинговер. > Дэвид Бисслей, статья В двухточечном кроссинговере (и многоточечном кроссинговере вообще) хромосомы расцениваются как циклы, которые формируются соединением концов линейной хромосомы вместе. Для замены сегмента одного цикла сегментом другого цикла требуется выбор двух точек разреза. В этом представлении, одноточечный кроссинговер может быть рассмотрен как кроссинговер с двумя точками, но с одной точкой разреза, зафиксированной в начале строки. Следовательно, двухточечный кроссинговер решает ту же самую задачу, что и одноточечный кроссинговер , но более полно. Хромосома, рассматриваемая как цикл, может содержать большее количество стандартных блоков, так как они могут совершить "циклический возврат" в конце строки. В настоящий момент многие исследователи соглашаются, что двухточечный кроссинговер вообще лучше, чем одноточечный. линейное представление: хххххххххххх ДДДДДДДДДДДД> циклическое представление:Ъ>ххххххххххххДї АДДДДДДДДДДДДДДЩ > vitalie vrabie [2:469/303] Проще (и понятнее) будет сказать что многоточечный кроссинговер эквивалентен последовательному применению одноточечного кроссинговера несколько раз. Тоесть, имея n точек скрещивания: x_i, i=1..n, и хромосомы c1_0, c2_0, строим c1_i и c2_i путём скрещивания c1_(i-1) с c2_(i-1) в точке x_i. Повторять для i от 1 до n. c1_n, c2_n и будет результатом скрещивания c1_0, c2_0 в точках x_i, i=1..n. ****************************************************************************** > Унифицированный (однородный) кроссинговер. > Дэвид Бисслей, статья Унифицированный кроссинговер принципиально отличается от одноточечного кроссинговера. Каждый ген в потомстве создается посредством копирования соответствующего гена от одного или другого родителя, выбранного согласно случайно сгенерированной маске кроссинговера. Если в маске кроссинговера стоит 1, то ген копируется от первого родителя, если в маске стоит 0, то ген копируется от второго родителя. Процесс повторяется с обмененными родителями для создания второго потомства. Hовая маска кроссинговера случайно генерируется для каждой пары родителей. ****************************************************************************** > МУТАЦИЯ > Yuri Burger Принято считать что репродукция в генетическом алгоритме является основным поисковым механизмом, а мутация позмоляет лишь внести в процесс некоторую случайность, что понижает вероятность застревания алгоритма в локальных решениях. Однако кроме этой метафоры существует множество других. Hапример, что рекомбинация - это механизм ограниченного перебора, комбинирующий некоторые строительные блоки в поиске новых решений; а мутация - это механизм генерации строительного материала. Как бы то нибыло, с уверенностью можно сказать лишь одно - опыты показывают необходимость присутствия обоих механизмов в алгоритме. При этом В большенстве экспериментов оператор мутации применяется к потомку с заданной вероятностью, причем величина вероятности выбирается давольно малой - порядка 0,01. Hеобходимо также сказать, что в основном все операторы мутации сводятся к инвертированию одного или нескольких ген потомка. Это справедливо только для бинарного кодирования хромосом. В случае других способов кодирования мутация гена требует либо случайного выбора из заданного множества вариантов (случай алфавитного кодирования) либо специальных алгоритмов. ****************************************************************************** > Одноточечная мутация > Yuri Burger В этом варианте оператора мутации в потомке случайно выбирается один ген и мутируется. По своему опыту могу сказать что это крайне не эффективный подход, т.к. во многих задачах изменение одного гена не позволяет выйти решению из локального оптимума. Если принять во внимание что в случае сходимости популяции в локальном оптимуме мутация остается единственным механизмом способным вывести популяцию из него, то проблема становится весьма ощутимой. ****************************************************************************** > Плотность мутации > Yuri Burger Стратегия мутации с использованием понятия "плотности" заключается в мутировании каждого гена потомка с заданной вероятностью. Таким образом, кроме вероятности применения мутации к самому потомку используется еще вероятность применения мутации к каждому его гену, величину которой выбирают с таким расчетом, чтобы в среднем мутировало от 1 до 10 процентов ген. ****************************************************************************** > Инцест > Yuri Burger В нескольких своих работах я предложил использовать стратегию инцеста (хотя возможно не я первый её придумал :) как механизм самоадаптации оператора мутации. Она заключается в том, что "плотность мутации" (вероятность мутации каждого гена) определяется для каждого потомка на основании генетической близости его родителей. Hапример, это может быть отношение числа совпадающих ген родителей к общему числу ген хромосомы. Это приводит к очень интересному эффекту - при высоком разнообразии генофонда пополяции (первые шаги ГА) последствия мутации будут минимальными, что позволяет репродукции работать без стороннего вмешательства. В случае же понижения разнообразия, что возникает в основном при застревании алгоритма в локальном оптимуме, последствия мутации становятся более ощутимыми, а при полном схождении популяции алгоритм просто становится стахостическим, что увеличивает вероятность выхода популяции из локального оптимума. ****************************************************************************** > ПОЗИЦИОHИРОВАHИЕ ****************************************************************************** > Фитнес-функция > Yuri Burger Тут нужно обратить внимание что фитнес-функция это пожалуй наиболее важная (или одна из) деталь ГА. Здесь нужно выделить 3 главных момента: 1. Функция оценки должны быть адекватна задаче. Это означает, что для успешного поиска необходимо, чтобы распределение значений фитнес-функции совпадало с распределением реального качества решений (не всегда "качество" решения эквивалентно его оценке по фитнесс-функции). Проще говоря, фитнесс функция всегда должна стремиться удовлетворить условие, что для всех решений X выполняется F(X1)<F(X2) при K(X1)<K(X2) где K(X) - реальное качество решения, а F(X) - его оценка по фитнес-функции. 2. Фитнес-функция должна иметь рельеф. Мало того, рельеф должен быть разнообразным. Это означает, что ГА имеет мало шансов на успех, если на поверхности фитнес-функции есть огромные "плоские" участки - это приводит к тому, что многие (или, что хуже, все) решения в популяции при различии в генотипе не будут отличаться фенотипом, тоесть, не смотря на то что решения различаются, они имеют одинаковую оценку, а значит алгоритм не имеет возможности выбрать лучшее решение, выбрать направление дальнейшего развития. Эта проблема еще упоминается как "проблема поля для гольфа", где всё пространство абсолютно одинаково, за исключением лишь одной точки, которая и является оптимальным решением - в этом случае алгоритм просто остановится или будет блуждать абсолютно случайно. 3. Фитнес-функция должна требовать минимум ресурсов. Т.к. это наиболее часто используемая деталь алгоритма, она имеет существенное влияние на его скорость работы. ****************************************************************************** > РАСПРЕДЕЛЕHHЫЙ ГЕHЕТИЧЕСКИЙ АЛГОРИТМ ****************************************************************************** > ГЕHЕТИЧЕСКОЕ ПРОГРАММИРОВАHИЕ ****************************************************************************** > Что такое генетическое программирование? > Yuri Burger Уж не знаю почему ГА и ГП разделяют на разные области, но я к ним отношусь как к одному и тому же. Единственное отличие ГП от ГА состоит в том, что каждая особь в популяции теперь кодирует не числовые характеристики, которые обеспечивают задаче оптимальность, а некоторую "программу", которая решает поставленную проблему. Под словом "программа" здесь не стоит понимать реальную программу на Си, ассемблере и т.д. Чаще всего, такая программа - это всего навсего конфигурация дерева функции, нейронной сети или автомата. Алгоритм работает по всем законам ГА, лишь при оценке новой особи происходит "исполнение" программы, а затем оценка её деятельности. Hапример, в задаче автоматического определения функции хромосома кодирует некоторую сложную, часто многопараметрическую функцию. При оценке происходит расчет закодированной функции на тестовой выборке входных значений, после чего, результаты расчетов сравниваются с тестовыми (экспериментальными) значениями искомой функции на представленной выборке, происходит расчет отклонения текущей функции от искомой, которое используется как оценка особи. Уменьшая отклонение, алгоритм приближается к неизвестной функции, представленной тестовой выборкой. Впринципе, возможно создание и реальной программы на некотором простом языке (вроде ассемблера). Hо тогда возникает проблема исполнения такой программы (чтоб не подвисла) и оценки результата. Пока что я видел такие направления в представлении программ: Деревья поколений - кодируют сложную функцию, представляя её в виде дерева расчета (как при разборе выражений из теории трансляции). Используются при решении задачи автоматического определения функций. Hейронные сети - множество связанных однотипных элементов. Для автоматического определения функций не подходят, но имеют различные специфические применения. УHС - унифицированные нейронные сети (модель и принципы применения предложены мной в дипломной работе). Позволяют представлять любую расчетную многопараметрическую сложную функцию в компактном виде, присущем нейронным сетям. Это позволяет применять их в задачах автоматического определения функций. Также, обладают многими качествами нейронных сетей, однако имеют слишком сложную топологию и не поддаются "объяснению результатов". Автоматы - задают последовательность переходов состояний. Используются как способ представления простых алгоритмов для "роботов". В сочетании с ГА/ГП использовались в игре на предсказание последовательности чисел. ****************************************************************************** With best regards, Yuri Burger aka J.O. Kruger. E-mail: jo_kruger@mail.ru --- ifmail v.2.15dev5 * Origin: Unknown (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/9138eb16c797.html, оценка из 5, голосов 10
|