0

私はPulpを使用して線形プログラムを解決しています (scipy でも同じ結果が得られます)。私の線形計画法に問題があるか、シンプレックス アルゴリズムがどのように機能するかについてのトリッキーな詳細がわかりません。

最小化の目的関数は次のとおりです。乗数x2はであることに注意してください。したがって、 には最大制約がなく、最小化により多くの値を提供できるため、以外の値を0期待しx1たり、持ったりすることはありません。x20x3-1 * x3

目的関数

線形方程式系:

一次方程式系

解決策として、x2 = 20目的関数の乗数が であっても取得してい0ます。

線形プログラムの結果

目的関数で を設定した場合、-2 * x3問題なく動作します。

4

1 に答える 1

2

あなたが投稿したソリューションは、目標 = -380 を与えます。確認x=[20,0,0,20,0,20,20,0]してください。目的関数も -380 であり、これも最適であることを意味します。したがって、無限に多くの解があります (この 2 つの点の任意の凸結合が最適であることを示すのは簡単です。線形計画法の本を参照してください)。問題は、1 つの最適な極値点に遭遇したときに PuLP ソルバーが停止したことです。最適な極値をすべて取得することに関心がある場合は、Cplex を使用することをお勧めします (無料ではありませんが、IBM のアカデミック イニシアチブの対象となる可能性があります)。また、PuLP ソルバーで解法を Dual Simlex に設定して、別の方向に進むようにすることもできます。これにより、他の極端な点が得られる可能性があります。

于 2016-01-01T15:26:12.010 に答える