Я пытаюсь решить ограниченную задачу оптимизации, в которой я знаю границы некоторых переменных (в частности, рамочное ограничение).
при условии
a ≤ d ( u , x ) ≤ b
где - вектор переменных проектирования, - вектор переменных состояния, а - ограничение равенства (обычно PDE). Нижние и верхние ограничения и могут быть пространственно-переменными.
Какие пакеты могут обрабатывать системы этой формы?
pde
optimization
nonlinear-programming
Шон Фарли
источник
источник
Ответы:
Я решил радикально отредактировать свой ответ, основываясь на некоторых комментариях.
Я не использовал TAO. Из рассмотрения документации кажется, что единственный способ, которым TAO может решить ограниченные задачи оптимизации (исключая особый случай только рамочных ограничений), состоит в том, чтобы преобразовать задачу в вариационное неравенство, используя условия Каруша-Куна-Такера (KKT) , которые необходимы при квалификации ограничений (тип, который я обычно вижу, это условие точки Слейтера ), и достаточны при выпуклости цели и ограничений (в более общем случае - тип 1). Еслиf Если он невыпуклый, то формулировка вариационного неравенства с использованием условий KKT НЕ эквивалентна исходной задаче оптимизации, поэтому, строго говоря, если вам нужен глобальный оптимум для задачи оптимизации, вы не должны выражать его как вариационное неравенство. В любом случае было бы трудно найти глобальный оптимум для оптимизации с ограничением по PDE (см. Ниже), поэтому, возможно, игнорирование этой детали хорошо. Учитывая то, что сказал Вольфганг, я бы скептически относился к использованию TAO; Я уже настроен скептически, потому что он не реализует методы решения нелинейных программ (НЛП) как НЛП, а не вариационные неравенства.
Я не эксперт по оптимизации с ограничением PDE; коллеги и сотрудники шахты работают над проблемами оптимизации, связанными с ODE. Я знаю, что для навязчивых формулировок Ларри Биглер (и другие) будет использовать методы коллокации, чтобы дискретизировать PDE и сделать его очень большим, разреженным НЛП, а затем он решит его, используя методы внутренней точки. Чтобы действительно решить проблему с глобальной оптимальностью, вам также необходимо генерировать выпуклые релаксации, но, насколько я знаю, этот подход не используется, потому что проблемы оптимизации, связанные с PDE, приводят к таким большим НЛП, что было бы трудно решить их глобальная оптимальность. Я упоминаю эти детали только потому, что формулировка проблемы сильно влияет на выбор пакета решения. Для неинтрузивных формулировок повторные решения PDE дают информацию о градиенте для алгоритмов оптимизации.
Некоторые люди, которые изучают проблемы оптимизации, связанные с ODE, используют аналогичный подход, заключающийся в дискретизации проблемы с использованием коллокации и численного метода, а затем ослаблении результирующей НЛП для получения выпуклой формулировки, используемой в алгоритме глобальной оптимизации. Альтернативный подход к оптимизации с ограничением ODE состоит в том, чтобы ослабить проблему и затем дискретизировать ODE, что является подходом, принятым в моей лаборатории. Можно было бы ослабить некоторые классы проблем оптимизации, связанных с PDE, но я не знаю какой-либо существующей работы, проделанной над этой проблемой. (В какой-то момент это был потенциальный проект в моей лаборатории.)
В конечном счете, важна не дифференцируемость исходного PDE, а дифференцируемость дискретизации по отношению к переменным решения.
Если дискретизированная задача является дважды дифференцируемой по отношению к переменным решения, следующие пакеты будут вычислять локальное решение:
fmincon
В Matlab реализован ряд алгоритмов (включая внутреннюю точечное и последовательное квадратичное программирование) для нелинейной оптимизацииОднако возможно, что дискретизация может быть дифференцирована только один раз по отношению к переменным решения, и в этом случае вы должны использовать прогнозируемый наибольший спуск или какой-либо другой метод оптимизации первого порядка при вычислении локального решения. Поскольку многие исследования сосредоточены на проблемах, где могут использоваться методы второго порядка (и когда вы можете их использовать, их превосходные свойства сходимости делают их лучшим выбором), я не смог найти много реализаций наискорейшего спуска, которые не были бы решениями. к домашним задачам. GNU Scientific Library имеет реализацию, но это только для демонстрационных целей. Вы, вероятно, должны были бы написать свою собственную реализацию.
Если проблема является непрерывной только по отношению к переменным решения, то вы можете использовать прямые методы для ее локального решения. Существует отличный обзор прямых методов Колды, Льюиса и Торсона . Наиболее широко известным из этих методов является симплекс-алгоритм Нелдера-Мида . Не гарантируется сходство к локальному минимуму в нескольких измерениях, но в любом случае оно нашло значительное практическое применение.
Выбор пакета действительно зависит от языка, который вы хотите использовать для решения проблемы, если решение связанной с ограничением задачи является только частью алгоритма, который вы хотите реализовать (или если это единственный шаг в вашем алгоритме, в этом случае языки моделирования стать более жизнеспособным для производственного кода), тип и размер проблемы, и, если вам нужен параллелизм.
источник
Мы попробовали TAO, но обнаружили, что это не очень полезно для проблем, связанных с неравенством. По сути, он также работает только в режиме обслуживания, по крайней мере, с 2003 года, без каких-либо новых функций, кроме обновлений для отслеживания изменений в PETSc, на котором он построен.
источник
Другой альтернативой является OPT ++ . Он поддерживает линейные и нелинейные ограничения с помощью эффективного нелинейного решателя внутренних точек, обеспечивает контроль точности функций (если требуется численное дифференцирование), контроль размеров шагов и т. Д. Я обычно оптимизирую большие неявные функции (например, FEM), где эти типы элементы управления могут быть полезны.
источник
Если проблема сформулирована как проблема взаимодополняемости, вы можете использовать TAO (Инструментарий для расширенной оптимизации). Некоторые из методов в TAO, такие как метод сокращенного пространства (вариант метода активного набора), в настоящее время доступны как часть SNES в PETSc ( SNESVI ).
источник
МИНУТЫ модуль CERNLIB (давно портирован ROOT ) использует преобразование на входном пространстве для визуализации ограничивает окно в пространство , где они работают и , таким образом , может быть обработан без особых случаев (по стоимости некоторой скорости, конечно).[−∞,+∞]
Я не думаю, что MINUTE будет хорошо работать для ваших нужд, но преобразование может произойти, если вы вынуждены написать часть или весь код самостоятельно.
источник
Как отметил @Geoff Oxberry, несколько пакетов позволяют найти локальное решение. Если вы хотите иметь возможность сравнить эти разные решатели NLP для одной и той же проблемы, вы можете использовать RobOptim .
Хотя RobOptim изначально разрабатывался с учетом проблем оптимизации робототехники, он подходит для любых задач нелинейной оптимизации. Он предоставляет простой интерфейс C ++ с плагинами для нескольких решателей NLP (например, Ipopt, NAG). Если вы не можете предоставить градиенты, вычисление с конечной разностью может быть выполнено автоматически.
Это открытый исходный код, поэтому вы можете проверить исходный код на GitHub: https://github.com/roboptim/
Примечание: я один из разработчиков этого проекта.
источник
Вот частичный список пакетов оптимизации с ограничением по 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
источник
В APM MATLAB и APM Python пакеты могут решить крупномасштабные (100,000 переменные) систем уравнений смешанного Integer Дифференциальных Алгебраическими. Программное обеспечение доступно в виде веб-службы для коммерческого или академического использования. Если вы решаете систему PDE, вы можете один раз дискретизировать ее, чтобы получить ее в форме DAE или ODE, чтобы перевести ее на язык моделирования APMonitor. Язык моделирования использует решатели APOPT , BPOPT, IPOPT, SNOPT и MINOS.
источник