C++での非常に大きくてまばらな非線形最小二乗問題を解決するためのソフトウェアパッケージを探しています。C ++で多数の最新のlinalgライブラリ(eigen、armadillo、boostなど)に出くわしましたが、そのようなソルバー(または通常の最小二乗ソルバー)が組み込まれているようには見えません。可能であれば、古いC/Fortranインターフェースへの大量の厄介な呼び出しを避けたい。ありがとう!
質問する
2165 次
2 に答える
0
制約が必要ない場合は、Ceresまたはg2oを試してください。どちらも Eigen の上に構築され、スパース マトリックス ソルバー、つまりSuiteSparseとその仲間を利用できます。
于 2014-01-21T03:11:27.753 に答える
0
C++ で記述された汎用 NLP ソルバー IPOPTを単純に使用します。これは、私が試した中で最も堅牢なソルバーであり、非常に大きな問題に対して意図され、うまく使用されています。
要件の変更 (制約の追加など) は、汎用の IPOPT を使用すれば問題ありません。
解法手順の時間のかかる部分は、各反復ステップで線形システムを解くことなので、プラットフォームに最適な線形ソルバー + LinAlg パッケージを取得する価値があります。
残念ながら、IPOPT は内部で Fortran サブルーチンを呼び出すため、Fortran コンパイラが必要になりますが、これはちょっと面倒です。
IPOPT では不十分な場合は、問題固有のソルバーを探す必要があります。
于 2012-10-04T18:55:01.827 に答える