В целом
Генетические алгоритмы хорошо подходят для решения проблем, включающих составление расписания и составление графиков. Они также применяются в инженерном деле. Они часто используются для решения проблем глобальной оптимизации.
Как правило, генетические алгоритмы могут быть полезны в проблемных областях со сложным ландшафтом пригодности, поскольку смешивание предназначено для перемещения популяции от локальных оптимумов, в которых может застрять традиционный алгоритм подъема на холм. Обычно используемые операторы кроссинговера не могут изменить однородную популяцию. Только мутация может обеспечить эргодичность общего процесса генетического алгоритма (рассматриваемого как цепь Маркова).
Примеры задач, решаемых генетическими алгоритмами, включают: зеркала, предназначенные для воронки солнечного света в солнечный коллектор, антенны, предназначенные для приема радиосигналов в космосе, методы ходьбы для компьютерных фигур, оптимальное проектирование аэродинамических тел в сложных полях обтекания.
В своем руководстве по проектированию алгоритмов Скиена не советует использовать генетические алгоритмы для решения любых задач: "Довольно неестественно моделировать приложения в терминах генетических операторов, таких как мутация и кроссинговер на битовых строках. Псевдобиология добавляет еще один уровень сложности между вами и вашей проблемой". Во-вторых, генетические алгоритмы занимают очень много времени при решении нетривиальных задач. [...] Аналогия с эволюцией, где значительный прогресс требует [sic] миллионов лет, может быть вполне уместной. [...] Я никогда не сталкивался с проблемой, для решения которой генетические алгоритмы казались бы мне подходящим способом. Более того, я никогда не видел результатов вычислений с использованием генетических алгоритмов, которые произвели бы на меня благоприятное впечатление. Придерживайтесь моделированного отжига для эвристического поиска".
Настольные игры
Настольные игры являются очень актуальной частью области генетических алгоритмов в применении к проблемам теории игр. Большая часть ранних работ по вычислительному интеллекту и играм была направлена на классические настольные игры, такие как крестики-нолики,[3] шахматы и шашки.[4] В настоящее время в большинстве случаев настольные игры могут быть сыграны компьютером на более высоком уровне, чем лучшие люди, даже при использовании методов слепого исчерпывающего поиска. Го - заметное исключение из этой тенденции, и до сих пор она не поддавалась машинным атакам. Лучшие компьютерные игроки в го сейчас играют на уровне хорошего новичка.[5][6] Считается, что стратегия го в значительной степени опирается на распознавание образов, а не только на логический анализ, как в шахматах и других более независимых от фигур играх. Огромный эффективный коэффициент разветвления, необходимый для поиска качественных решений, сильно ограничивает возможности поиска последовательности ходов с опережением.
Компьютерные игры
Генетический алгоритм может быть использован в компьютерных играх для создания искусственного интеллекта (компьютер играет против вас). Это позволяет получить более реалистичный игровой опыт; если человек-игрок может найти последовательность шагов, которая всегда приводит к успеху, даже при повторении в разных играх, в игре не может остаться никаких сложностей. И наоборот, если техника обучения, например, генетический алгоритм для стратега, может избежать повторения прошлых ошибок, игра будет более играбельной.
Генетические алгоритмы состоят из следующих частей:
- Метод представления задачи в терминах решения (например, маршрутизация солдат в атаке в стратегической игре)
- Подходящая или оценочная функция для определения качества экземпляра (например, измерение ущерба, нанесенного противнику при такой атаке).
Функция пригодности принимает мутировавшую инстанцию сущности и измеряет ее качество. Эта функция настраивается в зависимости от проблемной области. Во многих случаях, особенно при оптимизации кода, фитнес-функция может быть просто функцией синхронизации системы. После определения генетического представления и функции пригодности генетический алгоритм создает начальные кандидаты, как описано выше, а затем улучшает их путем повторного применения операторов мутации, кроссовера, инверсии и отбора (как определено в соответствии с проблемной областью).