python - 如何在 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"] = 1
和flag["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]);
你知道怎么写这样的约束吗?
解决方案
推荐阅读
- excel - 案例声明以防止打开某些文件?
- java - 序列化时间戳转换为秒
- android - 将可绘制数组与数组字符串进行比较 android studio
- javascript - 如何在 React 中使用来自 API 的动态数据创建树形显示?
- azure - 如果我的函数在 24 小时内没有被调用,我可以设置 Azure Application Insight 警报吗?
- c - C 编程寄存器结构
- python - TypeError:参数 1 必须是 pygame.Surface,而不是类型
- sass - 仅共享我的 sass/scss 变量的主题变量
- java - 我正在尝试将商品的基本价格设置为 3 美元,但它与我的数学(java)的其余部分混淆了
- php - 每次使用不同的 POST 输入通过 PHP 从数据库中进行选择