pulp 在使用空列表理解时产生无意义的约束

pulp produces meaningless constraints when using empty list comprehensions

我正在使用 PuLP 解决林业 LP,并且浪费了很多时间来弄清楚为什么 CPLEX 会产生毫无意义的答案。本质上,由于空列表理解,我有一些变量未附加到问题的其余部分。我的约束总是这样的:

for year in YEARS:
    lp+=pulp.lpSum([vol[i]*x[i] for i in possible_combinations 
                    if test(i)])==yearly_volume[year], "yearly_volume[%d]" %(year)

并且在某些情况下,定义列表理解(测试)的条件从未满足,从而导致未附加的变量。当这种情况发生时,还有其他人认为 PuLP 应该警告我们吗?我最终应该得到一个看起来像

的约束
0==yearly_volume[2025]

但是没有添加约束!

0==yearly_volume[2025]

最初是发生了什么,然后有人建议从技术上讲是

None == yearly_volume[2025]

可以解释为空约束

我同意你关于警告的观点,但可能会在 github 存储库上发起一个问题。或者更好的拉取请求

谢谢

斯图