纸浆包装 LP 模型中的枚举约束

Enumerating Constraints in LP Model in Pulp Package

我正在使用 pulp 包使用 python 创建一个线性优化模型。我想知道是否有一种简单的方法可以在不对每个变量进行大量硬编码的情况下向模型添加约束。例如...我目前正在使用 for 循环来创建以下集合分区约束:

for j in range(0,(len(excel_data_df))) :
    i = j * 3
    OptModel += x[i] + x[i + 1] + x[i + 2] == 1

这适用于较小的问题。然而,随着变量 i 变大,添加约束中的所有索引变得非常耗时。

是否可以遍历我可以取的所有值,然后自动生成 OptModel+= 代码行?例如,如果变量 i 是 100,我希望代码生成以下内容,而不必手动添加每个 x[i] 变量。

 for j in range(0,(len(excel_data_df))) :
    for i in range(0,100)
       OptModel += x[0] + x[1] + x[2] + ......+ x[100] == 1

您可以使用 lpSum 方法,该方法允许您对变量列表求和 - 因此您需要做的就是找到一种生成要求和的索引的方法。在你的第二个例子中你可以这样做:

OptModel += lpSum([x[i] for i in range(0, 100)]) == 1