当前位置: 首页 > 面试题库 >

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

欧阳声
2023-03-14
问题内容

我有一个线性整数程序要解决。我安装了求解器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,和c值却不同。我想分配到不同的值abc,解决了模型,得到的解决方案model.x[1]model.x[2],并有一上市abcmodel.x[1]model.x[2]。我阅读了文档,但示例仅将解决方案写入文件,例如results.yaml

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

谢谢,


问题答案:

我不确定这是否是您要查找的内容,但这是在某些脚本中打印一些变量的一种方式。

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

M = AbstractModel()
opt = SolverFactory('glpk')

# Vars, Params, Objective, Constraints....

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)


 类似资料:
  • 本文向大家介绍python os.listdir()乱码解决方案,包括了python os.listdir()乱码解决方案的使用技巧和注意事项,需要的朋友参考一下 计算机一般来说是需要定期的清理,系统的内存不能无限延伸,同时有一些不需要的文件也可以得以清除掉。有些人会使用os.remove来进行文件的清楚,从而导致一些错误的出现,可以说这是对于os.remove的用法还没有熟练掌握。下面我们就os

  • 本文向大家介绍pycharm 快速解决python代码冲突的问题,包括了pycharm 快速解决python代码冲突的问题的使用技巧和注意事项,需要的朋友参考一下 找到冲突的文件(项目中报红的就是冲突文件),如下 :以下是一个标准的冲突表 说明 * : <<<<<<< HEAD 到 =======里面的内容是自己分支commit的内容 =========到 >>>>>>里面的内容是远程下拉的 根据

  • 本文向大家介绍Python一行代码解决矩阵旋转的问题,包括了Python一行代码解决矩阵旋转的问题的使用技巧和注意事项,需要的朋友参考一下 今天刷《剑指offer》的时候碰到这样一道题: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,

  • 当我们基本完成程序的设计,我们就可以编写代码了,它是对我们的解决方案的实施。 版本一 例10.1 备份脚本——版本一 #!/usr/bin/python # Filename: backup_ver1.py importos importtime # 1. The files and directories to be backed up are specified in a list. sour

  • 我正试图解决一个非常简单的HackerRank测试,我有一些代码,我相信是非常干净和重构的...但是它总是在最后一个测试用例中超时。我下载了它的输入,它是一个非常大的值串,但是其他人用更复杂的代码也能很好地通过。如果有的话,我想找一种更简洁的方式来表达我的解决方案。 这就是问题所在:https://www.hackerrank.com/challenges/ctci-array-left-rota

  • 本文向大家介绍python json.dumps中文乱码问题解决,包括了python json.dumps中文乱码问题解决的使用技巧和注意事项,需要的朋友参考一下 json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3版本中不存在。 注:下面的代码再py

  • 本文向大家介绍python开发环境PyScripter中文乱码问题解决方案,包括了python开发环境PyScripter中文乱码问题解决方案的使用技巧和注意事项,需要的朋友参考一下 PyScripter看起来还是挺不错的一个python ide 环境: PyScripter 2.6.0.0 python3.4 问题: PyScripter有个小坑,打开文件后中文都成了乱码。在PyScripter

  • 问题内容: 我被困在一个相当复杂的Python模块中,该模块不会返回有用的错误代码(它实际上会无声地失败而失败)。但是,它调用的基础C库设置了errno。 通常,errno是通过OSError属性传入的,但是由于我没有异常,因此无法理解。 使用ctypes时,libc.errno不起作用,因为errno是GNU libc中的宏。Python 2.6有一些优势,但Debian仍使用Python 2.