Python PuLP"覆盖先前设定的目标。"和__dummy =无

时间:2017-10-10 16:31:23

标签: python warnings pulp

我在Python PuLP中构建了一个相当复杂的MIP。显然对我来说有点太复杂了。当我运行它时会发出以下警告:

  

UserWarning:覆盖先前设定的目标。   warnings.warn("覆盖以前设定的目标。")

问题执行了一些计算,但没有达到预期的解决方案。

LpStatus[prob.status]返回Optimal

prob.objective返回None

当我用

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

我在其他变量之间得到__dummy = None

任何人都可以解释__dummy = None在这种情况下的含义吗?我在哪里寻找解决方案?我很确定我只有一个目标函数。

1 个答案:

答案 0 :(得分:5)

好吧,我找到了解决方案。我确实在不注意它的情况下覆盖了目标函数。

以下是导致警告的代码:

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

delta变量是列表列表。第一个索引丢失,因此程序将列表与零进行比较。由于这是不可能的,因此等式总是返回false(可能编码为零),然后将其解释为目标函数。

这解决了这个问题:

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

现在它将方程而不是值添加到概率中。

我希望这可以帮助任何遇到类似问题的人。