Глобальне максимізація дорогої цільової функції


12

Мене цікавить глобальне максимізація функції багатьох ( ) реальних параметрів (результат складного моделювання). Однак функція, про яку йдеться, оцінюється відносно дорого, вимагає приблизно 2 днів для кожного набору параметрів. Я порівнював різні варіанти і цікавився, чи є хтось із пропозицій.30

Я знаю, що існує набір методів для такого роду процесів, які передбачають розробку наближених функцій, а потім їх максимізацію (наприклад, Джонс та ін. "Ефективна глобальна оптимізація дорогих функцій чорного поля" ). Однак це, здається, відносно пов'язане з кодом.

У мене є можливість паралельно виконувати велику кількість моделювання (50+). Це, здавалося б, передбачає використання чогось на зразок генетичних алгоритмів, щоб зробити цю оптимізацію - оскільки я можу створити сукупність кандидатських рішень так само швидко, як і можу зробити це.

Ось мої запитання: 1) Хто-небудь має досвід із вільно доступними реалізаціями подібних глобальних рішень / рекомендацій? 2) Чи існують причини або тут віддавати перевагу або уникати генетичних алгоритмів?

Це фізична проблема, і мої ранні експерименти показали, що показник заслуг змінюється досить плавно, коли я змінюю параметри.

ОНОВЛЕННЯ:

Дякую за допомогу! Ще кілька деталей: мені не потрібна інформація за межами місця максимуму. Моделювання є детермінованим, а не Монте-Карло, так що ускладнення не є великою справою. Немає явних меж або обмежень для параметрів. Ще одна інформація, яку я маю (і не згадувала раніше), - це відчуття розміру необхідного максимуму. Хоча я шукаю глобальний максимум, я також буду задоволений будь-яким масштабом чи більшим розміром - я не знаю, чи допоможе це. Сподіваюся, якщо я пройду скринінг більш систематично (латинські гіперкуби, як запропонував Брайан Борчерс), це з’явиться.


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

(Через рік), що ви в кінцевому підсумку робили - змінюючи декілька з 30 параметрів, модель ...?
деніс

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

Зрозуміло, це було 2 1/2 роки тому, але чи є у вас вибір рівня точності в оцінці вашої об'єктивної функції (детерміноване моделювання), і чи можна торгувати точністю та часом виконання?
Марк Л. Стоун

Відповіді:


11

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

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

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

Ви не згадали жодних обмежень щодо параметрів. Вони обмежені? Чи є лінійні чи нелінійні обмеження між параметрами?

Цілком ймовірно, що більшість з ваших 30 параметрів насправді не так важливі для проблеми. Я б запропонував використати експериментальний підхід до скринінгу дизайну, щоб спочатку визначити, який з 30 параметрів дійсно важливий для оптимізації, а потім після встановлення розумних значень для неважливих параметрів оптимізувати за важливими параметрами. Такі методи, як латинський відбір гіперкуба, можуть бути дуже корисними для перевірки відносно неважливих параметрів. На цьому етапі екранування ви можете легко скористатися сотнями процесорів.

Після зменшення кількості параметрів до більш розумного розміру я використовую метод поверхні відповіді, щоб оптимізувати інші параметри. Якщо поверхня реакції дійсно мультимодальна, і ви використовуєте надто просту модель поверхні відповіді (зазвичай люди просто підходять до квадратичної моделі), то ви можете легко ввести в оману і пропустити глобальний максимум. Будь обережний! На цьому етапі ви знову можете скористатися безліччю процесорів, використовуючи експериментальну конструкцію, яка дає дуже гарне покриття простору параметрів. Шукайте конструктивні точки, де встановлена ​​модель далека від обчислених значень - це є свідченням того, що поверхня відгуку не працює належним чином у цьому регіоні. Можливо, вам доведеться будувати поверхні відгуку в окремих регіонах простору параметрів.

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

Я буду другою рекомендацією DAKOTA як основи для такого типу оптимізації. Якщо ви будете робити цю оптимізацію лише один раз, тоді, можливо, буде простіше організувати обчислення вручну, але якщо ви збираєтеся робити це повторно, то DAKOTA буде дуже корисним.


4
  1. Я не маю жодного досвіду роботи з подібними рішеннями; деякі мої колеги ними користувалися. DAKOTA, здається, є програмним пакетом, рекомендованим для подібних завдань. Він включає в себе інтерфейс, який дозволяє користувачеві неодноразово надсилати завдання до черги подання та використовувати вихід для дослідження параметрів, аналізу чутливості тощо. Я недостатньо знайомий з ним, щоб знати, чи скористається він чи ні, скориставшись чималим моделюванням одночасно.

  2. Якщо припустити, що ваші параметри є безперервними, якщо показник заслуг змінюється плавно, коли параметри змінюються, то сурогатна модель повинна зробити розумну роботу з пристосування показників заслуг, а сурогатна похідна інформація повинна бути корисною для уточнення конвергенції. Для 30 параметрів також повинні бути корисними детерміновані методи оптимізації без похідних; знову ж таки, повинна допомогти гладкість. Навпаки, генетичні алгоритми взагалі не використовують похідну інформацію і часто вимагають налаштування параметрів, таких як швидкість мутації, швидкість рекомбінації та параметри відбору, щоб досягти хороших показників. Як алгоритмічний вибір, я б використовував генетичні алгоритми як резервний запас, тому що я очікував, що добре розроблена сурогатна оптимізація або детермінований метод оптимізації без деривативів матиме кращу поведінку конвергенції.


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

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

1

Погляньте на TOMLAB, DAKOTA та OpenMDAO для оптимізації чорних скриньок.


Редагувати №3: Байєсова оптимізація дуже схожа на EGO:

https://github.com/mwhoffman/pybo

https://github.com/hyperopt/hyperopt

обмежені ліцензії:

https://github.com/rmcantin/bayesopt

https://github.com/HIPS/Spearmint


Редагувати №2:

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

Другий підхід, як і в MDAS, - це прямий пошук з деякими розумними адаптаціями на декількох рівнях.

Евристичні підходи носять генетичний / рандомізований характер і без жодних гарантій.


Редагувати №1:

TOMLAB - це інструмент на базі MATLAB, який має найкращу швидкість / якість оптимізації згідно з документами Sahinidis'es. Але це комерційний інструмент із значним корпоративним використанням. Я цим не користуюся.

DAKOTA більш пристосований для кількісного визначення невизначеності, крім загальної оптимізації. На основі c ++ та деякого застарілого коду Fortran. Хоча згідно з ліцензією LGPL та бінарними файлами, доступними для завантаження, дуже складно перекомпілювати принаймні з мого досвіду роботи на Win7 з GCC або MSVS / ifort. Має залежність від boost, lapack, cmake для build. В основному це обгортка для численних вирішувачів з відкритим кодом та кількох комерційних. Це продукт SNL і тісно інтегрований з іншими проектами Sandia NL. Мені вдалося інтегрувати цю програму замість деяких підпрограм IMSL. Папір Сагінідіса пропустив можливий паралелізм з DAKOTA.

OpenMDAO - це програмне забезпечення на основі оптимізації, розроблене в Python NASA під ліцензією APACHE. Я зараз це пробую.


Ласкаво просимо до SciComp! Як написано в даний час, ваш пост не дуже пояснює, чому дивитись на TOMLAB або OpenMDAO було б хорошою ідеєю (інші відповіді вже обговорюються на DAKOTA). Ми шукаємо відповіді, які не лише надавали рекомендації, але обговорювали, чому ці рекомендації корисні, потенційні підводні камені тощо.
Джефф Оксберрі

Спершу я поспішив зі своєю відповіддю, а тепер додав пояснення.
denfromufa

0

Якщо ви не можете дозволити собі 30 прогонів, кожен з яких змінює один параметр, змініть їх у групах:
наприклад, 8 запускає кожен, який змінює 4 параметри разом, а потім уточнюйте найкращі 2 параметри / 8 параметрів ...
(я не маю уявлення, як компромісувати інформаційний приріст порівняно із загальним часом виконання; багатозбройний бандит ?)


-3

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

Опис математики за кодом наведено тут .


1
Це та сама відповідь, яку ви надали в цій публікації . Також здається, що це ваша власна робота. Якщо це правда, просимо зазначити це прямо у своїй відповіді.
nicoguaro

Чи можете ви надати детальну інформацію про підхід, описаний у статті та реалізований у програмному забезпеченні? Який метод використовується? Чому це добре? Що передбачено в такому підході, що інші відповіді не охоплюють?
nicoguaro

1
Також зауважте, що ви є автором цього програмного забезпечення , тому кожен, хто читає це, буде знати, що ви a) знаєте, про що говорите, і b) це може бути трохи частково.
Крістіан Класон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.