Python 纸浆 "Overwriting previously set objective." 和 __dummy = None
Python PuLP "Overwriting previously set objective." and __dummy = None
我在 Python PuLP
中构建了一个相当复杂的 MIP。显然对我来说有点太复杂了。当我 运行 它给出以下警告:
UserWarning: Overwriting previously set objective.
warnings.warn("Overwriting previously set objective.")
问题执行了一些计算,但没有得到预期的解决方案。
LpStatus[prob.status]
returnsOptimal
prob.objective
returnsNone
当我用
打印 prob.variables()
时
for v in prob.variables():
print(v.name, "=", v.varValue)
我在其他变量之间得到 __dummy = None
。
任何人都可以解释 __dummy = None
在这种情况下的含义吗?我在哪里可以找到解决方案?我很确定我只有一个 objective 函数。
好的,我找到了解决方案。我确实在没有注意到的情况下覆盖了 objective 函数。
这是导致警告的代码片段:
for i in range(len(items)):
for l in range(L):
prob += delta[0-l] == 0
delta 变量是一个列表列表。第一个索引丢失,因此程序将列表与零进行比较。由于这是不可能的,因此方程总是 returns 假(可能编码为零),然后被解释为 objective 函数。
这解决了问题:
for i in range(len(items)):
for l in range(L):
prob += delta[i][0-l] == 0
现在它向概率添加方程而不是值。
希望这对遇到类似问题的人有所帮助。
我在 Python PuLP
中构建了一个相当复杂的 MIP。显然对我来说有点太复杂了。当我 运行 它给出以下警告:
UserWarning: Overwriting previously set objective. warnings.warn("Overwriting previously set objective.")
问题执行了一些计算,但没有得到预期的解决方案。
LpStatus[prob.status]
returnsOptimal
prob.objective
returnsNone
当我用
打印prob.variables()
时
for v in prob.variables():
print(v.name, "=", v.varValue)
我在其他变量之间得到 __dummy = None
。
任何人都可以解释 __dummy = None
在这种情况下的含义吗?我在哪里可以找到解决方案?我很确定我只有一个 objective 函数。
好的,我找到了解决方案。我确实在没有注意到的情况下覆盖了 objective 函数。
这是导致警告的代码片段:
for i in range(len(items)):
for l in range(L):
prob += delta[0-l] == 0
delta 变量是一个列表列表。第一个索引丢失,因此程序将列表与零进行比较。由于这是不可能的,因此方程总是 returns 假(可能编码为零),然后被解释为 objective 函数。
这解决了问题:
for i in range(len(items)):
for l in range(L):
prob += delta[i][0-l] == 0
现在它向概率添加方程而不是值。
希望这对遇到类似问题的人有所帮助。