Python PuLP“覆盖以前设置的目标。”和__dummy =无
问题描述:
我在Python PuLP
中构建了一个非常复杂的MIP。显然对我来说太复杂了。当我运行它时,会发出以下警告:Python PuLP“覆盖以前设置的目标。”和__dummy =无
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
在这种情况下意味着什么?我在哪里可以寻找解决方案?我很确定我只有一个目标函数。
答
好的,我找到了解决方案。我确实重写了目标函数,却没有注意到它。
下面是导致警告的一段代码:
for i in range(len(items)):
for l in range(L):
prob += delta[0-l] == 0
增量变量是一个列表的列表。第一个索引不见了,因此该程序将一个列表与零比较。由于这是不可能的,所以等式总是返回假(可能编码为零),然后将其解释为目标函数。
这解决了这个问题:
for i in range(len(items)):
for l in range(L):
prob += delta[i][0-l] == 0
现在它增加了而不是值的概率方程。
我希望这可以帮助任何人遇到类似的问题。