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

2023-11-26

我有一个想要求解的线性整数程序。我安装了求解器 glpk (感谢这个答案)和pyomo。我写了这样的代码:

from pyomo.environ import *
from pyomo.opt import SolverFactory

a = 370
b = 420
c = 2

model             = ConcreteModel()
model.x           = Var([1,2], domain=NonNegativeIntegers)
model.Objective   = Objective(expr = a * model.x[1] + b * model.x[2], sense=minimize)
model.Constraint1 = Constraint(expr = model.x[1] + model.x[2] == c)
# ... more constraints

opt = SolverFactory('glpk')

results = opt.solve(model)

这会产生文件的解决方案results.yaml.

我有很多问题想要使用相同的模型但不同的来解决a, b, and c价值观。我想分配不同的值a, b, and c,求解模型,得到解model.x[1] and model.x[2],并有一个列表a, b, c, model.x[1] and model.x[2]。我读文档但示例仅将解决方案写入文件,例如results.yaml.

有什么方法可以从代码中访问解决方案值吗?

Thanks,


以下是脚本的修改版本,说明了打印变量值的两种不同方式:(1) 通过显式引用每个变量;(2) 通过迭代模型中的所有变量。

# Pyomo v4.4.1
# Python 2.7
from pyomo.environ import *
from pyomo.opt import SolverFactory

a = 370
b = 420
c = 4

model             = ConcreteModel()
model.x           = Var([1,2], domain=Binary)
model.y           = Var([1,2], domain=Binary)
model.Objective   = Objective(expr = a * model.x[1] + b * model.x[2] + (a-b)*model.y[1] + (a+b)*model.y[2], sense=maximize)
model.Constraint1 = Constraint(expr = model.x[1] + model.x[2] + model.y[1] + model.y[2] <= c)

opt = SolverFactory('glpk')

results = opt.solve(model)

#
# Print values for each variable explicitly
#
print("Print values for each variable explicitly")
for i in model.x:
  print str(model.x[i]), model.x[i].value
for i in model.y:
  print str(model.y[i]), model.y[i].value
print("")

#
# Print values for all variables
#
print("Print values for all variables")
for v in model.component_data_objects(Var):
  print str(v), v.value

这是生成的输出:

Print values for each variable explicitly
x[1] 1.0
x[2] 1.0
y[1] 0.0
y[2] 1.0

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

Pyomo:从 Python 代码访问解决方案 的相关文章

随机推荐

  • Pandas groupby 排名日期时间

    我遇到了关于日期时间排名的问题 可以说我有下表 ID TIME 01 2018 07 11 11 12 20 01 2018 07 12 12 00 23 01 2018 07 13 12 00 00 02 2019 09 11 11 00
  • setOrientationHint 在某些手机的前置摄像头 (HTC) 上逆时针旋转视频

    问题 某些 Android 设备 在问题底部列出 在使用setOrientationHint int degrees 功能用于使用前置摄像头拍摄的视频 预期的行为是视频顺时针旋转 但这些设备逆时针旋转视频 My Goal 识别相机设置或硬件
  • OpenGL ES GL_TEXTURE_RECTANGLE

    有谁知道OpenGL ES是否支持GL TEXTURE RECTANGLE 我计划将它用于 2D 图形以支持非二次幂图像 我当前的实现使用 alpha 0 填充的 POT 纹理 对于拉伸图像效果不佳 它适用于 OpenGL 但我们也计划将其
  • laravel eloquent 中 select() 和 get() 的区别

    使用 laravel eloquent 模型时 get 和 select 方法有什么区别吗 哪种方法更快 是 有一点不同 select 仅用于定义您想要的列 get 用于实际获取结果 gt 执行查询 它还允许您指定列 DB table fo
  • 使用 int[][] 和 int[] 有什么区别? [复制]

    这个问题在这里已经有答案了 来自 perl 背景 我总是使用定义一个 2D 数组int 我知道你可以使用int 那么有什么区别呢 这里的区别在于第一个样本 int 创建了一个锯齿状阵列 而第二个则创建一个矩形阵列 维度 2 在锯齿状数组中
  • MEMORY_BASIC_INFORMATION 结构中的 BaseAddress 和 AllocationBase 有什么区别?

    在 MSDN 中我发现以下内容 BaseAddress 指向页面区域基地址的指针 AllocationBase 指向由 VirtualAlloc 函数分配的一系列页面的基地址的指针 BaseAddress成员指向的页包含在这个分配范围内 但
  • 如何在玉中的链接内添加条件?

    如何在 jade 中的标签内部添加条件 在我的例子中是链接 锚点 这是我的伪代码 当然行不通 a href foo class if current route 1 foo active Go to Foo 怎么样 a href foo c
  • iOS (Safari) 中的 Flutter Web 状态栏

    我尝试更改 safari 浏览器中的状态栏 我搜索了它 有很多关于它的问题 但没有一个解决我的问题 我试过更改状态栏颜色 and 如何更改 chrome 标题颜色 这个蓝色区域位于 iPhone 的凹口周围 我想更改整个应用程序的颜色 感谢
  • css3 跨浏览器不透明度

    我找不到应用 css 跨浏览器不透明度的方法 IE7里有什么好东西 IE8里就别去了 反之亦然 谢谢 d opacity 0 5 filter alpha opacity 50 try this
  • MVCBuildViews 无法正常工作

    因此 我在 MVC 3 RTM 应用程序上编辑了 csproj 文件以设置以下属性
  • Objective-C 优化

    Objective C 是否有标准的优化技巧 可以沿着 C 或 g fast 标签中的 内联 频繁方法加快执行速度 编辑 当 theMethod 有两个 或更多 整数用于输入时 是否有人有一个使用 SEL 和 IMP 的简短示例 这是一个小
  • Netbeans 扫描项目太慢

    我使用 netbeans 7 3 1 我在这里找到了一种使 netbeans 更快的方法 如何提高 Netbeans 性能 但我的问题是我的netbeans因项目扫描而变慢 projectcanning对于软件很重要吗netbeans 我的
  • 如何向 gcc 提供有关循环计数的提示

    了解循环将经历的迭代次数允许编译器进行一些优化 例如考虑下面的两个循环 未知迭代次数 static void bitreverse vbuf desc vbuf unsigned int idx 0 unsigned char img vb
  • 未终止字符串文字的常见来源[重复]

    这个问题在这里已经有答案了 我正在尝试调试一个在 Firefox 扩展中读取并执行的 JavaScript 脚本 我只能通过 Firebug 控制台看到错误 我的代码对 Firebug 不可见 并且它报告 未终止的字符串文字 我检查了该行及
  • 使用 Nokogiri 获取节点的兄弟节点

    有没有办法找到节点中的特定值 然后返回其所有兄弟值 例如 我想找到id包含 ID 5678 的节点 然后获取电子邮件地址以及与 ID 5678 关联的所有图像 Nokogiri XML parse File open info xml 这是
  • 速率限制以防止 ExpressJS 中的恶意行为

    有人让我意识到我正在开发的应用程序中存在一些缺陷 主要是在前端的 JavaScript 中 这使得有可能同时单击大量按钮并发送大量事务电子邮件 这显然不好 我认为在 ExpressJS 中处理这个问题的一种方法是使用app all 计算在特
  • jQuery 1.4.2 - $("#foo").hide("normal") 坏了还是我疯了?

    有谁知道为什么 hide normal 似乎不能在 jQuery 1 4 2 中工作 这是一个错误 它已被删除还是我只是疯了 我已经成功地使用几种不同的场景来复制此内容 试试这个
  • Swing JToolbar 按钮按下

    我使用 JToolbarButton 按钮 我想让它在单击时被 按下 就像 JButton 一样 我该怎么做 请帮忙 谢谢 正如科斯蒂斯的回复中提到的 您可能正在追求JToggleButton 可能还需要抑制边框的绘制 如本示例中的第二个工
  • 修改Xcode的project.pbxproj中的PRODUCT_BUNDLE_IDENTIFIER

    我正在尝试修改project pbxprojXcode 项目的文件使用sedMac 终端上的 shell 命令用于替换字符串 我想更换字段 PRODUCT BUNDLE IDENTIFIER com example 71b9b4f2 to
  • Pyomo:从 Python 代码访问解决方案

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