打印标量值

时间:2017-03-07 11:49:46

标签: pyomo

有人知道为什么标量类型参数值不可打印吗?我有以下代码:

dtab = {
('seattle', 'new-york') : 2.5,
('seattle', 'chicago')  : 1.7,
('seattle', 'topeka')   : 1.8,
('san-diego','new-york'): 2.5,
('san-diego','chicago') : 1.8,
('san-diego','topeka')  : 1.4,
}

model.d = Param(model.i, model.j, initialize=dtab, doc='Distance in thousands of miles')

model.f = Param(initialize=90, doc='Freight in dollars per case per thousand miles')

print model.d.values()
print model.f.values()

当我运行它时,我得到以下结果:

[1.4, 1.8, 2.5, 2.5, 1.8, 1.7]
[<pyomo.core.base.param.SimpleParam object at 0x000000000B018438>]

任何人都可以帮助我真的需要能够打印标量进行调试。

1 个答案:

答案 0 :(得分:0)

这是由于对不可变索引Params进行的内存优化。如果使用mutable=True初始化索引的Param,您将看到与单例情况相同的行为。访问任何Param值的建议方法是使用Pyomo提供的value函数。如,

print([value(v) for v in model.d.values()])
print([value(v) for v in model.f.values()])