从字典键定义 pyomo 中的参数
Define parameter in pyomo from dictionary key
我是 Python/Pyomo 的新手,我正在尝试从我创建的字典中的键 ('score') 定义一个参数 cost(n):
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)
您知道如何解决这个问题吗?
谢谢!
与 Pyomo 中的所有规则一样,当您将一个函数传递给 Param 的 initialize=
关键字时,该函数会被调用 一次,每个索引 。所以你应该修改你的规则为:
def c_init(model, operation):
return operations[operation]['score']
我是 Python/Pyomo 的新手,我正在尝试从我创建的字典中的键 ('score') 定义一个参数 cost(n):
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)
您知道如何解决这个问题吗?
谢谢!
与 Pyomo 中的所有规则一样,当您将一个函数传递给 Param 的 initialize=
关键字时,该函数会被调用 一次,每个索引 。所以你应该修改你的规则为:
def c_init(model, operation):
return operations[operation]['score']