不使用 for 循环检索 Pyomo 解决方案

2024-02-07

我正在努力寻找一种有效的方法来检索优化问题的解决方案。该解决方案由大约 200K 个变量组成,我希望将这些变量放在 pandas DataFrame 中。在网上搜索后,我发现访问变量的唯一方法是通过 for 循环,如下所示:

instance = M.create_instance('input.dat') # reading in a datafile
results = opt.solve(instance, tee=True)
results.write()
instance.solutions.load_from(results)

for v in instance.component_objects(Var, active=True): 
    print ("Variable",v)
    varobject = getattr(instance, str(v))
    for index in varobject:
        print ("   ",index, varobject[index].value)

我知道我可以使用这个 for 循环将它们存储在数据框中,但这效率很低。 我发现如何使用访问索引

import pandas as pd
index = pd.DataFrame(instance.component_objects(Var, active=True))

但我不知道如何获得解决方案


实际上有一个非常简单而优雅的解决方案,使用方法pandas.DataFrame.from_dict结合Var.extract_values() method.

from pyomo.environ import *
import pandas as pd
m = ConcreteModel()
m.N = RangeSet(5)
m.x = Var(m.N, rule=lambda _, el: el**2)  # x = [1,4,9,16,25]

df = pd.DataFrame.from_dict(m.x.extract_values(), orient='index', columns=[str(m.x)])
print(df)

yields

    x
1   1
2   4
3   9
4  16
5  25

请注意,对于Var我们可以同时使用get_values() and extract_values(),他们似乎也在做同样的事情。为了Param只有extract_values().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不使用 for 循环检索 Pyomo 解决方案 的相关文章

  • Pyomo:从 Python 代码访问解决方案

    我有一个想要求解的线性整数程序 我安装了求解器 glpk 感谢这个答案 和pyomo 我写了这样的代码 from pyomo environ import from pyomo opt import SolverFactory a 370
  • 如何在 Winpython 中安装 glpk-solver 和 pyomo

    我想在我的学习中使用 pyomo 我通过安装 pyomoeasy install coopr 安装说明 Pyomo 需要一个求解器才能工作 所以我想安装 GNU 线性编程套件 glpk 网页 pyomo 似乎安装得恰到好处 因为我可以将它导
  • 使用 Pyomo 或 cvxpy 预测建筑物的功率(模型预测控制)

    我有室外温度的数据 8 2 10 13 并且我有我的建筑物的热惯性 8h 限制之一是将我的建筑物的内部温度保持在 20 度以内 我们从平衡状态开始 T in 20 T o 20 但一小时内的 T o 18 因此 Delta T o 18 度
  • Pyomo 和条件目标函数

    是否可以 如果可以的话如何 使用具有条件表达式的目标函数 更改文档中的示例 我想要一个如下表达式 def objective function model return model x 0 if model x 1 lt const els
  • Scip 与 Pyomo 接口的问题

    我正在尝试使用 Pyomo 解决非线性优化问题 首先 我尝试了 Ipopt 求解器 并且运行起来了 然后我想尝试一下求解器Scip由于 Ipopt 是局部求解器 因此尝试进行全局优化 但是 我在使用它时遇到了我无法理解的错误 让 Scip
  • 如何使用 pip 安装 Pyomo 的“extras”?

    我写这篇文章是因为我在安装时遇到问题Pyomo using pipMac OSX 10 14 上的 Python 3 6 我正在按照安装说明进行操作here 我可以成功执行第一个命令 pip install pyomo 但是当我遇到麻烦时
  • 无法在 databricks 上安装 pyomo 求解器 ipopt

    使用以下命令在 databricks 上成功安装 pyomo pip install pyomo optional 输出 成功安装 algopy 0 5 7 casadi 3 5 5 dill 0 3 5 1 et xmlfile 1 1
  • 如何在 pyomo 中将积分定义为目标函数?

    我希望能够定义一个积分pyomo作为目标函数的一部分 我无法弄清楚积分需要什么样的表达式 这是我最好的猜测 model ConcreteModel model t ContinuousSet bounds 0 1 model y Var m
  • 微电网电池调度的约束优化

    给定电力消耗 太阳能电池板发电 价格等输入 全部在给定时间 t 我们有一个电池 我们想要评估它在任何给定时间应该 放电 充电多少 该问题可以表述如下 Pt price of electricity at time t Lt consumpt
  • 未找到 Pyomo Util 模块

    所以我问了一个question一个月前 我对这个问题有一个非常好的答案 我想测试一下这个答案现在是否有效 但我越来越ModuleNotFoundError 我在测试之前做了以下操作 conda install c conda forge p
  • 优化 pyomo 中的 Fortran 函数

    我希望使用 Pyomo 优化 Fortran 函数 目标函数和约束都是用 Fortran 编写的 根据给出的答案here 我们可以用ExternalFunction表达式对象 但即使是最简单的函数我也无法得到结果 下面给出的是一个可重现的示
  • 使用不连续索引进行 pyomo 优化

    我正在使用 pyomo 在 python 中进行优化 我计划使用 t start t end 范围内的索引 现在 这些 t start 和 t end 值是 EV 的函数 使得 m pyo ConcreteModel m EV pyo Ra
  • 如何设置索引变量的值? - 皮莫

    我正在开发一个与 AC OPF 最佳功率流 相关的项目 我试图使用 pyomo 解决 python 中的问题 有3条母线 母线电压和母线角度受到限制 然而 第 1 条总线的电压必须为 1 角度必须为 0 所以 我尝试了这个 model bu
  • Pyomo:限制迭代次数

    我有一个 Pyomo 模型 最终得到这样的解决 solver SolverFactory ipopt results solver solve model tee False 该模型当前运行了 3000 次迭代才放弃 在我看来 必须有一种方
  • 分析 pyomo 中的解决方案 (.sol) 文件

    我在机器 1 中有一个 pyomo 模型 在机器 2 中有 CPLEX 求解器 我转换 pyomo 模型 ConcreteModel 变成problem lp带有函数的文件model write problem lp 在机器 1 中 然后我
  • PYOMO:使用集合和参数定义数据集来解决优化问题

    我正在尝试将一些数据制定为 PYOMO 模型以解决优化问题 materials steel alum carbon cheese 每种材料都有 2 个属性 密度和电导率 它们的值定义如下 density steel 1 2 alum 0 8
  • 如何使用 Pyomo 制作指标函数?

    我正在寻找在 Pyomo 中创建一个简单的指示变量 假设我有一个变量 x 如果 x gt 0 则该指示函数将取值 1 否则取 0 我尝试这样做的方法如下 model ConcreteModel model A Set initialize
  • Pyomo 中 TransformedPiecewiseLinearFunctionND 的正确用法是什么?

    背景 我正在尝试在 Pyomo 中使用代理模型 给定一组标记为 x y 和 z 的数据 我想将 z 写为 x 和 y 的廉价函数 Issue Pyomo 具有用于多元分段线性函数的工具 看here https pyomo readthedo
  • 获取线性 pyomo 约束的系数

    我想获得线性约束的系数cpyomo 模型的m 例如 对于 m ConcreteModel m x 1 Var m x 2 Var m x 3 Var within Integers m x 4 Var within Integers m c
  • 使用 Pyomo 的旅行推销员

    我正在尝试使用 pyomo 来解决 TSP 问题 我已经使用 python 和 Gurobi 成功实现了 但是我的 Gurobi 许可证已过期 所以我现在想使用 pyomo 和 GLPK 来实现 TSP 问题 这是我到目前为止能想到的 它不

随机推荐