Метод Нелдера — Міда

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Послідовні симплекси в функції Нелдера-Міда для Функції Розенброка (вгорі) та Шаблон:Нп (внизу)

Мінімальний пошук Нелдера-Міда функції Сімінеску. Упорядкування симплексних вершин за їх значенням, причому 1 має найменше (найкраще) значення.

Шаблон:Не плутати2

Метод Нелдера — Міда (метод симплексного спуску, метод амеби, або політопний метод)) є популярним чисельним методом, що використовується для пошуку мінімуму або максимуму цільової функції в багатовимірному просторі. Це метод прямого пошуку (на основі порівняння функцій) і часто застосовується до нелінійних задач оптимізації, для яких похідні можуть не бути відомі. Проте, підхід Нелдера-Міда є евристичним методом пошуку, який може сходитися до нестаціонарних точок[1], стикаючись із задачами, які можуть бути розв'язані альтернативними методами[2].

Метод Нелдера — Міда запропонували Шаблон:Нп і Шаблон:Нп у 1965 році[3], як варіант модифікації методу Спендлі[4].

Загальний опис

У методі використовується поняття симплекса, який є спеціальним політопом n + 1 вершин в n вимірах. Приклади симплексів включають відрізок на лінії, трикутник на площині, тетраедр у тривимірному просторі тощо.

Метод апроксимує локальний оптимум задачі з n змінними, коли цільова функція змінюється плавно і є унімодальною. Типові реалізації мінімізують функції, максимум f(𝐱) можна знайти за допомогою мінімізації f(𝐱).

Наприклад, інженер підвісного моста повинен вибрати, якою має бути товщина кожної стійки, кабелю і причалу. Ці елементи взаємозалежні, але нелегко візуалізувати вплив зміни стану будь-якого конкретного елемента. Моделювання таких складних конструкцій часто є надзвичайно обчислювально складним для запуску, можливо, тому що вони потребують більше годин на виконання. Метод Нелдера — Міда вимагає у вихідному варіанті не більше двох оцінок на ітерацію, за винятком описаної пізніше операції стягування, що є перевагою порівняно з іншими методами оптимізації прямого пошуку. Однак загальна кількість ітерацій пропонованого оптимуму може бути великою.

Метод у n вимірах зберігає набір n+1 тестових точок, розташованих як симплекс. Потім він екстраполює поведінку цільової функції, виміряної в кожній тестовій точці, щоб знайти нову тестову точку і замінити одну зі старих тестових точок на нову, це складає основний цикл методу. Найпростіший підхід полягає в тому, щоб замінити найгіршу точку точкою, відбитою через центроїд решти n точок. Якщо ця точка краща, ніж краща поточна точка, то ми можемо спробувати розтягнути експоненціально по цій лінії. З іншого боку, якщо ця нова точка не є набагато кращою, ніж попередня величина, то ми переходимо до наступного значення, тому ми стягуємо симплекс у кращу точку. Інтуїтивне пояснення алгоритму представлено в[5]:

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

На відміну від сучасних методів оптимізації, евристика Нелдера — Міда може сходитися до нестаціонарної точки, якщо задача не задовольняє сильнішим умовам, ніж це необхідно для сучасних методів.[1] Сучасні поліпшення евристики Нелдера-Мід відомі з 1979 року.[2]

Існує багато варіацій залежно від фактичної природи розв'язуваної задачі. Звичайний варіант використовує невеликий симплекс постійного розміру, який приблизно відповідає напрямку градієнта (який дає найшвидший спуск). Візуалізуйте маленький трикутник на карті висоти, що перевертається по долині до найнижчої точки на місцевості. Цей метод також відомий «як гнучкий метод багатогранника». Це, однак, має тенденцію до поганого виконання методу, описаного в цій статті(?), оскільки він робить невеликі, непотрібні кроки в областях, що представляють малий інтерес.

Один з можливих варіантів алгоритму Нелдера-Міда

(Це близько до процедури, яка описана в оригінальній статті Нелдера-Міда.)

Rosenbrock function Nelder-Mead
Метод Нелдера — Міда, застосований до функції Розенброка

Ми намагаємося мінімізувати функцію f(𝐱), де 𝐱n. Наші поточні контрольні точки є 𝐱1,,𝐱n+1.

1. Порядок відповідно до значень у вершинах:

f(𝐱1)f(𝐱2)f(𝐱n+1).
Перевірте, чи слід зупинити метод. Дивіться Завершення нижче. Іноді неправильно називають «збіжністю».

2. Розрахуйте 𝐱o, центроїд всіх точок, окрім 𝐱n+1.

3. Відбиття

Обчислити симетрично віддзеркалену або, як будемо казати далі, відбиту точку 𝐱r=𝐱o+α(𝐱o𝐱n+1) з α>0.
Якщо відбита краща, ніж друга найгірша, але не краща, ніж краща, тобто f(𝐱1)f(𝐱r)<f(𝐱n),
тоді отримайте новий симплекс, замінивши найгіршу точку 𝐱n+1 симетрично віддзеркаленою точкою 𝐱r, і перейдіть до кроку 1.

4.Розширення

Якщо відбита точка є найкращою точкою досі, f(𝐱r)<f(𝐱1),
потім обчислити розширену точку 𝐱e=𝐱o+γ(𝐱r𝐱o) з γ>1.
Якщо розширена точка краще відбитої точки, f(𝐱e)<f(𝐱r),
отримуємо новий симплекс, замінюючи найгіршу точку 𝐱n+1 розширеною точкою 𝐱e, і перейдіть до кроку 1;
інакше отримуємо новий симплекс, замінюючи найгіршу точку 𝐱n+1 відбитою точкою 𝐱r і перейдіть до кроку 1.

5. Скорочення

Тут напевно f(𝐱r)f(𝐱n). (Зауважте що 𝐱n це друге чи «наступне» після найвищого.): Обчислити контрактну точку до 𝐱c=𝐱o+ρ(𝐱n+1𝐱o) з 0<ρ0.5.
Якщо контрактна точка краща, ніж найгірша точка, тобто f(𝐱c)<f(𝐱n+1),
потім отримують новий симплекс шляхом заміни найгіршої точки 𝐱n+1 на контрактну точку 𝐱c і переходять до кроку 1;

6. Стягування

Замініть всі точки, крім кращих (𝐱1) з
𝐱i=𝐱1+σ(𝐱i𝐱1),і перейдіть до кроку 1.

Примітка: α, γ, ρ і σ відповідно коефіцієнти відбиття, розширення, скорочення і стягування. Стандартними значеннями α=1, γ=2, ρ=1/2 та σ=1/2.

Для відбиття, оскільки 𝐱n+1 це вершина з вищою асоційованою величиною серед вершин, можливо буде менше значення при відбитті 𝐱n+1 у бік протилежної сторони, утвореної всіма вершинами 𝐱i, крім 𝐱n+1.

Для розширення, якщо точка відбиття 𝐱r i є новим мінімумом уздовж вершин, можна розраховувати знайти шукані значення вздовж напрямку від 𝐱o до 𝐱r.

Що стосується скорочення, якщо f(𝐱r)>f(𝐱n), то можна очікувати, що краще значення буде всередині симплекса, утвореного всіма вершинами 𝐱i.

Нарешті, стягування обробляє рідкісний випадок, коли скорочення від найбільшої точки збільшує f, що не може трапитись досить близько до несингулярного мінімуму. У цьому випадку ми скорочуємо у бік найнижчої точки в очікуванні знайти простіший ландшафт. Проте, Неш зазначає, що арифметика зі скінченною точністю іноді не може фактично стягнути симплекс, і виконати перевірку того, що розмір насправді зменшився.[6]

Початковий симплекс

Початковий симплекс важливий. Дійсно, занадто малий початковий симплекс може призвести до локальних пошуків, отже, метод може легше зупинитися. Отже, цей симплекс повинен залежати від природи задачі. А проте, оригінальна стаття запропонувала симплекс, де дається початкова точка 𝐱1, а інші генеруються з фіксованим кроком по кожному виміру по черзі. Таким чином, метод чутливий до масштабування змінних, які складають 𝐱.

Завершення

Для виходу з цього ітеративного циклу потрібні критерії. Нелдер і Мід використовували зразкове стандартне відхилення значень функцій поточного симплекса. Якщо вони опускаються нижче певних обмежень, то цикл зупиняється і найнижча точка в симплексі видається як запропонований оптимум. Зауважимо, що дуже «плоска» функція може мати майже однакові значення функцій над великим доменом, так що рішення буде чутливим до обмежень. Неш[6] додає тест на усадку як ще один критерій переривання роботи. Зауважте, що програми припиняються, тоді як ітерації можуть сходитися.

Див. також

Шаблон:Div col

Шаблон:Div col end

Примітки

Шаблон:Reflist

Література

Посилання

Шаблон:Методи оптимізації

  1. 1,0 1,1
  2. 2,0 2,1
    • Yu, Wen Ci. 1979. «Positive basis and a class of direct search techniques». Scientia Sinica [Zhongguo Kexue]: 53—68.
    • Yu, Wen Ci. 1979. «The convergent property of the simplex evolutionary technique». Scientia Sinica [Zhongguo Kexue]: 69–77.
    • Шаблон:Cite journal
    • Шаблон:Cite journal
  3. Шаблон:Cite journal
  4. Шаблон:Cite journal
  5. * Шаблон:Cite book
  6. 6,0 6,1 Шаблон:Cite book