Pyomo/IPOPT:检索计算变量

2024-10-01 17:26:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道什么是Pyomo-ish方法来检索解的值(特别是对于由解算器计算的变量)。你知道吗

在我的例子中,变量“x”被三个集合索引,因此它的键是三元组,例如x[CC,N5R\u 0,ntg]。在求解之前,变量“x”有7626个元素。 解算器(IPOPT)报告它正在解决1339个元素的问题:

Total number of variables............................:     1339

求解之后,instance.x组件仍然有7626个元素。 但在查看结果时,我只想提取1339个计算变量的值。你知道吗

我试着只得到非零值,但如果初始值不是都为零,那就行不通了。你知道吗

是否有一种快速且编程的方法来提取1339个变量组件的值? (除了单独解析IPOPT输出文件之外?)你知道吗

例如,此信息是否以某种方式嵌入到.solve()之后的模型实例对象中?你知道吗

谢谢


Tags: 方法元素number报告组件例子pyomocc
1条回答
网友
1楼 · 发布于 2024-10-01 17:26:39

简而言之,答案是肯定的,每个Var组件都有一个stale标志,指示上一次求解模型时是否更新了变量的值。如果您在Var上调用pprint,您将看到一个'Stale'列,其中变量中的每个索引都有这个值。您只能使用以下方法循环使用非过时变量:

for v in m.component_data_objects(Var):
    if v.stale:
        continue
    print(str(v), ' = ', value(v))

相关问题 更多 >

    热门问题