繁体   English   中英

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

[英]Python PuLP “Overwriting previously set objective.” and __dummy = None

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

用户警告:覆盖先前设置的目标。 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

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

这解决了问题:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM