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 存储库上发起一个问题。或者更好的拉取请求
谢谢
斯图
我正在使用 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 存储库上发起一个问题。或者更好的拉取请求
谢谢
斯图