Генетический алгоритм
Отбор → кроссовер → мутация: эволюция без градиентов.
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] ^= 123 next.push(child)24 }25 pop = next26 }27 28 return pop.sort((a, b) => fitness(b) - fitness(a))[0]!29}Проблема
Отбор → кроссовер → мутация: эволюция без градиентов.
Что вы видите
Популяция битовых строк; фитнес решает, кто оставит потомков.
Как это работает
Хорош там, где нет градиента и гладкости: комбинаторные пространства. Мутация поддерживает разнообразие, кроссовер комбинирует удачные блоки.
Пошаговый разбор
- 01
Фитнес
Кто выживает.
- 02
Кроссовер
Обмен кусками.
- 03
Мутация
Бит переворачивается.
Complexity и ограничения
Сложность см. в шапке страницы.
Edge cases
- Пустой вход
Корректная тривиальная обработка.
- Вырожденный случай
Минимум работы — сразу ответ.
Где встречается в реальности
Гиперпараметры
NAS и AutoML.
Антенны
NASA-эволюция 2006.
Туры
Аппроксимация TSP.
Связанные алгоритмы
«Эволюция решает то, что не дифференцируется»
Тот же сценарий StepSequence в вертикальной композиции — с safe zones и записью WebM ниже на странице.
Shorts 9:16
Вертикальная композиция строится той же последовательностью шагов, что и страница: safe zones отмечены пунктиром (там живёт UI платформ), биты сценария подсвечиваются по прогрессу. Кнопка записи сохраняет WebM — детерминированная StepSequence даёт воспроизводимый ролик без монтажа.