如何解决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 举报,一经查实,本站将立刻删除。