|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Yuri Burger 2:468/85.3 18 Oct 2001 22:25:15 To : All Subject : MildFAQ: 02/11 -------------------------------------------------------------------------------- [ю]ДДДДДДДД Begin 02 ДДДДДДД >Что такое генетический алгоритм? >(источник не известен) Генетические алгоритмы (ГА) представляют собой методы оптимизации, основанные на концепциях естественного отбора и генетики. В этом подходе, переменные представлены как гены на хромосоме. ГА показывают группу вариантов решения (популяции) на поверхности ответа. Через естественный отбор и генетические операторы, мутацию и рекомбинацию, отбираются хромосомы с лучшей пригодностью. Естественный отбор гарантирует, что хромосомы с лучшей пригодностью будут размножаться в будущих популяциях. Используя оператор рекомбинации, ГА объединяет гены родительских хромосом, чтобы сформировать новые хромосомы (детей), которые имеют высокую вероятность наличия лучшей пригодности, чем у их родителей. Мутация позволяет исследовать новые области поверхности. >Yuri Burger [2:468/85.3] Идею ГА подсказала сама природа и работы Дарвина. Делается предположение, что если взять 2 вполне хороших решения задачи и каким-либо образом получить из них новое решение, то будет высокая вероятность того, что новое решение получится хорошим или даже более лучшим. Для реализации этого используют моделирование эволюции (естественного отбора) или если проще - борьбы за выживание. В природе, по упрощенной схеме, каждое животное стремится выжить, что-бы оставить после себя как можно больше потомства. Выжить в таких условиях могут лишь сильнейшие. Тогда нам остается организовать некоторую среду - популяцию, населить её решениями - особями, и устроить им борьбу. Для этого нужно определить функцию, по которой будет определяться сила особи - качество предложенного ею решения. Основываясь на этом параметре можно определить каждой особи количество оставляемых ею потомков, или вероятность того, что эта особь оставит потомка. Причем, не исключен вариант, когда особь со слишком низким значением этого параметра умрёт. Допустим нам нужно оптимизировать некоторую функцию F(X1,X2,..,Xn). Пусть мы ищем её глобальный максимум. Тогда, для реализации ГА нам нужно придумать, как мы будем хранить решения. По сути, нам нужно поместить все X1-Xn в некоторый вектор, который будет играть роль хромосомы. Один из наиболее распространенных способов - кодировать значения переменных в битовом векторе. Hапример, выделим каждому иксу по 8 бит. Тогда наш вектор будет длины L=8*n. Для простоты будем считать, что биты лежат в массиве X[0..L-1]. Пусть каждая особь состоит из массива X и значения функции F на переменных, извлеченных из этого массива. Тогда ГА будет состоять из следующих шагов: 1. Генерация начальной популяции - заполнение популяции особями, в которых элементы массива X (биты) заполнены случайным образом. 2. Выбор родительской пары - я всегда использую элитный отбор, тоесть берем K особей с максимальными значениями функции F и составляю из них все возможные пары (K*(K-1)/2). 3. Кроссинговер - берем случайную точку t на массиве X (0..L-1). Теперь, все элементы массива с индексами 0-t новой особи (потомка) заполняем элементами с теми-же индексами, но из массива X первой родительской особи. Остальные элементы заполняются из массива второй родительской особи. Для второго потомка делается наоборот - элементы 0-t берут от второго потомка, а остальные - от первого. 4. Hовые особи с некоторой вероятностью мутируют - инвертируется случайный бит массива X этой особи. Вероятность мутации обычно полагают порядка 1%. 5. Полученные особи-потомки добавляются в популяцию после переоценки. Обычно новую особь добавляют взамен самой плохой старой особи, при условии что значение функции на новой особи выше значения функции на старой-плохой особи. 6. Если самое лучшее решение в популяции нас не удовлетворяет, то переход на шаг 2. Хотя, чаще всего этого условия нет, а итерации ГА выполняются бесконечно. Вообще, если строго придерживаться правилам, то ГА должен содержать еще такие шаги как отбор особей для размножения и генерация пар из отобранных особей. При этом каждая особь может быть задействована в одной и более паре, в зависимости от используемого алгоритма. Однако я предпочитаю эти два шага совмещать, используя построение пар "все на все" в элитной выборке. Имхо, так проще. ****************************************************************************** >Кто придумал генетический алгоритм? >(источник не известен) В 1966 г. Л.Дж.Фогель, А.Дж. Оуэнс, М.Дж.Волш предложили и исследовали эволюцию простых автоматов, предсказывающих символы в цифровых последовательностях. В 1975г. Д.Х.Холланд предложил схему генетического алгоритма. Эти работы легли в основу главных направлений разработки эволюционных алгоритмов. Простой генетический алгоритм был впервые описан Гольдбергом на основе работ Холланда. ****************************************************************************** >Преимущества генетических алгоритмов? >(источник не известен) - Они не требуют никакой информации о поверхности ответа; - Разрывы, существующие на поверхности ответа имеют незначительный эффект на полную эффективность оптимизации; - Они стойки к попаданию в локальные оптимумы; - Они хороше работают при решении крупномасштабных проблем оптимизации; - Могут быть использованы для широкого класса задач; - Просты и прозрачны в реализации; - Могут быть использованы в задачах с изменяющейся средой. ****************************************************************************** >Hедостатки генетических алгоритмов? >(источник не известен) Hе желательно и проблематично использовать ГА: - В случае когда необходимо найти точный глобальный оптимум; - Время исполнения функции оценки велико; - Hеобходимо найти все решения задачи, а не одно из них; - Конфигурация является не простой (кодирование решения). ******************************************************************************. [ю]ДДДДДДДД End 02 ДДДДДДД Kрюгер. --- * Origin: А хто тут есть, у кого есть за что поесть? (2:468/85.3) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/23173bcf56ef.html, оценка из 5, голосов 10
|