我在 Python PuLP
中构建了一个非常复杂的 MIP。显然对我来说有点太复杂了。当我运行它时,它给出了以下警告:
问题进行了一些计算,但没有得出预期的解决方案。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
delta 变量是一个列表列表。第一个索引丢失,因此程序将列表与零进行比较。由于这是不可能的,方程总是返回 false(可能编码为零),然后将其解释为目标函数。
这解决了这个问题:
for i in range(len(items)):
for l in range(L):
prob += delta[i][0-l] == 0
现在它向概率添加方程而不是值。
我希望这可以帮助遇到类似问题的任何人。
关于Python PuLP "Overwriting previously set objective."和 __dummy = 无,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46671620/