嗨,我有一个关于 Pyomo 初始化的问题。
我的 Pyomo 模型中有这个初始化器
asset_id={}
asset_id[0]=["A1","A2","A3","A4"]
asset_id[1]=["B1","B2","B3","B4"]
model = pyo.ConcreteModel()
model.asset1_id = pyo.Set(initialize=asset_id[0])
model.asset2_id = pyo.Set(initialize=asset_id[1])
如果可能的话,我正在寻找类似下面代码的东西,因为我有一个未知的资产,我需要初始化它,因为它基于用户输入。
model = pyo.ConcreteModel()
model.asset={}
for i in range(0,2):
model.asset[i]= pyo.Set(initialize=asset_id[i])
model.asset[i]= pyo.Set(initialize=asset_id[i])
我怎样才能实现如上所示的结果,因为我已经尝试过这种方式,而 Pyomo 会抛出错误?
我发现当我尝试使用 model.asset 参数之一添加约束时它不起作用。我还发现 list(model.x[0]) 不工作。
您可以修改您的代码以实现您想要的初始化,如下所示:
model = pyo.ConcreteModel()
model.asset = {}
for i in range(2):
asset_id = input(f"Enter asset ids for asset {i+1}: ").split() # take user input
model.asset[i] = pyo.Set(initialize=asset_id)
此代码创建一个空字典
model.asset
,然后在 2 的范围内循环以获取资产 ID 的用户输入。用户输入被分成资产 ID 列表,然后用于初始化每个资产的pyo.Set
对象。这将允许您根据用户输入初始化未知数量的资产。