首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyomo/IPOPT:检索计算变量

Pyomo/IPOPT:检索计算变量
EN

Stack Overflow用户
提问于 2018-08-04 04:57:29
回答 1查看 207关注 0票数 1

我想知道检索解决方案值的Pyomo式方法是什么(特别是只针对求解器计算的变量)。

在我的例子中,变量'x‘被三个集合索引,因此它的键是3元组,例如xCC,N5R_0,ntg。在求解之前,变量'x‘有7626个元素。求解器(IPOPT)报告它正在解决包含1339个元素的问题:

代码语言:javascript
复制
Total number of variables............................:     1339

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

我尝试只获取非零值,但如果初始值不全为零,则不起作用。

有没有一种快速和编程的方法来提取这1339个变量组件的值?(除了对IPOPT输出文件进行单独的后期解析?)

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

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-04 05:22:05

简而言之,答案是肯定的,每个Var组件都有一个stale标志,该标志指示在上次求解模型时是否更新了变量的值。如果你在一个Var上调用pprint,你会看到一个'Stale‘列,变量中的每个索引都有这个值。您可以使用以下命令仅遍历非陈旧的变量:

代码语言:javascript
复制
for v in m.component_data_objects(Var):
    if v.stale:
        continue
    print(str(v), ' = ', value(v))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51680010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档