1

私は、線形計画法を含む特定の最適化プロジェクトで協力者と協力しています。問題を解決するために、Coin-OR 分岐切断ソルバーを使用します。Python ベースの PuLP パッケージを使用して .LP ファイルを作成します。協力者がどのように .LP ファイルを作成したかは完全にはわかりません (間違いなく Python を使用していません) が、本質的に、まったく同じ問題に対して .LP ファイルを生成する 2 つの異なるシステムがあります。つまり、目的関数、変数、制約がまったく同じです。 .

私は通常、Python 内で問題を解決します ( myProblm.solve()) が、.LP ファイルを生成し、コマンド ラインから CBC ソルバーを呼び出してこのファイル (問題) を解決することもありました。次に、自分のシステム (Python またはコマンドライン) から取得した出力と、共同作業者が取得した出力を比較します。[私の側の問題の出力は、PuLP で解決してもコマンドラインで解決してもまったく同じであることに注意してください。]

目的関数の値は私たちの間でよく一致していますが、他の詳細は完全には一致していません。たとえば、このウィスカのブレンド問題を解く場合、材料の総コストはまったく同じになりますが、材料の比率は異なります。それはなぜでしょうか?

手動で .LP ファイルを比較したところ、いくつかの違いに気付きました。まず、制約と変数の順序が異なります。つまり、5 つの制約がある場合、私のファイルではそれらが としてリストされますC1,C2,C5,C4,C3が、同じ制約は としてリストされC1,C2,C3,C4,C5ます。また、私の Python コードはすべての数値を 10 の位に丸めますが、彼のシステムはそれらを 1 の位に丸めます。したがって、一部の変数の係数はわずかに異なる値になります。

これらの違いは、ソルバーの正確な出力に影響しますか?

また、拡張による次の質問は次のとおりです: 線形計画法の最適化問題を解くときに、まったく同じ出力を得るにはどうすればよいでしょうか? LP 問題の解決に影響を与える要因はどれですか? .LP ファイルの構造などの要因は影響しますか? 同じ LP ファイルをまったく同じ条件で別のコンピューターで実行すると、まったく同じ出力が得られますか?

4

1 に答える 1