【发布时间】:2017-06-19 22:08:05
【问题描述】:
我正在开发一个需要我使用 python 库进行编码的项目。称为pyomo。
我需要将索引变量的值设置为索引表达式。
所以总共有 2 个模型和 1 个创建它们的实例的脚本。
第一个模型:
m.i = [1,2,3] # i=1,2,3
m.j = [1,2,3] # j=1,2,3
m.index = Set(within=m.i*m.j) # m.index = [i]*[j] (pyomo set)
m.a = Var(m.index) # m.a[i,j]
m.Exp = Expression(m.index) # pyomo expression with [i,j] index
m.Const = Constraint(m.index, rule=const_rule)
def const_rule(m, index):
return m.a[index] == m.Exp[index]
第二个模型:
m.index = ... # same index with first model's m.index
m.y = Var(m.index) # lets assume it has values or I can put with init command
run.py 脚本:
instance1 = create_first_model()
instance2 = create_second model()
solve(instance2)
for k in instance1.index:
instance1.Exp[k].expr = instance2.y[k].value
solve(instance1)
很快:
对于这个 for 循环,我需要一个更好的方法。或更有效的方法(循环很慢......)
问候 奥坎
Ps:所有的 vars、sets、expression 和 constraint 都是 pyomo 对象。
【问题讨论】:
标签: python for-loop runtime pyomo