首页 > 解决方案 > 如何在 Python Pulp 中编写复杂的约束

问题描述

我需要使用 python 纸浆编写一些复杂的约束。这是一个例子,

假设我有三组A=[1,2,3,4], B=[A1,A2,A3,A4], and C=[C1,C2,C3]

和三个参数weight[a, b], amount[a, b, c], flag[a, b, c],其中flag[a, b, c] = 1 仅用于索引的少数场景,仅说flag["1", "A1", "C1"] = 1flag["2", "A2", "C3"] = 1

然后,仅当 flag[(a, b, c)] == 1 时,我才需要定义一个包含 amount[a, b, c] 总和超过 c 的约束,类似于以下约束。我正在努力寻找一种正确的方法来处理这个逻辑,因为我经常看到一个错误,指出在我定义一组索引后 (a, b, c) 的某些组合不适用于 flag[(a, b, c)] c 通过索引 a 和 b。

for a in A.index: 
    for b in B.index: 
        model += weight[a, b] <= pulp.lpSum([amount[a, b, c] for c in C.index if flag[(a, b, c)] == 1]);

你知道怎么写这样的约束吗?

标签: pythonoptimizationmodelconstraintspulp

解决方案


推荐阅读