数値計算ライブラリ
■ FADBAD++
http://www.fadbad.com/fadbad.html
C++言語のテンプレートを活用した微分計算ライブラリ。オープンソース。
最適化計算では、目的関数の微分値を求める必要が生じるけど、それを自分で実装するのは手間がかかる。
FADBAD++では、目的関数を記述するだけで、その微分計算が自動でできてしまう。
微分のチェーンルール(参照)を使って、精度よく値を求められる。
例:
目的関数を次のように定義しておく
B<double> func(const B<double>& x, const B<double>& y) { B<double> z=sqrt(x); return y*z+sin(z); }
以下のような短い記述でxおよびyで微分した値が求まってしまう。
B<double> x,y,f; // Declare variables x,y,f x=1; // Initialize variable x y=2; // Initialize variable y f=func(x,y); // Evaluate function and record DAG f.diff(0,1); // Differentiate f (index 0 of 1) double fval=f.x(); // Value of function double dfdx=x.d(0); // Value of df/dx (index 0 of 1) double dfdy=y.d(0); // Value of df/dy (index 0 of 1)
■ Ipopt (Interior Point OPTimizer)
https://projects.coin-or.org/Ipopt
C++言語による、非線形最適化問題のソルバ。オープンソース。
- 作者: 穴井宏和
- 出版社/メーカー: 講談社
- 発売日: 2013/02/20
- メディア: 単行本(ソフトカバー)
- クリック: 1回
- この商品を含むブログ (3件) を見る
- 作者: 山田功
- 出版社/メーカー: 数理工学社
- 発売日: 2009/05/01
- メディア: 単行本
- 購入: 1人 クリック: 7回
- この商品を含むブログ (2件) を見る