Определение понятия и история создания генетических алгоритмов в решении оптимизационных задач. Анализ их конкурентоспособности при решении NP-трудных задач в сравнении с динамическим и линейным программированием. Схема работы и пример алгоритма.
Аннотация к работе
Генетический алгоритм (англ. genetic algorithm) - это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путем случайного подбора, комбинирования и вариации искомых параметров с использованием механизмов, напоминающих биологическую эволюцию. Отличительной особенностью генетического алгоритма является акцент на использование оператора «скрещивания», который производит операцию рекомбинации решений-кандидатов, роль которой аналогична роли скрещивания в живой природе. Генетический алгоритм (ГА) разработан Джоном Голландом (John Holland) в 1975 году в Мичиганском университете. DEJONG) первым обратил внимание на важность настройки параметров ГА для общей эффективности работы и предложил свой оптимальный вариант подбора параметров, который послужил основой для всех дальнейших исследований. Генетический алгоритм был получен в процессе обобщения и имитации в искусственных системах таких свойств живой природы, как естественный отбор, приспособляемость к изменяющимся условиям среды, наследование потомками жизненно важных свойств от родителей и т.д.«Отцом-основателем» генетических алгоритмов считается Джон Холланд (en:John Henry Holland), книга которого «Адаптация в естественных и искусственных системах» (1975)[1] является основополагающим трудом в этой области исследований. Идея генетических алгоритмов заимствована у живой природы и состоит в организации эволюционного процесса, конечной целью которого является получение оптимального решения в сложной комбинаторной задаче. На сегодняшний день генетические алгоритмы доказали свою конкурентноспособность при решении многих NP-трудных задач и особенно в практических приложениях, где математические модели имеют сложную структуру и применение стандартных методов типа ветвей и границ, динамического или линейного программирования крайне затруднено. Как мы увидим ниже, выбор начальной популяции не имеет значения для сходимости процесса в асимптотике, однако формирование "хорошей" начальной популяции (например из множества локальных оптимумов) может заметно сократить время достижения глобального оптимума. Затем решение добавляется в популяцию, а решение с наименьшим значением целевойфункции удаляется из популяции.Задача формализуется таким образом, чтобы ее решение могло быть закодировано в виде вектора («генотипа») генов. Они оцениваются с использованием «функции приспособленности», в результате чего с каждым генотипом ассоциируется определенное значение («приспособленность»), которое определяет насколько хорошо фенотип им описываемый решает поставленную задачу. Из полученного множества решений («поколения») с учетом значения «приспособленности» выбираются решения (обычно лучшие особи имеют большую вероятность быть выбранными), к которым применяются «генетические операторы» (в большинстве случаев «скрещивание» - crossover и «мутация» - mutation), результатом чего является получение новых решений. Для них также вычисляется значение приспособленности, и затем производится отбор («селекция») лучших решений в следующее поколение. генетический алгоритм оптимизационный программирование Этот набор действий повторяется итеративно, так моделируется «эволюционный процесс», продолжающийся несколько жизненных циклов (поколений), пока не будет выполнен критерий остановки алгоритма.Перед первым шагом нужно случайным образом создать начальную популяцию; даже если она окажется совершенно неконкурентоспособной, генетический алгоритм все равно достаточно быстро переведет ее в жизнеспособную популяцию. Таким образом, на первом шаге можно особенно не стараться сделать слишком уж приспособленных особей, достаточно, чтобы они соответствовали формату особей популяции, и на них можно было подсчитать функцию приспособленности (Fitness). Итогом первого шага является популяция H, состоящая из N особей.К мутациям относится все то же самое, что и к размножению: есть некоторая доля мутантов m, являющаяся параметром генетического алгоритма, и на шаге мутаций нужно выбрать MN особей, а затем изменить их в соответствии с заранее определенными операциями мутации.На этапе отбора нужно из всей популяции выбрать определенную ее долю, которая останется «в живых» на этом этапе эволюции. Вероятность выживания особи h должна зависеть от значения функции приспособленности Fitness(h).Алгоритмы и параметры этих методов значительно меньше детерминированы по сравнению с традиционными. Например, продажи в декабре, как правило, больше, чем в ноябре, но нет формулы, по которой можно посчитать, насколько они будут больше в этом году; для прогнозирования объема продаж можно обучить нейронную сеть на примерах предыдущих лет. В прогнозировании нейронные сети используются чаще всего по простейшей схеме: в качестве входных данных в сеть подается предварительно обработанная информация о значениях прогнозируемого параметра за несколько предыдущих периодов, на выходе сеть выдает прогноз на следующие периоды - как в вышеупомянутом примере с продажами.