🧬 Диференційна Еволюція — Оптимізатор

Диференційна еволюція (DE/rand/1/bin): мутант v = x_r1 + F(x_r2 - x_r3), схрещування з частотою CR. Самоадаптивний варіант коригує F і CR. Тест на функціях Розенброка, Растригіна, Аклі.

АлгоритмиІнтерактивний
Популяція на контурному графіку · ▶ Грати · Крок · P=пауза · R=перезапуск

Як це працює

ДЕ підтримує популяцію з NP кандидатних векторів. У кожному поколінні для кожного цільового вектора x_i обираються три випадкові вектори x_r1, x_r2, x_r3. Мутант v = x_r1 + F·(x_r2 - x_r3). Двійкове схрещування створює пробний вектор u: кожен вимір береться з v з ймовірністю CR або з x_i інакше. Якщо f(u) <= f(x_i), u замінює x_i (жадібний відбір).

Мутація: v_i = x_r1 + F · (x_r2 − x_r3) Схрещування: u_ij = v_ij якщо rand() < CR або j==j_rand x_ij інакше Відбір: x_i(t+1) = u_i якщо f(u_i) <= f(x_i) x_i інакше Розенброк: f = (1−x)²+100(y−x²)² min=0 @ (1,1) Растригін: f = 20 + x²−10cos(2πx) + y²−10cos(2πy) Аклі: f = −20e^(−0.2√(x²+y²)/2) − e^(cos(2πx)+cos(2πy))/2 + 20+e

Контурний графік показує ландшафт функції (темніше=менше). Сині точки — популяція; червона зірка — найкращий розв'язок. Графік збіжності (праворуч) показує найкращу функцію на покоління у логарифмічному масштабі.

Часті запитання

Що таке Диференційна Еволюція (ДЕ)?

Диференційна еволюція — популяційний стохастичний алгоритм оптимізації Сторна і Прайса (1997). Він еволюціонує кандидатні рішення за допомогою мутації, схрещування і відбору без потреби в градієнтах.

Як працює мутація DE/rand/1/bin?

Три випадкові вектори x_r1, x_r2, x_r3 обираються з популяції. Вектор-мутант v = x_r1 + F·(x_r2 - x_r3), де F ∈ [0,2] — масштабний коефіцієнт мутації, що контролює крок пошуку.

Що таке операція схрещування в ДЕ?

При двійковому схрещуванні кожен вимір пробного вектора u береться з мутанта v з ймовірністю CR або з цільового x інакше. Принаймні один вимір завжди береться з мутанта.

Що таке параметри F і CR в ДЕ?

F (коефіцієнт мутації) контролює крок мутації, зазвичай F ∈ [0.4, 1.0]. CR (частота схрещування) — частка параметрів з мутанта, зазвичай CR ∈ [0.1, 0.9]. Вище CR = більше дослідження.

Що таке функція Розенброка?

f(x,y) = (1-x)² + 100(y-x²)² має вузьку зігнуту долину. Глобальний мінімум у (1,1) з f=0. Долину легко знайти, але мінімум важко локалізувати точно.

Що таке функція Растригіна?

Сильно мультимодальна функція: f(x,y) = 20 + x²-10cos(2πx) + y²-10cos(2πy). Глобальний мінімум в (0,0) з f=0. Тестує здатність до глобальної оптимізації.

Що таке функція Аклі?

Функція Аклі має майже плоску зовнішню область з глибоким глобальним мінімумом в (0,0). Перевіряє здатність алгоритму уникати передчасної збіжності до локальних оптимумів.

Як ДЕ порівнюється з іншими еволюційними алгоритмами?

ДЕ зазвичай перевершує генетичні алгоритми і рій частинок на безперервних тестах. Простіша, ніж CMA-ES, добре масштабується до ~100 вимірів. CMA-ES краща для дуже гладких задач великої розмірності.

Що таке самоадаптивна ДЕ (SaDE)?

Самоадаптивна ДЕ автоматично коригує F і CR під час оптимізації на основі їх успішності, усуваючи ручне налаштування. Успішні значення записуються і використовуються для генерації нових параметрів.

Коли слід використовувати Диференційну Еволюцію?

Використовуйте ДЕ для задач типу чорного ящика, недиференційовних, мультимодальних або зашумлених з неперервними змінними, зазвичай 5–50 вимірів. Добра для підбору параметрів і технічного проектування.

Про цю симуляцію

Ця симуляція виконує еволюційний цикл DE/rand/1/bin прямо в браузері: щопокоління кожен член популяції породжує мутанта з трьох випадково обраних інших векторів, змішує його з цільовим вектором через біноміальне схрещування і виживає лише якщо його придатність краща за оригінал. Спостерігайте, як точки популяції повзуть по контурній карті Rosenbrock, Rastrigin чи Ackley до червоної зірки, поки права панель малює найкращу придатність у логарифмічному масштабі.

🔬 Що показано

Жива популяція кандидатів (x, y), що збігається до глобального мінімуму обраної тестової функції; ландшафт придатності намальовано контуром від темного до світлого, а збіжність відстежується на графіку в логарифмічному масштабі.

🎮 Як користуватись

Оберіть функцію (Rosenbrock, Rastrigin, Ackley), налаштуйте повзунки Population NP, Mutation F і Crossover CR, тоді натисніть ▶ Play або Step → щоб просуватись по поколіннях. R — перезапуск, P — пауза.

💡 Чи знали ви?

ДЕ взагалі не потребує градієнтів — корисні напрямки пошуку вона виводить лише з розкиду різниць векторів всередині власної популяції, тому легко справляється із зашумленими, розривними цільовими функціями «чорної скриньки», де класичні методи безсилі.

Часті запитання

Навіщо алгоритму три випадкові вектори на кожне оновлення?

Два з них (x_r2, x_r3) утворюють вектор різниці, що кодує правдоподібний напрямок і крок пошуку, взятий із поточного розкиду популяції; третій (x_r1) є опорою для мутанта. Саме це самореферентне вибирання дозволяє ДЕ автоматично адаптувати розмір кроку в міру збіжності популяції.

Що станеться, якщо встановити CR близько до 1.0?

Майже кожен вимір пробного вектора береться з мутанта, а не з цілі, тому пошук стає агресивнішим — корисно для сепарабельних, мультимодальних функцій на кшталт Rastrigin, але часто повільніше доводить до точного мінімуму.

Чому Rosenbrock виглядає простою на контурі, але збіжність повільна?

Її вигнута долина широка і добре видна, тож популяція знаходить її за кілька поколінь, але дно долини біля (1,1) майже пласке в напрямку руху, тому покращення придатності стають мізерними, і лінія збіжності в логмасштабі вирівнюється.

Чому важливий розмір популяції (NP)?

Більший NP дає більше векторів різниці на покоління, тобто багатший набір напрямків мутації і менший ризик передчасної збіжності на мультимодальних ландшафтах на кшталт Rastrigin, ціною більшої кількості обчислень функції за покоління.

Чи може ДЕ застрягти, і як це побачити тут?

Так — якщо різноманітність популяції зникає надто рано, стандартне відхилення популяції (у панелі Stats) падає до нуля, а найкраща придатність зупиняється вище справжнього мінімуму; підвищення F чи CR або перезапуск із більшим NP зазвичай відновлює прогрес.