0

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

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

然后我不想创建一个函数,它将被调用到一个while循环中,这将创建我的模型,解决一个实例并为一些变量提供一些值,其名称将用作我的报告参数中的索引,就像这样:

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

其中 model.cost 是我的成本变量,由集合 i 索引。有可能这样做吗?

4

1 回答 1

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在这种情况下使用 a ,除非您在某种表达式中使用这些值,并且您希望以后能够通过更改的值来更新表达式Param(即,您将mutable=True在声明时使用Param)。

于 2017-03-16T13:54:36.130 回答