小编Air*_*uid的帖子

如何在 pyomo 模型中提取索引变量信息并构建 Pandas Dataframe

我正在尝试使用 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)

python variables multi-index pandas pyomo

5
推荐指数
1
解决办法
4880
查看次数

如何在Python中使用绝对值或绝对值之和进行整数优化?

我有一个程序,我想最小化两个变量的绝对差(绝对误差函数)。说:

e_abs(x, y) = |Ax - By|; where e_abs(x, y) is my objective function that I want to minimize.
Run Code Online (Sandbox Code Playgroud)

该函数受到以下约束:

x and y are integers;
x >= 0; y >= 0
x + y = C, where C is an arbitrary constant (also C >= 0)
Run Code Online (Sandbox Code Playgroud)

我正在使用 mip 库(https://www.python-mip.com/),我在其中定义了目标函数和约束。

问题是 mip 没有“abs”方法。因此,我必须通过将主要问题分为两个优化子问题来克服这个问题:

e(x, y) = Ax - By

Porblem 1: minimize e(x, y); subject to e(x, y) >= 0
Porblem 2: maximize e(x, y); subject to e(x, y) …
Run Code Online (Sandbox Code Playgroud)

python optimization mixed-integer-programming

4
推荐指数
1
解决办法
3130
查看次数