0

我想在使用pulp库的python中为线性编程问题增加一个约束。我尝试了下面的代码。Python纸浆约束

for week in range(14,52), i in I.index: 
    k = week 
    model += sum(x[(i, j, week, B)] for week in range(k, k+13), 
             j in J.index) <= 1 

其中i和j具有以下指标

I.index = ['A','B','C'] 
J.index = [1,2,3] 

我得到的错误是SyntaxError: Generator expression must be parenthesized if not sole argument。我研究了这个链接 Generator expression must be parenthesized if not sole argument 但是它似乎没有解决我的问题。任何帮助表示赞赏。

+1

IDK纸浆,但我认为即使你的第一行是错误的,因为它被编译成如下形式:'在(范围(14,52),我在I.index)'的周,所以你的for循环只是迭代2个元素,第一个是'范围'发生器(也许这是问题),第二个是布尔语句(如[1,2,3] == True中的1) –

回答

0

或者段的评论看起来是正确使用的语法应该是

for week in range(14,52), i in I.index: 
    k = week 
    model += sum(x[(i, j, week, B)] for week in range(k, k+13) 
            for j in J.index) <= 1 

但在这种情况下,它会快得多,如果你使用lpSum()函数

for week in range(14,52), i in I.index: 
    k = week 
    model += lpSum(x[(i, j, week, B)] for week in range(k, k+13) 
            for j in J.index) <= 1