问题描述
在 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