0

fsolve関数を使用するCでMatlabコードを再構築しようとしています。ドキュメントから、それは「信頼領域反射」アルゴリズムを使用しています(私はすでにLevenberg-marquardtアルゴリズムを使用してそれを構築しました、そしてそれは完全に異なって収束しています)。誰かがC/C ++でこのタイプの最適化を行うためのライブラリを推奨できますか?

4

3 に答える 3

4

「反射」が「信頼領域」の定義に追加するものがわからない。ただし、Knitroは、C/C++ インターフェイスを備えた強力な信頼領域内点オプティマイザーです。残念ながら、Knitroは学生向けの限定版でのみ無料で入手できます。完全版には商用ライセンスが必要です。

信頼領域ではありませんが、強力な C/C++ ベースの大規模な非線形制約付き最適化エンジンであり、オープンソース ライセンスを備えたIpoptもあります。

于 2012-10-25T13:42:38.337 に答える
3

関数が凸であるかどうかを確認してみましたか。LMと他の凸最適化アルゴリズムの収束が異なる場合は、基本関数が凸ではない可能性があります。また、コスト関数が少なくとも2次であるかどうかを確認しましたか。この場合、コスト関数の2乗を最小化する方が、コスト関数だけを最小化するよりも優れている可能性があります。

于 2012-11-26T11:32:54.870 に答える
2

グローバル収束保証がある汎用アルゴリズムには2つのタイプがあります(標準的な仮定の下では、尋ねないでください:))。これらの方法は、ライン探索法と信頼領域法です。必要に応じて、このトピックの詳細については、Nocedal-Wright:NumericalOptimizationの本を参照してください。

私は最近Knitroを試していません。

Ipoptは、私が試したソルバーの中で最も堅牢なソルバーです。強くお勧めします。ライン探索法を実装し、C++で記述されています。

于 2012-10-25T17:43:04.123 に答える