制約付き最適化のためのソフトウェアパッケージ?


21

いくつかの変数(具体的にはボックス化された制約)の境界がわかっている制約付き最適化問題を解決しようとしています。

argminuf(u,x)

の対象

A D U X B

c(u,x)=0
ad(u,x)b

ここで、uは設計変数のベクトル、xは状態変数のベクトル、c(u,x)は等式制約(通常はPDE)です。下限および上限の制約aおよびbは、空間的に可変です。

この形式のシステムを処理できるパッケージはどれですか?


1
編集されたバージョンは、ボックスに制約のある最適化問題のようには見えません。ボックス制約の最適化問題には、制約としてaubがあります。されたu機能することになっx?であるcリニアにu?そうでない場合、2階微分可能ですか?あるfに凸のuuで2階微分可能uですか?最後に、argminuは、fの最小値に達するu内の点のセットを示します。代わりに\ min_ {u}を意味しますか?ufminu
ジェフオックスベリー

d(u,x)=uは特別なケースの1つですが、実際にはこのより一般的な形式が実際に一般的です。メソッドがuの制約のみを直接処理できる場合は、常に追加の変数を導入できますu。通常、fの最小値よりも最小値が得られる値uの方が重要です。ショーンは[pde]タグを追加したので、そこから規則性を得ることができます。彼は、システムが双曲線であるかどうかを述べませんでしたので、仮定しないでください。fは凸であると仮定しないでください。uff
ジェドブラウン

fL1またはW1,1正則化を伴うことは非常に一般的であるため、2つの導関数を仮定するべきではありません。
ジェドブラウン

@JedBrown:それは理にかなっています。明示的なボックス制約なしで言及された「ボックス制約」を見るのは紛らわしかった。あなたが話している問題の種類(設計問題、制御問題)については、uは間違いなくより興味深いですが、最適化問題は通常min表記を使用して記述され、それらのソリューションセットはargmin表記を使用して記述されます。
ジェフオックスベリー

PDEをモデル化する言語/環境を指定すると便利な場合があります。オプティマイザーの選択が制限される場合があります。
ドミニク

回答:


18

私はいくつかのコメントに基づいて答えを根本的に編集することにしました。

TAOは使用していません。ドキュメントを熟読から、それは使用して変不平等に問題を変換することですTAOが(箱のみの制約の特殊な場合を除く)制約付き最適化問題を扱うことができる唯一の方法のように思えるKarush-クーン・タッカー(KKT)条件を、どの制約条件(通常、スレーターポイント条件)の下で必要であり、目的と制約の凸性の下で十分です(より一般的には、タイプ1 invexity)。もしfは非凸であり、KKT条件を使用した変分不等式定式化は元の最適化問題と同等ではないため、厳密に言えば、最適化問題のグローバル最適化が必要な場合は、変分不等式として表現しないでください。とにかくPDE制約付き最適化のグローバル最適化を見つけることは難しいので(以下を参照)、この詳細を無視しても問題ありません。Wolfgangが言ったことを考えると、私はTAOを使うことに懐疑的です。変分不等式ではなく、非線形プログラム(NLP)をNLPとして解く方法を実装していないため、私はすでに懐疑的です。

私はPDE制約付き最適化の専門家ではありません。私の同僚と同僚は、ODE制約のある最適化問題に取り組んでいます。侵入型の定式化では、Larry Biegler(およびその他)がコロケーションメソッドを使用してPDEを離散化し、非常に大きく、まばらなNLPにしてから、内点法を使用してそれを解決することを知っています。この問題をグローバル最適化に実際に解決するには、凸緩和を生成する必要もありますが、私が知る限り、PDE制約のある最適化問題は解決が難しいほど大きなNLPにつながるため、このアプローチは採用されていませんグローバルな最適性。問題の定式化がソルバーパッケージの選択に大きく影響するため、これらの詳細についてのみ言及します。非侵入型の定式化では、PDEを繰り返し解くことにより、最適化アルゴリズムの勾配情報が得られます。

ODE制約のある最適化問題を研究する一部の人々は、コロケーションと数値的手法を使用して問題を離散化し、結果のNLPを緩和してグローバル最適化アルゴリズムで使用される凸定式を生成する同様のアプローチを使用します。ODE制約付き最適化の代替アプローチは、問題を緩和し、ODEを離散化することです。これは、私のラボで採用されているアプローチです。PDEに制約された最適化問題の特定のクラスを緩和することは可能かもしれませんが、その問題に関して現在行われている作業については知りません。(ある時点では、私のラボでの潜在的なプロジェクトでした。)

最終的に重要なのは、元のPDEの微分可能性ではなく、決定変数に関する離散化の微分可能性です。

離散化された問題が決定変数に関して2階微分可能である場合、次のパッケージはローカルソリューションを計算します。

  • IPOPTは、IBMのAndreasWächterによって開発されたオープンソースの内部ポイントソルバーです。非常に高品質のコードです。内点ソルバーとしては、大規模でスパースなヤコビ行列をもつ目的関数に適しています。また、PDE制約付き最適化に役立ちます。
  • SNOPTは、別の高品質コードである商用の逐次2次計画ソルバーです。小さくて密なヤコビ行列をもつ目的関数の方が良いので、PDE制約付き最適化に役立つとは思わないでしょうが、試してみてください。
  • NLoptは、MITのSteven Johnsonによって書かれた小さなオープンソースコードで、多数の非線形最適化アルゴリズムの基本的な実装が含まれています。すべてのアルゴリズムは、制限付き制約のある問題を解決するのに十分でなければなりません。
  • fmincon Matlabでは、非線形最適化のための多くのアルゴリズム(内点および逐次二次計画法を含む)を実装しています
  • GAMSAMPLはどちらも、最適化問題を定式化するために使用される商用モデリング言語であり、多数の非線形プログラミングソルバーへのインターフェイスを備えています。GAMSには小規模な問題に使用できる試用版があり、問題のインスタンスもNEOSサーバーに送信して解決できることを知っています。

ただし、離散化は決定変数に関して一度だけ微分可能である可能性があります。その場合、局所解を計算するときは、投影最急降下法または他の一次最適化方法を使用する必要があります。多くの研究が二次法を使用できる問題に焦点を当てているため(使用できる場合、それらの優れた収束特性がより良い選択となります)、解決策ではない最急降下の多くの実装を見つけることができませんでした宿題の問題に。GNU科学ライブラリの実装を持っていますが、それはデモンストレーションの目的のためにのみです。おそらく、独自の実装をコーディングする必要があります。

問題が決定変数に関してのみ連続している場合は、直接的な方法を使用してローカルに解決できます。Kolda、Lewis、Torczonによる直接法に関する優れた調査があります。これらの方法で最も広く知られているのは、Nelder-Meadシンプレックスアルゴリズムです。複数の次元で局所的な最小値に収束することは保証されていませんが、とにかくかなりの実用的使用が見つかりました。

パッケージの選択は、バインド制約問題の解決が実装するアルゴリズムの一部にすぎない場合(またはアルゴリズムの唯一のステップである場合、モデリング言語の場合)、問題の解決に使用する言語に実際に依存しますプロダクションコードでより実行可能になります)、問題の種類とサイズ、および並列処理が必要な場合。


4

TAOを試しましたが、不平等の制約のある問題にはあまり役に立たないことがわかりました。また、少なくとも2003年以降は基本的にメンテナンスモードのみであり、更新されるPETScの変更を追跡するための更新以外、実際の新機能はありません。


3

別の選択肢はOPT ++です。効率的な非線形内部ポイントソルバーで線形および非線形の制約をサポートし、関数の精度(数値微分が必要な場合)、ステップサイズなどの制御を提供します。通常、これらのタイプの大きな暗黙関数(FEMなど)を最適化します。コントロールが役立つ場合があります。


OPT ++が使用に適したパッケージである理由について詳しく説明してください。あなた(またはあなたの同僚)はそれを使った経験がありますか?
ジェフオックスベリー

明確にするために、私はそれらの経験がないので、OPT ++が前にリストしたものより優れていると言う理由はありません(チェックアウトのためにそれらのいくつかをブックマークしました)。しかし、私はOPT ++の経験があり、それが私のニーズに適していることを発見しました。効率的な非線形内部ポイントソルバーで線形および非線形の制約をサポートし、関数の精度(数値微分が必要な場合)、ステップサイズなどの制御を提供します。通常、これらのタイプの大きな暗黙関数(FEMなど)を最適化します。コントロールが役立つ場合があります。
バロン

2
@Barron:そもそもそれを答えに入れておくべきだった。:)
JM

2

問題が相補性問題として定式化されている場合、TAO(高度な最適化のツールキット)を使用できます。省スペース方式(アクティブセット方式の変形)など、TAOの一部の方式は、現在、PETSc(SNESVI)のSNESの一部として利用可能です。


1

当日のモジュールCERNLIB(に移植長いので、ROOT)を使用して入力された空間に変換し、それらが実行スペースにボックス制約をレンダリングするために、したがってコストで(特別な場合ずに取り扱うことができますもちろん、ある程度の速度です)。[,+]

私はMINUTEがあなたのニーズに対してうまくいくとは思いませんが、コードの一部または全部を自分で書くことを余儀なくされた場合、トランスフォームは可能性があります。


その変換は厄介に見えます。いくつかの段落が付随しているのも不思議ではありません。
ジェフオックスベリー

1

@Geoff Oxberryが指摘したように、いくつかのパッケージを使用すると、ローカルソリューションを見つけることができます。同じ問題に対してこれらの異なるNLPソルバーを比較できるようにしたい場合は、RobOptimを使用できます。

RobOptimはロボット工学の最適化問題を念頭に置いて最初に開発されましたが、非線形最適化問題には適しています。複数のNLPソルバー(Ipopt、NAGなど)のプラグインを備えたシンプルなC ++インターフェイスを提供します。勾配を提供できない場合、有限差分計算を自動的に実行できます。

オープンソースなので、GitHubでソースコードを確認できます:https : //github.com/roboptim/

注:私はこのプロジェクトの開発者の1人です。


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/

PDE制約付き最適化のPYOMOの例:

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を参照してください。これについて少し説明してください(コンピューティング言語、処理できる制約の種類、実装されているメソッドなど)。
クリスチャンクラソン14年

@ChristianClasonに同意します。PDEに制約のある最適化ソフトウェアのソルバーはかなり開発されています。ただし、この回答は、これらのパッケージが実際にどのアルゴリズムを実装しているかについての背景を本質的に提供していません。
ジェフオックスベリー

0

APM MATLABおよびAPMのPythonパッケージは、混合整数微分代数方程式システムの大規模(100,000変数)を解決することができます。このソフトウェアは、商用または学術目的のWebサービスとして利用できます。PDEシステムを解く場合は、一度離散化してDAEまたはODEフォームに入れてAPMonitorモデリング言語に入れることができます。モデリング言語は、APOPT、BPOPT、IPOPT、SNOPT、およびMINOSソルバーを使用します。


1
お使いのソフトウェアに言及する今回および今後の回答で、APMonitor開発者としての所属を開示してください。開示ポリシーの詳細については、よくある質問をご覧ください。
ジェフオックスベリー

ジェフ、ヒントをありがとう。2004年にテキサス大学オースティン校の大学院生としてAPMonitorプラットフォームの仕事を始めました。現在、生物学、化学、航空宇宙、およびその他のアプリケーションのプロセス制御と最適化(apm.byu.edu/prism)のために、ブリガムヤング大学の研究グループで使用しています。商用ユーザーまたは学術ユーザーが無料で利用できるようにします。
ジョンヘデングレン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.