2017-03-07 58 views
0

有人知道爲什麼標量類型參數值不可打印嗎?我有以下代碼:打印標量值

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>] 

任何人可以幫助我真的需要能夠打印標量進行調試。

回答

0

這是由於爲不可變索引參數發生的內存優化。如果使用mutable=True來初始化索引參數,則會看到與單例情況相同的行爲。建議訪問任何Param值的方法是使用Pyomo提供的value函數。例如,

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