Определить параметр в 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']
Другие вопросы по тегам