微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Pyomo:行级别的求和约束<= 1

如何解决Pyomo:行级别的求和约束<= 1

在 Pyomo 中设置 Concretemodel 期间,我需要设置以下约束 sum_of_perc[times,companys]

目前我有以下代码

m.cons.add(sum(m.key_optimized[t,c] for t,c in itertools.product(m.times,m.companies)) <= 1)

itertools.product 允许我在不同的时间和公司之间循环。

考虑以下二维数组的假设/随机示例。每行是一个 t,每个元素是 c

[0.1,0.4,0.0,0.5] <= 1
[0.2,0.2,0.6,0.0] <= 1

目前我的约束试图让整个 2D 矩阵

(0,0) 0.34
(0,1) 0.42
(0,2) 0.0
(0,3) 0.16
(1,0) 0.005
(1,1) 0.075
(1,2) 0.0
(1,3) 0.0

感谢您的帮助!

解决方法

我想这会回答你的问题...

首先,如果您想在没有 I/System.out: result = 2 I/System.out: result still = 2 I/System.out: result in the class = 0 的情况下复制您刚刚所做的事情,很容易制作 2 组的完整交叉产品。请参阅下面的第一部分。

如果您要为某事的每一个做约束,您应该立即考虑设置一个函数-规则组合,该组合将为每个成员调用该函数。您在约束中提供的集合。见下文后半部分。

itertools

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。