如何显示集和参数pyomo

时间:2017-10-06 12:01:57

标签: pyomo

我有一个抽象模型,它从.dat文件加载数据

set T := 1 2 3 4 5 6 7 8 9 10;
set F := f1 f2 f3;
set K := A B C;
set S := I II III IV;
set C := f2 f3;

param D_k  :=
A 1
B 1
C 1;

param A_k  :=
A 1
B 1
C 1;

我希望能够从.py文件中的.dat文件可视化我调用的集合和参数,如下所示:

from __future__ import division
from pyomo.environ import *
from coopr.pyomo import *
from objbrowser import *
import os
model = AbstractModel()

model.T = Set()
model.F = Set()
model.K = Set()
model.S = Set()
model.C = Set()

model.D_k = Param(model.K)
model.A_k = Param(model.K)

我正在使用spyder,但是在变量资源管理器中没有显示任何内容,我也尝试使用model.pprint但是我得到了这个:

4 Set Declarations
C : Dim=0, Dimen=1, Size=0, Domain=None, Ordered=False, Bounds=None
    Not constructed
F : Dim=0, Dimen=1, Size=0, Domain=None, Ordered=False, Bounds=None
    Not constructed
K : Dim=0, Dimen=1, Size=0, Domain=None, Ordered=False, Bounds=None
    Not constructed
S : Dim=0, Dimen=1, Size=0, Domain=None, Ordered=False, Bounds=None
    Not constructed

2 Param Declarations
A_k : Size=0, Index=K, Domain=Any, Default=None, Mutable=False
    Not constructed
D_k : Size=0, Index=K, Domain=Any, Default=None, Mutable=False
    Not constructed

6 Declarations: F K S C D_k A_k 

在此图像中出现运行时遇到的问题 Image

有谁知道如何能够查看集合和参数以了解它们是否在.py文件中被良好导入和调用?

非常感谢你,Cristobal

1 个答案:

答案 0 :(得分:1)

在您的脚本中,model.pprint()正在应用于尚未构建的模型;你需要明确告诉它加载数据。这就是为什么你只看到说Not Constructed的声明。

要在脚本中构建模型,可以使用create_instance。因此,'abs_data.dat'是数据文件的名称:

from pyomo.environ import *
model = AbstractModel()

model.T = Set()
model.F = Set()
model.K = Set()
model.S = Set()
model.C = Set()

model.D_k = Param(model.K)
model.A_k = Param(model.K)

instance = model.create_instance('abs_data.dat')
instance.pprint()

运行它会得到输出:

5 Set Declarations
    C : Dim=0, Dimen=1, Size=2, Domain=None, Ordered=False, Bounds=None
        ['f2', 'f3']
    F : Dim=0, Dimen=1, Size=3, Domain=None, Ordered=False, Bounds=None
        ['f1', 'f2', 'f3']
    K : Dim=0, Dimen=1, Size=3, Domain=None, Ordered=False, Bounds=None
        ['A', 'B', 'C']
    S : Dim=0, Dimen=1, Size=4, Domain=None, Ordered=False, Bounds=None
        ['I', 'II', 'III', 'IV']
    T : Dim=0, Dimen=1, Size=10, Domain=None, Ordered=False, Bounds=(1, 10)
        [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

2 Param Declarations
    A_k : Size=3, Index=K, Domain=Any, Default=None, Mutable=False
        Key : Value
          A :     1
          B :     1
          C :     1
    D_k : Size=3, Index=K, Domain=Any, Default=None, Mutable=False
        Key : Value
          A :     1
          B :     1
          C :     1

7 Declarations: T F K S C D_k A_k