数理最適化(線形計画法、凸最適化、またはより一般的なタイプの問題)を実行するそのようなライブラリを知っている人はいますか?私はMATLABのようなものを探していますが、より大きな問題を処理する機能を備えています。独自の実装を作成する必要がありますか、それともそれらの商用製品(CPLEXなど)の1つを購入する必要がありますか?
7 に答える
良い答えは、「凸」と「より一般的」が何を意味するかによって異なります。大規模または困難な線形または凸二次最適化問題を解決しようとしている場合 (特に離散コンポーネントを使用して)、それを打ち負かすのは困難です。お金があなたにとって大きな問題でない限り、主要な商用ソルバー、gurobi、cplex、およびDash 。それらはすべてクリーンな JNI インターフェイスを備えており、ほとんどの主要なプラットフォームで利用できます。
coin-orプロジェクトにはいくつかのオプティマイザーがあり、JNI インターフェース用のプロジェクトがあります。これは完全に無料 ( EPLライセンス) ですが、セットアップにはより多くの作業が必要であり、おそらく同じパフォーマンスは得られません。
lpsolveという線形最適化ツールがあります。これは C で書かれていますが (私はそう思います)、Java/JNI ラッパーが付属しています (API はオブジェクト指向ではありませんが、機能します)。これは非常に使いやすく、昨年はライブ システムで非常に快適かつ安定して動作していました。
OptaPlanner(Java、オープンソース、ASL)は大きな問題を処理でき、制約タイプの制限(線形と凸など)はありません。
オープンソースであり、一般的な凸最適化問題 (線形計画法、二次計画法、qcqp、円錐計画法、半正定値計画法など) に適したJOptimizerを試すことができます。
あなたはJScienceを見たいかもしれません、それはかなり完全に見えます。(数学的構造、線形代数解法など)
IPOPT にはJava 用のインターフェースがあります。APMonitor モデリング言語を Java に適合させることもできます。私はこのプラットフォームを開発しているので、誰かが Java への新しいインターフェイスを作成したい場合は喜んで協力します。既にPython APIと MATLAB インターフェイスがあり、大規模システムを処理できる IPOPT、APOPT、BPOPT などのソルバーが含まれています。
AMPLを調べます。基本版は無料ですが、より大きな問題には料金がかかります。言語にお金はかかりません。あなたはソルバーにお金を払います。コードをアップロードして、サーバーで実行することもできます。