IPOPT(Interior Point OPTimizer、I-P-Opt と発音される)は、主双対内点法を利用した大規模(高次元)な連続最適化問題を解くライブラリである。C++で実装され、公開されているソースコードはEPLライセンスのもとで利用できる。

対象となる最適化問題 目的関数が以下の物で、

制約条件が以下の形式で与えられる物で、

下記の最適化問題を解くIntroduction。

と は微分可能でなければならない。大規模問題としては であれば、n = 100万でも実行できる。

アルゴリズム IPOPT で実装されている最適化手法は、内点法の一種である主双対内点法に、フレッチャーとレイファーのフィルター法による直線探索を組み入れたものでありR. Fletcher and S. Leyffer, Nonlinear programming without a penalty function, Mathematical Programrning, 91 (2002), pp. 239-269.、最適化対象の関数の一階偏導関数(ヤコビ行列)および二階偏導関数(ヘッセ行列)が与えられた場合はそれを利用する。ただしAMPLなどの計算環境から呼び出された場合には自動微分を行う。ヤコビ行列やヘッセ行列は疎行列を使うことにより高速化しているMethod eval_jac_g - The C++ Interface。ヘッセ行列が与えられない場合は準ニュートン法 (L-BFGS法) による近似値で代用することもできるQuasi-Newton Approximation of Second Derivatives。

API ライブラリで実装されているAPIは、C++、C言語、Fortran、Javaなどのプログラミング言語や、MATLAB、R言語などの数値計算ソフトウェアから呼び出すことができる。非公式に、.NET Framework、Python、Scilab、Juliaのインターフェイスも作られているHow to use IPOPT。

開発 開発は COIN-OR (COmputational INfrastructure for Operations Research) プロジェクトの一部として、オープンソースで行われているCOIN-OR ホームページ。

アンドレアス・ウェチター (Andreas Wächter) がカーネギーメロン大学のローレンツ・ビーグラー (Lorenz T. Biegler) 研究室の博士課程の学生だったときに始められ、その後、彼とカール・レアード (Carl Laird) がC++版を実装した。この二人は2011年にジェームズ・H・ウィルキンソン賞を受賞している。

脚注

関連項目 最適化問題

外部リンク