pyomo pprint仅将模型变量存储到文件

时间:2019-08-15 20:15:12

标签: output pyomo pprint

我正在尝试在解决优化之后输出模型变量。但是我只希望变量值进入输出文件,而不是整个模型。 (这是一个非常大的模型,有很多较大的约束,因此我最好将其缩减为我所需要的)

我尝试过:

(1)一击打印呼叫:

model.component_objects(Var, descend_into=True).pprint(filename='fin_soln.txt')

(2)迭代打印(下一步是添加.txt文件)

f = open("fin_soln_2.txt","a+")
for v in model.component_objects(Var, descend_into=True):
    print("FOUND VAR:" + v.name)
    f.write("FOUND VAR:" + v.name + "\n")
    v.pprint(filename=(v.name +'.txt'))
f.close()

由于存在数十个变量,并且模型仍在开发中,所以我希望它具有灵活性,并且在我从模型中添加/删除变量时,我不必不断更新。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

也许这样可以工作:

textbuffer = StringIO()
for v in model.component_objects(Var, descend_into=True):
    v.pprint(textbuffer)
    textbuffer.write('\n')

with open('filename.txt', 'w') as outputfile:
    outputfile.write(textbuffer.getvalue())