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

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

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

Алгоритми та AI2DСередній60 FPS
differential-evolution ↗ Відкрити окремо
DRAG · SCROLL · CLICK — керуйте прямо у вікні симуляції.

Як це працює

DE підтримує популяцію з 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

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

Поширені запитання

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

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

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

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

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

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

Що таке параметри F і CR у DE?

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. Перевіряє здатність до глобальної оптимізації.

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

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

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

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

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

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

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

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

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

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

🔬 Що показано

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

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

Оберіть функцію (Розенброк, Растригін, Аклі), налаштуйте повзунки популяції NP, мутації F і схрещування CR, потім натисніть ▶ Відтворити або Крок →, щоб просуватися поколіннями по одному. Натисніть R для перезапуску або P для паузи.

💡 Чи знали ви?

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

Поширені запитання

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

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

Що відбувається, якщо встановити CR близько до 1,0?

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

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

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

Чому має значення розмір популяції (NP)?

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

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

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

Схожі симуляції