擅长:python、mysql、java
<p>诀窍在于定义用于索引变量的索引集。Pyomo不支持在单个索引上循环并一次将它们添加到一个Var中。您应该使用一些聪明的Python代码来构建整个索引集。例如,可以使用类似的方法筛选出所需的索引:</p>
<pre><code>m = ConcreteModel()
m.g = Set(initialize=[1,2,3])
h = {1:['a','b'], 2:['b','c'], 3:['c','d']}
m.h_all = Set(initialize=set(sum(h.values(),[]))) # Extract unique h values
# Initialize set to be entire cross product of g and h and then filter desired values
m.hg = Set(initialize=m.g*m.h_all, filter=lambda m,g,hi:hi in h[g])
m.x = Var(m.hg, within=NonNegativeReals)
</code></pre>
<p>更好的选择是:</p>
^{pr2}$