Python 2.7.8、Windows 32 ビットで PuLP プログラミング ライブラリを実行しています。混合整数線形計画問題のソルバーとして GLPK を使用しています。ソルバーは約に収束します。最適解の 1% を迅速に計算しますが、正確な最適解を計算するには時間がかかります。PuLP を使用して GLPK ソルバーのパーセント許容誤差を指定する方法はありますか? https://pythonhosted.org/PuLP/solvers.htmlを検索しましたが、GLPK ソルバーに関する回答はありません。
2931 次
1 に答える
7
コマンド ラインで "--help" を指定して "glpsol" を実行すると、"--mipgap tol" が表示されます。ここで、tol は許容値です。
それで、PuLPでこれを試しましたか:
model.solve(GLPK(options=['--mipgap', '0.01']))
(少し前のこの議論から) (そして、この同じメソッドを使用して、より多くの引数を渡す方法に注意してください)。
さらに、ソース コード (「solvers.py」) を調べて、GLPK がその「オプション」引数をどのように期待しているかを調べました。実際、上記のように引数を期待しています (以下に再現されたファイルの 345 行目あたりを見てください)。 :
proc = ["glpsol", "--cpxlp", tmpLp, "-o", tmpSol]
if not self.mip: proc.append('--nomip')
proc.extend(self.options)
したがって、「proc」(後で Python の「サブプロセス」を使用して実行されるコマンド) が、「オプション」を介して指定した内容で「拡張」されていることがわかります (偶然、変数 self.options に格納されます)。したがって、上記のアプローチ(リストで「--mipgap」などを使用)は(まだ)正しいようです。
最後に、私はそれを自分で試したことはありませんが、これが役立つことを願っています.
于 2014-12-16T04:45:44.187 に答える