DEV//UNIT

Генетический алгоритм

Отбор → кроссовер → мутация: эволюция без градиентов.

время O(gen · pop² · len)память O(pop · len)уровень: средний
Что происходит сейчас0/0
Нажмите Play, чтобы запустить сценарий
TypeScript — активная строка подсвечена шагом
1function geneticAlgorithm(
2 popSize: number,
3 geneLen: number,
4 generations: number,
5 rng: () => number,
6) {
7 // фитнес: число единиц (цель — все единицы)
8 const fitness = (g: number[]) => g.reduce((s, b) => s + b, 0)
9
10 let pop = Array.from({ length: popSize }, () =>
11 Array.from({ length: geneLen }, () => (rng() < 0.5 ? 0 : 1)))
12
13 for (let gen = 0; gen < generations; gen++) {
14 pop.sort((a, b) => fitness(b) - fitness(a)) // отбор
15 const next: number[][] = []
16 while (next.length < popSize) {
17 const p1 = pop[tournament(pop, rng)]!
18 const p2 = pop[tournament(pop, rng)]!
19 const cut = Math.floor(rng() * geneLen) // кроссовер
20 const child = [...p1.slice(0, cut), ...p2.slice(cut)]
21 const i = Math.floor(rng() * geneLen) // мутация
22 child[i] ^= 1
23 next.push(child)
24 }
25 pop = next
26 }
27
28 return pop.sort((a, b) => fitness(b) - fitness(a))[0]!
29}

Проблема

Отбор → кроссовер → мутация: эволюция без градиентов.

Что вы видите

Популяция битовых строк; фитнес решает, кто оставит потомков.

Как это работает

Хорош там, где нет градиента и гладкости: комбинаторные пространства. Мутация поддерживает разнообразие, кроссовер комбинирует удачные блоки.

Пошаговый разбор

  1. 01

    Фитнес

    Кто выживает.

  2. 02

    Кроссовер

    Обмен кусками.

  3. 03

    Мутация

    Бит переворачивается.

Complexity и ограничения

time
O(gen · pop² · len)
space
O(pop · len)

Сложность см. в шапке страницы.

Edge cases

  • Пустой вход

    Корректная тривиальная обработка.

  • Вырожденный случай

    Минимум работы — сразу ответ.

Где встречается в реальности

Гиперпараметры

NAS и AutoML.

Антенны

NASA-эволюция 2006.

Туры

Аппроксимация TSP.

Связанные алгоритмы

Shorts

«Эволюция решает то, что не дифференцируется»

Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.

Shorts 9:16

Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.

Эволюция решает то, что не дифференцируется
Нажмите Play
Бит 1/6 · 0–2 с
Hook
script-setup.ru/algorithms/genetic