我正在尝试使用 Pyomo 和多个不同大小的索引变量来解决 MIP。我想做的是将变量的结果导出到数据框,以便我可以进一步分析这些结果。我的问题是,我无法找到一种方法来很好地自动化该过程,因为索引变量的大小在每个模型模拟中都可能发生变化。
这是我将创建的一些变量的示例:
import pyomo.environ as pyo
model = pyo.ConcreteModel()
model.T = pyo.RangeSet(0, 10)
model.Generators = pyo.Set(initialize=(['equip_1', 'equip_2']))
model.Storages = pyo.Set(initialize=(['storage_1', 'storage_2']))
model.var_1 = pyo.Var(model.T, model.Generators, domain=pyo.NonNegativeReals)
model.var_2 = pyo.Var(model.T, domain=pyo.NonNegativeReals)
model.var_3 = pyo.Var(model.T, model.Storages, domain=pyo.NonNegativeReals)
model.var_4 = pyo.Var(model.T, model.Generators, domain=pyo.Binary, initialize=0)
# constraints and objective function here, which I don't think are relevant for the question
.
.
.
SolverFactory('cbc').solve(model).write()
Run Code Online (Sandbox Code Playgroud)
现在,我想创建以 model.T 作为索引、变量名称加上 model.Generator 或 model.Storages 作为 multiIndex 列的数据框(我假设它必须是 multiIndex,但也许不是)。我希望它的外观的粗略示例如下所示:
| Var_1 | Var_2 | Var_3 | …Run Code Online (Sandbox Code Playgroud)