【问题标题】:Saving a .sol file from one instance and using it as WARM_START for another instance on PYOMO从一个实例保存 .sol 文件并将其用作 PYOMO 上另一个实例的 WARM_START
【发布时间】:2020-08-01 10:34:43
【问题描述】:

亲爱的,

我正在 PYOMO 上运行多个 AbtractModel 场景(实例)。

对于这些实例中的每一个,我想记录其解决方案,以供进一步用作另一个实例解决方案的热启动器。

我对如何通过 Pyomo 实现这一点感到非常困惑。我应该如何进行?

我应该在求解后编写一个“.sol”文件并将其用作热启动文件吗?如果是这样,pyomo 语法如何控制写入的 sol 文件的目录和文件名?以及在解决另一个实例时读取它的语法如何?

谢谢,

PS:我通过 SolverFactory() 使用 CPLEX 作为求解器

【问题讨论】:

  • SOL 文件是特定于 CPLEX 的文件格式。鉴于 pyomo 应该是围绕不同求解器的通用建模包装器,您似乎不太可能找到对您正在寻找的东西的支持。话虽如此,我不是pyomo专家,所以也许我错了。但是,如果您想利用 CPLEX 特定的功能,最好直接使用 CPLEX Python API 或 docplex。

标签: cplex pyomo


【解决方案1】:

让我改一下zoo and buses example

import pyomo.environ as pyo
from pyomo.opt import SolverFactory

opt = pyo.SolverFactory('cplex')

model = pyo.ConcreteModel()

model.nbBus = pyo.Var([40,30], domain=pyo.PositiveIntegers)

model.OBJ = pyo.Objective(expr = 500*model.nbBus[40] + 400*model.nbBus[30])

model.Constraint1 = pyo.Constraint(expr = 40*model.nbBus[40] + 30*model.nbBus[30] >= 300)


model.nbBus[40]=8
model.nbBus[30]=1

results = opt.solve(model,warmstart=True)

print("nbBus40=",model.nbBus[40].value)
print("nbBus30=",model.nbBus[30].value)

给予

nbBus40= 6.0
nbBus30= 2.0

【讨论】:

猜你喜欢
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多