いくつかの変数(具体的にはボックス化された制約)の境界がわかっている制約付き最適化問題を解決しようとしています。
の対象
A ≤ D (U 、X )≤ B
ここで、は設計変数のベクトル、は状態変数のベクトル、は等式制約(通常はPDE)です。下限および上限の制約およびは、空間的に可変です。
この形式のシステムを処理できるパッケージはどれですか?
いくつかの変数(具体的にはボックス化された制約)の境界がわかっている制約付き最適化問題を解決しようとしています。
の対象
A ≤ D (U 、X )≤ B
ここで、は設計変数のベクトル、は状態変数のベクトル、は等式制約(通常はPDE)です。下限および上限の制約およびは、空間的に可変です。
この形式のシステムを処理できるパッケージはどれですか?
回答:
私はいくつかのコメントに基づいて答えを根本的に編集することにしました。
TAOは使用していません。ドキュメントを熟読から、それは使用して変不平等に問題を変換することですTAOが(箱のみの制約の特殊な場合を除く)制約付き最適化問題を扱うことができる唯一の方法のように思えるKarush-クーン・タッカー(KKT)条件を、どの制約条件(通常、スレーターポイント条件)の下で必要であり、目的と制約の凸性の下で十分です(より一般的には、タイプ1 invexity)。もしは非凸であり、KKT条件を使用した変分不等式定式化は元の最適化問題と同等ではないため、厳密に言えば、最適化問題のグローバル最適化が必要な場合は、変分不等式として表現しないでください。とにかくPDE制約付き最適化のグローバル最適化を見つけることは難しいので(以下を参照)、この詳細を無視しても問題ありません。Wolfgangが言ったことを考えると、私はTAOを使うことに懐疑的です。変分不等式ではなく、非線形プログラム(NLP)をNLPとして解く方法を実装していないため、私はすでに懐疑的です。
私はPDE制約付き最適化の専門家ではありません。私の同僚と同僚は、ODE制約のある最適化問題に取り組んでいます。侵入型の定式化では、Larry Biegler(およびその他)がコロケーションメソッドを使用してPDEを離散化し、非常に大きく、まばらなNLPにしてから、内点法を使用してそれを解決することを知っています。この問題をグローバル最適化に実際に解決するには、凸緩和を生成する必要もありますが、私が知る限り、PDE制約のある最適化問題は解決が難しいほど大きなNLPにつながるため、このアプローチは採用されていませんグローバルな最適性。問題の定式化がソルバーパッケージの選択に大きく影響するため、これらの詳細についてのみ言及します。非侵入型の定式化では、PDEを繰り返し解くことにより、最適化アルゴリズムの勾配情報が得られます。
ODE制約のある最適化問題を研究する一部の人々は、コロケーションと数値的手法を使用して問題を離散化し、結果のNLPを緩和してグローバル最適化アルゴリズムで使用される凸定式を生成する同様のアプローチを使用します。ODE制約付き最適化の代替アプローチは、問題を緩和し、ODEを離散化することです。これは、私のラボで採用されているアプローチです。PDEに制約された最適化問題の特定のクラスを緩和することは可能かもしれませんが、その問題に関して現在行われている作業については知りません。(ある時点では、私のラボでの潜在的なプロジェクトでした。)
最終的に重要なのは、元のPDEの微分可能性ではなく、決定変数に関する離散化の微分可能性です。
離散化された問題が決定変数に関して2階微分可能である場合、次のパッケージはローカルソリューションを計算します。
fmincon
Matlabでは、非線形最適化のための多くのアルゴリズム(内点および逐次二次計画法を含む)を実装していますただし、離散化は決定変数に関して一度だけ微分可能である可能性があります。その場合、局所解を計算するときは、投影最急降下法または他の一次最適化方法を使用する必要があります。多くの研究が二次法を使用できる問題に焦点を当てているため(使用できる場合、それらの優れた収束特性がより良い選択となります)、解決策ではない最急降下の多くの実装を見つけることができませんでした宿題の問題に。GNU科学ライブラリの実装を持っていますが、それはデモンストレーションの目的のためにのみです。おそらく、独自の実装をコーディングする必要があります。
問題が決定変数に関してのみ連続している場合は、直接的な方法を使用してローカルに解決できます。Kolda、Lewis、Torczonによる直接法に関する優れた調査があります。これらの方法で最も広く知られているのは、Nelder-Meadシンプレックスアルゴリズムです。複数の次元で局所的な最小値に収束することは保証されていませんが、とにかくかなりの実用的使用が見つかりました。
パッケージの選択は、バインド制約問題の解決が実装するアルゴリズムの一部にすぎない場合(またはアルゴリズムの唯一のステップである場合、モデリング言語の場合)、問題の解決に使用する言語に実際に依存しますプロダクションコードでより実行可能になります)、問題の種類とサイズ、および並列処理が必要な場合。
TAOを試しましたが、不平等の制約のある問題にはあまり役に立たないことがわかりました。また、少なくとも2003年以降は基本的にメンテナンスモードのみであり、更新されるPETScの変更を追跡するための更新以外、実際の新機能はありません。
別の選択肢はOPT ++です。効率的な非線形内部ポイントソルバーで線形および非線形の制約をサポートし、関数の精度(数値微分が必要な場合)、ステップサイズなどの制御を提供します。通常、これらのタイプの大きな暗黙関数(FEMなど)を最適化します。コントロールが役立つ場合があります。
当日のモジュールCERNLIB(に移植長いので、ROOT)を使用して入力された空間に変換し、それらが実行スペースにボックス制約をレンダリングするために、したがってコストで(特別な場合ずに取り扱うことができますもちろん、ある程度の速度です)。
私はMINUTEがあなたのニーズに対してうまくいくとは思いませんが、コードの一部または全部を自分で書くことを余儀なくされた場合、トランスフォームは可能性があります。
@Geoff Oxberryが指摘したように、いくつかのパッケージを使用すると、ローカルソリューションを見つけることができます。同じ問題に対してこれらの異なるNLPソルバーを比較できるようにしたい場合は、RobOptimを使用できます。
RobOptimはロボット工学の最適化問題を念頭に置いて最初に開発されましたが、非線形最適化問題には適しています。複数のNLPソルバー(Ipopt、NAGなど)のプラグインを備えたシンプルなC ++インターフェイスを提供します。勾配を提供できない場合、有限差分計算を自動的に実行できます。
オープンソースなので、GitHubでソースコードを確認できます:https : //github.com/roboptim/
注:私はこのプロジェクトの開発者の1人です。
PDE制約付き最適化パッケージのリストの一部を次に示します。
Dolfin AdjointはFEniCS FEMの一部です:
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に制約のある最適化問題の解決例が記載されています。
APM MATLABおよびAPMのPythonパッケージは、混合整数微分代数方程式システムの大規模(100,000変数)を解決することができます。このソフトウェアは、商用または学術目的のWebサービスとして利用できます。PDEシステムを解く場合は、一度離散化してDAEまたはODEフォームに入れてAPMonitorモデリング言語に入れることができます。モデリング言語は、APOPT、BPOPT、IPOPT、SNOPT、およびMINOSソルバーを使用します。