1

次のような数学関数を内部に持つアルゴリズムをC#で実装しようとしています:

a ||xu( i ) - ∑j aj( i ) bj ||2 + β || を最小化します。a( i ) ||1

しかし、C# に最適化のための直接的な方法があるかどうかはわかりませんし、フォーラムで何かを見つけることができませんでした。または、C# でこの最適化の問題を解決するための提案を提供できるかもしれません!?

4

1 に答える 1

5

問題に適した C# バインディングを備えたソルバーがいくつかあります。次に例を示します。

  • MS Solver Foundationは、数学的最適化のための Microsoft のプラットフォームであり、制約のない最小二乗法や制約付きの最小二乗法など、さまざまな問題のソルバーを提供します。API を掘り下げる努力が必要ですが、代わりに導関数が自動的に計算されます。
  • ALGLIBは、さまざまなオプティマイザーを幅広く提供しており、C#で利用できます。
  • IPOPT は、上記の Ali のコメントで言及されました。IPOPT への C# バインディングを開発しました。ここからダウンロードできます。もちろん偏見がありますが、個人的には API はかなり単純だと思います。csipoptを使用している場合は、派生物を手動で提供する必要があります。(実際にはcsipoptを組み込んで自動導関数計算を提供するライブラリFunclibもあります。)
  • COBYLA2 (非線形制約がある場合) と BOBYQA (制限がある場合、または制約がない場合) は、Michael Powell によって開発された導関数を使用しない直接検索方法です。これらのソルバーを 100% マネージ コードである C# に移植しました。C# COBYLA2 プロジェクトはこちらから、C# BOBYQA プロジェクトはこちらから入手できます。
于 2012-08-25T12:29:38.197 に答える