访问Pyomo索引变量中的每个变量值

问题描述 投票:0回答:1

我正在使用Pyomo求解MINLP,它采用整数输入的向量(图形的链接容量)并返回网络中的数据包丢失。edge_enum字典所做的是,它枚举图形的所有边。例如,

{0: (0, 4), 
1: (1, 4), 
2: (1, 5), ...
a=0
for e in G.edges():
    edge_enum[a]=e  
    a+=1

model=ConcreteModel
key_list=list(edge_enum.keys())
edge_list=list(edge_enum.values())
model.A=Set(initialize=edge_list)
lb={}
for j in edge_list:
    lb[j]=pmf_maxima(j,lamd,q)
ub={}
for j in edge_list:
    ub[j]=pmf_length(j,lamd,q)
def fb(model,i):
    return (lb[i],ub[i])
model.vars=Var(model.A,domain=PositiveIntegers,bounds=fb)
print(model.vars[edge_enum[0]].value)

我的查询是,因为那是我的输入容量向量,所以我如何访问变量向量'vars'的每个元素。我需要访问它们中的每一个以定义我的目标函数。

optimization pyomo mixed-integer-programming
1个回答
0
投票
我在您的代码中有很多东西不了解,因为它只是您在此处复制的一部分,但是从我看来,您正在尝试使用以下命令为元素打印'vars'的值索引值“ 0”。但是,“ vars”是要在求解模型后确定的变量,因此尚无值。它仅具有您通过“ lb”和“ ub”定义的上下限。因此,在打印出值之前先求解模型。
© www.soinside.com 2019 - 2024. All rights reserved.