2

私はCoin-ORの線形計画(LP)ソフトウェアを使用して一連の線形計画を解決しようとしています。各プログラムのデータの大部分は2つの.csvファイルに含まれていますが、線形最適化を実行するたびにデータの一部を修正する必要があります。ベクトル配列をC++で.MPSファイルに変換

コインORのLPソルバーに.MPSファイルを読み込むようにしか聞こえないようで、AMPLのようなプログラムを使って別々に.MPSファイルを作成することも可能です。しかし、これらの最適化の自動反復シリーズを実行しようとしているので、AMPLまたはGurobiを使用して単一の問題インスタンスを作成し、結果の.MPSファイルでソルバーを呼び出すだけでは実現できません。私はファイルをすべての問題、おそらく数千または何百万回でも変更する必要があります。

ベクトル配列やその他の標準的なC++データ構造を.MPSファイルに変換できるC++ライブラリがあれば誰でも知っていますか?あるいは、これらのデータ構造をCoin-ORのLPソルバの入力として指定する方法はありますか?

+0

この質問の「代替」部分だけがトピックになっていると思います。フラグによると、 "本、ツール、ソフトウェアライブラリ、チュートリアル、またはその他のオフサイトリソースを推薦するか探し出すことを尋ねる質問は、批判的な回答とスパムを引き付ける傾向があるため、スタックオーバーフローの話題にはならない。これを解決するためにこれまでに何が行われていますか? " –

答えて

2

APIを使用してCoin-ORのCLPを呼び出すのは良いですか?純粋なLPの場合、MPSファイルの書き込みと読み取りは高価になる可能性があります。それ以外の場合、CLPには独自のMPSWriterがあります.CoinMpsIO :: writeMpsです。同様のモデルを多く実行する場合は、ソルバをウォームスタートさせることをお勧めします。また、AMPLには直接COIN-OR CLPインターフェイス(https://github.com/ampl/coin)があり、MPSファイルを通過する必要はありません。

+0

オンラインでLPをメモリに組み込んでCLPへの呼び出しで解決する方法を示すオンラインC/C++の例はありますか? – tyebillion

+0

examplesディレクトリに、 'loadproblem'の使い方をデモします:[link](https://projects.coin-or.org/Clp/browser/trunk/Clp/examples/network.cpp)。 –

0

Erwinが言ったように。 APIを使用します。 MPSファイルなどを使用すると、さまざまなソルバー上で特定のモデルを試すのに便利です。 LP形式は、あなたのモデルが期待したものを実装しているかどうかを理解するのに適しています。回帰テストなどのために特定のケースをアーカイブするためにMPSファイルを使用することさえあるかもしれません。しかし、NOBODYはソルバーに供給されるファイルを作成する必要があります。可能であれば、APIを使用してください。

関連する問題