2017-10-10 16 views
0

私はかなり複雑なMIPをPython PuLPに作りました。明らかに私にとってはちょっと複雑すぎる。私はそれを実行すると、次の警告が表示されます。Python PuLP "以前に設定された目的を上書きする" __dummy = None

UserWarning:以前に設定された目的を上書きします。 warnings.warn(「上書きが以前に目標設定してください。」)

問題はいくつかの計算を実行しますが、期待されるソリューションに付属していません。

LpStatus[prob.status]戻りOptimal

prob.objective戻りNone

私は

for v in prob.variables(): 
    print(v.name, "=", v.varValue) 

prob.variables()を印刷するとき、私は他の変数の間に__dummy = Noneを取得します。

この文脈では__dummy = Noneが何を意味するのか誰も説明できますか?どこで解決策を探すことができますか?私は1つの目的関数しか持っていないとはかなり確信していました。

答えて

2

申し訳ありませんが、解決策が見つかりました。私は実際にそれに気づかずに目的関数を上書きしました。

for i in range(len(items)): 
     for l in range(L): 
      prob += delta[0-l] == 0 

デルタ変数はリストのリストである:ここで

は警告の原因となったコードの一部です。最初の指数がなかったので、プログラムはリストをゼロと比較した。これは不可能なので、方程式は常にfalseを返します(ゼロとしてコード化されるかもしれません)。それは目的関数として解釈されます。

これは、問題を解決:

for i in range(len(items)): 
     for l in range(L): 
      prob += delta[i][0-l] == 0 

は、今ではPROBに方程式の代わりに、値を追加します。

これは誰でも同様の問題が発生するのを助けてくれることを願っています。

関連する問題