6

解決したい線形整数プログラムがあります。ソルバー glpk (この回答のおかげで) と pyomo をインストールしました。次のようなコードを書きました。

from pyomo.environ import *
from pyomo.opt import SolverFactory

a = 370
b = 420
c = 2

model             = ConcreteModel()
model.x           = Var([1,2], domain=NonNegativeIntegers)
model.Objective   = Objective(expr = a * model.x[1] + b * model.x[2], sense=minimize)
model.Constraint1 = Constraint(expr = model.x[1] + model.x[2] == c)
# ... more constraints

opt = SolverFactory('glpk')

results = opt.solve(model)

これにより、 file の解が生成されますresults.yaml

同じモデルを使用して解決したい問題がたくさんありますが、a値は異なります。、、およびに異なる値を割り当て、モデルを解き、およびの解を取得し、 、、、およびのリストを取得したいと考えています。私はドキュメントを読みましたが、例は.bcabcmodel.x[1]model.x[2]abcmodel.x[1]model.x[2]results.yaml

コードからソリューションの値にアクセスする方法はありますか?

ありがとう、

4

3 に答える 3

11

これがあなたが探しているものかどうかはわかりませんが、これはスクリプトの 1 つでいくつかの変数を出力する方法です。

from pyomo.environ import *
from pyomo.opt import SolverFactory
from pyomo.core import Var

M = AbstractModel()
opt = SolverFactory('glpk')

# Vars, Params, Objective, Constraints....

instance = M.create_instance('input.dat') # reading in a datafile
results = opt.solve(instance, tee=True)
results.write()
instance.solutions.load_from(results)

for v in instance.component_objects(Var, active=True):
    print ("Variable",v)
    varobject = getattr(instance, str(v))
    for index in varobject:
        print ("   ",index, varobject[index].value)
于 2016-08-01T19:56:33.113 に答える