IPOPTのソースを表示
←
IPOPT
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Infobox Software | 名称 = IPOPT | ロゴ = <!-- ロゴ画像。[[ファイル:example.png|50px]]のようにウィキ構文で指定する --> | スクリーンショット = <!-- スクリーンショット。[[ファイル:example.png|100px]]のようにウィキ構文で指定する --> | 説明文 = <!-- スクリーンショットの説明文 --> | 開発者 = Andreas Wächter, Carl Laird | 開発元 = | 初版 = {{release date and age|2005|8|26}} | 最新版 = 3.12.12<ref>[http://www.coin-or.org/download/source/Ipopt/ Index of /download/source/Ipopt]</ref> | 最新版発表日 = {{release date and age|2018|11|18}} | 最新評価版 = | 最新評価版発表日 = <!-- 最新評価版の発表日。{{release date and age|年|月|日}} 等のテンプレートが便利 --> | プログラミング言語 = C++ | 対応OS = [[UNIX]], [[Linux]], [[macOS]], [[Microsoft Windows|Windows]] | エンジン = <!-- ソフトが使用しているエンジン。ウェブブラウザにおけるレンタリングエンジン(Gecko、WebKit)など --> | 対応プラットフォーム = | サイズ = | 対応言語 = | サポート状況 = | 種別 = | ライセンス = [[Eclipse Public License]] | 公式サイト = {{url|https://projects.coin-or.org/Ipopt}} }} '''IPOPT'''('''I'''nterior '''P'''oint '''OPT'''imizer、I-P-Opt と発音される)は、主双対[[内点法]]を利用した大規模(高次元)な連続[[最適化問題]]を解く[[ライブラリ]]である。[[C++]]で実装され、公開されている[[ソースコード]]は[[Eclipse Public License|EPL]]ライセンスのもとで利用できる。 == 対象となる最適化問題 == 目的関数が以下の物で、 : <math>f: \mathbb{R}^n \to \mathbb{R}</math> 制約条件が以下の形式で与えられる物で、 : <math>g^L \le g(x) \le g^U</math> : <math>x^L \le x \le x^U</math> 下記の最適化問題を解く<ref>[http://www.coin-or.org/Ipopt/documentation/node3.html Introduction]</ref>。 : <math>\min_{x \in \mathbb{R}^n} f(x)</math> f と g は微分可能でなければならない。大規模問題としては <math>f(x) = \sum_{i=1}^n x_i^2</math> であれば、n = 100万でも実行できる。 == アルゴリズム == IPOPT で実装されている最適化手法は、[[内点法]]の一種である主双対内点法に、フレッチャーとレイファーの[[フィルター法]]による直線探索<ref>R. Fletcher and S. Leyffer, Nonlinear programming without a penalty function, Mathematical Programrning, 91 (2002), pp. 239-269.</ref>を組み入れたものであり、最適化対象の関数の一階偏[[導関数]]([[ヤコビ行列]])および二階偏導関数([[ヘッセ行列]])が与えられた場合はそれを利用する。ただしAMPLなどの計算環境から呼び出された場合には[[自動微分]]を行う。ヤコビ行列やヘッセ行列は[[疎行列]]を使うことにより高速化している<ref>[http://www.coin-or.org/Ipopt/documentation/node23.html#SECTION00053170000000000000 Method eval_jac_g - The C++ Interface]</ref>。ヘッセ行列が与えられない場合は[[ニュートン法|準ニュートン法]] ([[:en:Limited-memory BFGS|L-BFGS法]]) でその近似値で代用することもできる<ref>[http://www.coin-or.org/Ipopt/documentation/node31.html Quasi-Newton Approximation of Second Derivatives]</ref>。 == API == ライブラリで実装されているAPIは、[[C++]]、[[C言語]]、[[Fortran]]、[[Java]]などのプログラミング言語や、[[MATLAB]]、[[R言語]]などの数値計算ソフトウェアから呼び出すことができる。非公式に、[[.NET Framework]]、[[Python]]、[[Scilab]]、[[Julia (プログラミング言語)|Julia]]のインターフェイスも作られている<ref>[http://www.coin-or.org/Ipopt/documentation/node7.html How to use IPOPT]</ref>。 == 開発 == 開発は COIN-OR (COmputational INfrastructure for Operations Research) プロジェクト<ref>[http://www.coin-or.org/ COIN-OR ホームページ]</ref>の一部として、[[オープンソース]]で行われている。 アンドレアス・ウェチター (Andreas Wächter) が[[カーネギーメロン大学]]のローレンツ・ビーグラー (Lorenz T. Biegler) 研究室の博士課程の学生だったときに始められ、その後、彼とカール・レアード (Carl Laird) がC++版を実装した。この二人は[[2011年]]に[[ジェームズ・H・ウィルキンソン賞]]を受賞している。 == 脚注 == {{脚注ヘルプ}} {{Reflist}} == 関連項目 == * [[最適化問題]] == 外部リンク == * {{Official|https://projects.coin-or.org/Ipopt}} {{Software-stub}} {{デフォルトソート:IPOPT}} [[Category:数値解析ソフトウェア]] [[Category:最適化]]
このページで使用されているテンプレート:
テンプレート:Infobox Software
(
ソースを閲覧
)
テンプレート:Official
(
ソースを閲覧
)
テンプレート:Reflist
(
ソースを閲覧
)
テンプレート:Software-stub
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
IPOPT
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報