Ipoptをビルドする

普段の生活で,ある関数の値が最小になるようなパラメータを求めたい,ということが稀によくあります.このようなとき,正攻法では,微分して 0 になるところを解析的に求めたり,それができなければ勾配法を使って数値解を求めたりしますが,正直面倒くさくてやりたくないです.

そういうとき,MATLAB みたいなツールがあると,関数を定義して投げるだけで,値が最小(実際は極小)になるそれっぽい数値解を求めてくれますが,普通の人はそんな高級なツールは持ってませんし,学生でも大学の計算機室に行かないと使えなかったりします.

Ipopt はそれをやってくれる C++ のライブラリで,定義されたインターフェース(仮想クラス)を継承して,いくつかのメソッドを実装するだけで,関数を最小化してくれます.しかも,Eclipse Public License なので,組み込んだプログラムの再配布もしやすく,いろいろな用途に使えます.

ただ,Ipopt を Windows でビルドするには,環境を整えたり,依存しているライブラリを入手したりするのが面倒だったり,公式ページに書いてあるとおりにやっても上手くいかなかったりと,いろいろと困難が多いです.一応,公式サイトにビルドされたバイナリ(.dll とそれを呼び出すための .lib)が公開されていますが,バージョンが古く,最新の Visual Studio からだと使えなかったりします.

ここでは,私が試行錯誤して得た Ipopt のビルド方法を紹介します.ついでにそのバイナリも配布します.

続きを読む>>
技術系 > ソフトウェア | comments (0) | trackbacks (0)