2017-03-07 4 views
0

Est-ce que quelqu'un sait pourquoi les valeurs des paramètres de type scalaire ne sont pas imprimables? J'ai le code suivant:Impression des valeurs scalaires

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() 

Quand je cours j'obtenir les résultats suivants:

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

peut-elle aider à personne que j'ai besoin realy pouvoir imprimer pour le débogage scalaires.

Répondre

0

Ceci est dû à une optimisation de mémoire qui se produit pour les paramètres indexés immuables. Vous verriez le même comportement que le cas singleton si mutable=True était utilisé pour initialiser le paramètre indexé. La méthode suggérée pour accéder à la valeur de n'importe quel Param consiste à utiliser la fonction value fournie par Pyomo. E.g.,

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