Модуль IV·Статья III·~3 мин чтения

Генетические алгоритмы и эволюционная оптимизация

Метаэвристики

Превратить статью в подкаст

Выберите голоса, формат и длину — AI запишет аудио

Генетические алгоритмы и эволюционная оптимизация

Эволюция как алгоритм оптимизации

Природная эволюция решила «задачу оптимизации» колоссальной сложности: создать существ, способных выживать в меняющейся среде. Механизм: случайные мутации, рекомбинация генов (кроссовер), естественный отбор. Генетические алгоритмы (GA) имитируют этот процесс для оптимизации. Вместо одной «частицы» в пространстве решений — целая «популяция», которая эволюционирует. Это обеспечивает глобальный поиск: разные особи исследуют разные части пространства.

Структура генетического алгоритма

Хромосома (особь): кодировка решения в виде вектора. Для TSP — перестановка городов. Для задачи рюкзака — бинарная строка.

Приспособленность (fitness): значение целевой функции. В GA обычно работаем с максимизацией, поэтому: fitness = −cost для задач минимизации.

Основной цикл GA:

  1. Инициализация: генерируем начальную популяцию P₀ из N случайных решений

  2. Оценка: вычисляем fitness(s) для каждого s ∈ P

  3. Отбор: выбираем «родителей» пропорционально приспособленности

    • Рулеточный отбор: P(выбрать s) = fitness(s) / Σ fitness. Аналог «вращения рулетки»
    • Турнирный отбор: случайно выбираем k особей, побеждает лучшая. Параметр k — «давление отбора»
  4. Кроссовер (скрещивание): создаём потомков из пары родителей

  5. Мутация: случайно изменяем некоторых потомков

  6. Замена: формируем новую популяцию из потомков (+ часть родителей)

  7. Повторяем до критерия остановки (поколения или время)

Операторы для TSP

Задача: хромосома = перестановка городов π = (π₁, π₂, ..., πₙ). Кроссовер должен давать корректные перестановки (каждый город ровно один раз).

Order Crossover (OX):

  1. Выбрать случайный отрезок [l, r] родителя P1
  2. Скопировать π₁[l..r] в потомка на те же позиции
  3. Оставшиеся позиции заполнить из P2 в порядке появления (пропуская уже включённые)

Пример: P1 = (1,2,3,4,5), P2 = (3,4,1,5,2), отрезок [2,4].

Потомок: ( _, 2, 3, 4, _ ). Из P2 в порядке 3,4,1,5,2, пропуская 2,3,4: берём 1, 5. Потомок = (1, 2, 3, 4, 5). (В данном случае без изменений, реальный пример сложнее.)

Мутация для TSP:

  • Swap: случайно поменять два города местами
  • Insertion: вырвать один город и вставить в другое место
  • Inversion (2-opt): обратить случайный подмаршрут

Вероятность мутации обычно мала: 0.01–0.05.

Теоретические основы: Schema Theorem

Шаблон (schema) H: строка из {0, 1, *}, где * — «дон't care» (любое значение). Например: H = (1, *, 0, *) описывает все строки, начинающиеся с 1 и имеющие 0 на 3-й позиции.

Порядок шаблона o(H) = число фиксированных позиций (не-*). Длина определяющего отрезка l(H) = расстояние между крайними фиксированными позициями.

Schema Theorem (Холланд): шаблон H, имеющий выше среднего приспособленность f̄(H) > f̄_pop (среднее по популяции), растёт экспоненциально в следующем поколении:

E[m(H, t+1)] ≥ m(H,t) · f̄(H)/f̄ · (1 − p_c · l(H)/(n−1)) · (1 − p_m)^{o(H)}

где m(H,t) — число особей шаблона H в момент t, p_c — вероятность кроссовера, p_m — мутации.

Интерпретация: «хорошие, короткие, старательные» шаблоны экспоненциально растут. Это основа теории «строительных блоков» (building blocks).

Memetic Algorithms (MA)

GA ищет «хорошие» области пространства, но «не дожимает» локально. Решение: Memetic Algorithm = GA + Local Search:

Для каждого потомка, полученного кроссовером/мутацией, запускаем локальный поиск (2-opt для TSP).

Результат: MA для TSP значительно лучше чистого GA или чистого LS:

  • Чистый GA: исследует пространство глобально, но решения не «доведены»
  • Чистый LS: застревает в локальных оптимумах
  • MA: глобальный поиск + локальная «полировка»

Пример: LKH (Lin-Kernighan-Helsgott) для TSP использует MA: GA для комбинирования хороших туров + LK для локального поиска. Лучший практический алгоритм для TSP.

NSGA-II: многокритериальная оптимизация

Часто нужно оптимизировать несколько конфликтующих критериев одновременно (стоимость vs. качество, риск vs. доходность). Нет единственного оптимума — есть фронт Парето: решения, в которых нельзя улучшить один критерий, не ухудшив другой.

NSGA-II (Non-dominated Sorting GA, Deb 2002): стандарт для многокритериальной GA-оптимизации.

Операторы отбора:

  • Non-domination rank: решения ранжируются по «уровню доминирования»: ранг 1 = не доминируется никем, ранг 2 = доминируется только рангом 1, и т.д.
  • Crowding distance: расстояние до соседей по фронту. Предпочитаем «менее населённые» зоны — разнообразие.

Применения NSGA-II: аэрокосмическая инженерия (оптимизация конструкций), химическая промышленность (оптимизация реакторов), финансы (фронт риск-доходность), электроника (схемотехническая оптимизация). Это индустриальный стандарт многокритериальной оптимизации.

§ Акт · что дальше