Програмний пакет для обмеженої оптимізації?


21

Я шукаю вирішити обмежену оптимізаційну задачу, де я знаю межі деяких змінних (зокрема, обмеженого коробкою).

аргхвуf(у,х)

на тему

c(у,х)=0
аг(у,х)б

де - вектор змінних конструкцій, - вектор змінних стану, а - обмеження рівності (зазвичай PDE). Нижні та верхні обмеження і b можуть бути просторово змінними.ухc(у,х)аб

Які пакети можуть обробляти системи такої форми?


1
Відредагована версія не схожа на проблему оптимізації, обмежена рамками. Проблема оптимізації, обмежена коробкою, матиме як обмеження. Є повинен бути функцією ? Є лінійним в ? Якщо це не так, чи є це два рази диференційоване? Чи опукла в ? Є чи вона двічі диференційовна в ? Нарешті, позначає набір точок у, яких досягається мінімальне значення . Ви маєте на увазі ? аубухcуfууаргхвууfхву
Джефф Оксберрі

u u f fг(у,х)=у - один особливий випадок, але ця більш загальна форма насправді поширена на практиці. Ви завжди можете вводити додаткові змінні, якщо ваш метод може мати справу лише з обмеженнями безпосередньо на . Нас зазвичай більше цікавить значення при якому досягається мінімум, ніж мінімальне значення . Шон додав тег [pde], тож ви можете отримати від цього певну регулярність. Він не заявив, чи була система гіперболічною чи ні, тому не будемо вважати. Не будемо вважати, що опуклий, оскільки часто це не так. ууff
Джед Браун

Для досить включати або регуляризацію, тому ми не повинні вважати дві похідні. L 1 W 1 , 1fL1W1,1
Джед Браун

@JedBrown: Це має сенс; було заплутано бачити згадане "обмеження коробки" без явного обмеження поля. Для типів завдань ви говорите про (проектних завданнях, завдання управління), , безумовно , більш цікаво, але проблеми оптимізації , як правило , вказані , використовуючи м я п позначення і їх безліч рішень описані з використанням Агда хв нотації. умiнаргхв
Джефф Оксберрі

Може бути корисним вказати, якою мовою / середовищем ви моделюєте PDE. Це може обмежити вибір оптимізаторів.
Домінік

Відповіді:


18

Я вирішив радикально відредагувати свою відповідь на основі деяких коментарів.

Я не використовував ТАО. З огляду на документацію здається, що єдиним способом, яким TAO може впоратися із обмеженими проблемами оптимізації (виключаючи окремий випадок лише обмежень коробки), є перетворення проблеми в варіативну нерівність, використовуючи умови Каруша-Куна-Таккера (KKT) , які необхідні в рамках кваліфікації обмежень (тип, який я зазвичай бачу за умовою « Слейтер» ), і достатній при опуклості цілі та обмежень (більш загально, виразності 1 типу). Якщо fє невипуклим, формулювання варіативної нерівності за умовами KKT НЕ еквівалентно оригінальній задачі оптимізації, тому строго кажучи, якщо ви хочете глобальний оптимум для проблеми оптимізації, ви не повинні виражати це як варіаційну нерівність. Було б важко знайти глобальний оптимум у будь-якому випадку для обмеженої PDE оптимізації (див. Нижче), тому, можливо, ігнорування цієї деталі чудово. З огляду на те, що сказав Вольфганг, я буду скептично використовувати TAO; Я вже скептично налаштований, оскільки він не реалізує способи вирішення нелінійних програм (НЛП) як НЛП, а не варіаційні нерівності.

Я не є експертом з оптимізації, обмеженої PDE; співробітники та співробітники моєї роботи з проблем оптимізації, обмежених ODE. Я знаю, що для нав'язливих формулювань Ларрі Біглер (та інші) використовуватиме методи колокації, щоб дискретизувати PDE і зробити його дуже великим, розрідженим НЛП, а потім він вирішить це за допомогою методів внутрішніх точок. Щоб реально вирішити проблему до глобальної оптимальності, вам також потрібно було б створити опуклі розслаблення, але, наскільки я знаю, такий підхід не приймається, оскільки проблеми оптимізації, обмежені PDE, призводять до таких великих НЛП, що їх було б важко вирішити глобальна оптимальність. Я згадую ці деталі лише тому, що формулювання проблеми сильно впливає на вибір пакета вирішувача. Для неінструзивних рецептур повторний PDE вирішує інформацію про градієнт виходу для алгоритмів оптимізації.

Деякі люди, які вивчають проблеми оптимізації, обмежені ODE, використовують аналогічний підхід до розв’язання проблеми за допомогою колокації та числового методу, а потім розслаблення отриманого НЛП для отримання опуклої рецептури, що використовується в алгоритмі глобальної оптимізації. Альтернативний підхід до оптимізації, обмеженої ODE, полягає в тому, щоб зменшити проблему, а потім дискретизувати ODE, що є підходом у моїй лабораторії. Можливо, можна послабити певні класи проблем, пов'язаних з оптимізацією PDE, але я не знаю жодної існуючої роботи над цією проблемою. (Одного разу це був потенційний проект у моїй лабораторії.)

Зрештою, важливо не диференційованість оригінального PDE, а диференційованість дискретизації стосовно змінних рішень.

Якщо задача, що дискретизує, вдвічі диференціюється щодо змінних рішень, наступні пакети обчислюють локальне рішення:

  • IPOPT - це вирішення точок із відкритим вихідним кодом, розроблене Андреасом Вехтером у IBM. Це дуже якісний код. Як вирішувач внутрішніх точок, він краще для об'єктивних функцій з великими, розрідженими якобійськими матрицями, і був би корисний для оптимізації, обмеженої PDE
  • SNOPT - це комерційний послідовний вирішувач квадратичного програмування, який є ще одним високоякісним кодом. Це краще для об'єктивних функцій з малими, щільними якобійськими матрицями, тому я б не очікував, що це буде корисним для оптимізації, обмеженої PDE, але ви можете спробувати.
  • NLopt - це невеликий відкритий код, написаний Стівеном Джонсоном в MIT, який містить основні реалізації ряду алгоритмів нелінійної оптимізації. Усі алгоритми повинні бути адекватними для вирішення обмежених задач.
  • fmincon в Matlab реалізує ряд алгоритмів (включаючи точку інтер'єру та послідовне квадратичне програмування) для нелінійної оптимізації
  • GAMS та AMPL - це мови комерційного моделювання, які використовуються для формулювання проблем оптимізації, і містять інтерфейси для великої кількості нелінійних рішень програмування. Я знаю, що GAMS має пробну версію, яку можна використовувати для менших проблем, а проблемні екземпляри також можна подати на сервер NEOS для вирішення.

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

Якщо проблема є лише безперервною щодо змінних рішень, тоді ви можете використовувати прямі методи для її вирішення локально. Існує відмінне опитування прямих методів Колдою, Льюїсом та Торкзоном . Найбільш широко відомим із цих методів є алгоритм симплекса Nelder-Mead . Це не гарантовано збільшиться до локального мінімуму в кількох вимірах, але все-таки знайшло значне практичне використання.

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


4

Ми спробували ТАО, але виявили, що він не дуже корисний для проблем, що обмежують нерівність. Це також по суті лише в режимі обслуговування, щонайменше, з 2003 року, без реальних нових функцій, окрім оновлень для відстеження змін у PETSc, на яких він побудований.


3

Ще одна альтернатива - OPT ++ . Він підтримує лінійні та нелінійні обмеження з ефективним нелінійним вирішувачем внутрішніх точок, забезпечує контроль точності функції (якщо потрібна чисельна диференціація), контроль розмірів кроків тощо. Я, як правило, оптимізую великі неявні функції (наприклад, FEM), де ці типи елементи управління можуть бути корисними.


Чи можете ви детальніше пояснити, чому OPT ++ є хорошим пакетом для використання? Чи маєте ви (чи ваших колег) досвід з цим?
Джефф Оксберрі

Щоб було зрозуміло, я не маю причин говорити, що OPT ++ перевершує будь-який із тих, що ви перераховували раніше, тому що я не маю жодного досвіду з ними (хоча деякі з них я взяв у закладки, щоб перевірити). Але я маю досвід роботи з OPT ++ і вважаю це придатним для моїх потреб. Він підтримує лінійні та нелінійні обмеження з ефективним нелінійним вирішувачем внутрішніх точок, забезпечує контроль точності функції (якщо потрібна чисельна диференціація), контроль розмірів кроків тощо. Я, як правило, оптимізую великі неявні функції (наприклад, FEM), де ці типи елементи управління можуть бути корисними.
Баррон

2
@Barron: ти мав би так покласти це у своїй відповіді. :)
JM

2

Якщо проблема сформульована як проблема взаємодоповнення, можна використовувати TAO (Інструментарій для розширеної оптимізації). Деякі з методів TAO, такі як метод скороченого простору (варіант методу активного набору), в даний час доступний як частина SNES в PETSc ( SNESVI ).


1

[-,+]

Я не думаю, що MINUTE буде добре працювати для ваших потреб, але перетворення може відбутися, якщо ви змушені самостійно написати якийсь чи весь код.


Ця трансформація виглядає противно; недарма це супроводжується парою абзаців.
Джефф Оксберрі

1

Як зазначав @Geoff Oxberry, кілька пакетів дозволяють знайти місцеве рішення. Якщо ви хочете мати можливість порівнювати ці різні вирішувачі NLP для однієї і тієї ж проблеми, ви можете використовувати RobOptim .

Хоча RobOptim спочатку був розроблений з урахуванням проблем оптимізації робототехніки, він підходить для будь-яких проблем з нелінійною оптимізацією. Він забезпечує простий C ++ інтерфейс із плагінами для декількох розв’язувачів NLP (наприклад, Ipopt, NAG). Якщо ви не можете надати градієнти, обчислення з кінцевою різницею можна зробити автоматично.

Це відкритий код, щоб ви могли перевірити вихідний код на GitHub: https://github.com/roboptim/

Примітка. Я один із розробників цього проекту.


1
Слід зазначити, що інші відповіді описують вирішувачі , а не рамки. Простіше знайти прийнятний каркас ( драйвер ), ніж хороший вирішувач,
Мисливець на оленів

@DeerHunter Коли ви шукаєте вирішувач для вирішення даної проблеми, часто апріорі важко дізнатися, який вирішувач буде обчислити найкраще рішення та / або бути найшвидшим. Ви говорите про "хороший вирішувач", але це дійсно залежить від того, що ви вирішуєте: не існує жодного "найкращого загального рішення". Більше того, API розв’язувачів зазвичай досить різні, тому використання хорошої рамки, яка дозволяє легко переходити з одного розв'язувача на інший, може бути дуже корисною. Питання стосувалося "програмних пакетів для обмеженої оптимізації", і рамки також підпадають під цю категорію.
BenC

1

Ось частковий список пакетів оптимізації, обмежених PDE.

Dolfin Adjoint є частиною FEniCS FEM:

http://dolfin-adjoint.org/

ROL, MOOCHO, Sundance - це частини Trilinos:

https://github.com/trilinos/trilinos/tree/master/packages/rol/

https://github.com/trilinos/trilinos/tree/master/packages/Sundance/

http://trilinos.org/packages/moocho/

Приклад PYOMO для оптимізації, обмеженої PDE:

https://software.sandia.gov/trac/pyomo/browser/pyomo/trunk/examples/dae

Посібник TAO наводить приклади вирішення проблем оптимізації, обмежених PDE:

http://www.mcs.anl.gov/petsc/petsc-3.5/docs/tao_manual.pdf


1
Ласкаво просимо до SciComp.SE! Просто надання посилання (наскільки це можливо корисне) насправді не є гарною відповіддю; див. meta.stackexchange.com/questions/8231 . Чи могли б ви трохи розширити цю проблему (обчислювальна мова, які обмеження можуть бути оброблені, які методи реалізовані тощо)?
Крістіан Класон

Я згоден з @ChristianClason. Було досягнуто значного розвитку у вирішенні програмного забезпечення для оптимізації, обмеженого PDE; однак ця відповідь по суті не дає підстав для того, які алгоритми реалізують ці пакети.
Джефф Оксберрі

0

У APM MATLAB і APM Python пакети можуть вирішити великомасштабні (100,000 змінні) систем рівнянь змішаного Integer Диференціальних Алгебраїчними. Програмне забезпечення доступне у вигляді веб-сервісу для комерційного чи академічного використання. Якщо ви вирішуєте систему PDE, ви можете один раз провести дискретизацію, щоб перевести її у форму DAE або ODE, щоб помістити її в мову моделювання APMonitor. Мова моделювання використовує розв'язки APOPT , BPOPT, IPOPT, SNOPT та MINOS.


1
Будь ласка, розкрийте свою приналежність як розробник APMonitor в цій та майбутніх відповідях, які згадують ваше програмне забезпечення. Детальну інформацію про нашу політику щодо розкриття інформації див. У FAQ.
Джефф Оксберрі

Джефф, дякую за пораду. Я почав працювати над платформою APMonitor у 2004 році, будучи аспірантом Техаського університету в Остіні. Зараз ми використовуємо його в нашій дослідницькій групі університету Брігґама Янг для контролю процесів та оптимізації ( apm.byu.edu/prism ) біологічних, хімічних, космічних та інших застосувань. Я роблю це вільно доступним для комерційних або академічних користувачів.
Джон Геденгрен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.