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

Axe*_*xel 1 python warnings pulp

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

用户警告:覆盖先前设置的目标。warnings.warn(“覆盖先前设置的目标。”)

该问题进行了一些计算,但未达到预期的解决方案。

LpStatus[prob.status]收益Optimal

prob.objective收益None

当我prob.variables()

for v in prob.variables():
    print(v.name, "=", v.varValue)
Run Code Online (Sandbox Code Playgroud)

__dummy = None介于其他变量之间。

谁能解释__dummy = None在这种情况下的含义?我在哪里可以找到解决方案?我非常确定我只有一个目标函数。

Axe*_*xel 7

好吧,我找到了解决方案。我确实重写了目标功能而没有注意到它。

这是引起警告的代码:

for i in range(len(items)):
        for l in range(L):
            prob += delta[0-l] == 0
Run Code Online (Sandbox Code Playgroud)

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

这解决了问题:

for i in range(len(items)):
        for l in range(L):
            prob += delta[i][0-l] == 0
Run Code Online (Sandbox Code Playgroud)

现在,它将等式而不是值添加到概率中。

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