Определить параметр в pyomo из словарного ключа
Я довольно плохо знаком с Python/Pyomo и пытаюсь определить параметр cost(n) из ключа ('score') в этом словаре, который я создал:
operations[1] = {"score" : 100, "start_node": 2, "end_node": 3}
operations[2] = {"score" : 120, "start_node": 4, "end_node": 3}
...
operations[n] = {"score" : 155, "start_node": 5, "end_node": 2}
Я пытался сделать это с помощью этого подхода, но, похоже, он не работает:
n_operations=len(operations)
model = ConcreteModel()
model.O = RangeSet(1,n_operations)
def c_init(model, operations):
for i in range(1,n_operations):
print(i)
cost=operations[i]['score']
return cost
model.cost = Param(model.O, initialize=c_init)
У вас есть идея, как решить эту проблему?
Спасибо!
1 ответ
Решение
Как и все правила в Pyomo, когда вы передаете функцию в Param's initialize=
Ключевое слово, эта функция вызывается один раз для каждого индекса. Поэтому вы должны изменить свое правило так:
def c_init(model, operation):
return operations[operation]['score']