更改loup内的参数值

时间:2017-03-16 09:35:36

标签: pyomo

我已经创建了一个参数,用于在迭代程序中的每个实例求解后报告值。我希望我的参数能够被定义迭代次数的集合索引,并且还有两个其他自由索引,如下所示: / p>

model.report=Param(model.iter,[],[])

然后我想创建一个函数,它将被调用到while循环中,它将创建我的模型,解决一个实例并为某些变量赋予一些值,这些变量的名称将用作我的索引报告参数,如下:

report(model.iter,'cost',model.i)=model.cost[i]

其中model.cost是我的成本变量,由set i索引。 有可能吗?

1 个答案:

答案 0 :(得分:0)

最好只让model.report成为Python dict。然后,您可以使用您喜欢的任何键为其分配条目:

model.report = dict()
...
for j in range(10):
    # assumes model.i is a simple built-in type and not a Param
    # (otherwise you would need to use model.i.value)
    model.report[j,'cost',model.i] = model.cost[j]

除非您在某种表达式中使用这些值,并且希望以后能够通过更改{的值来更新表达式,否则没有理由在此上下文中使用Param {1}}(即,在声明Param时使用mutable=True