首页 > 解决方案 > 为什么 CBC 找不到 Pyomo 热启动文件?

问题描述

我正在尝试使用带有 Pyomo 5.7.3 的 CBC 求解器 2.10.3 的 warmstart/mipstart 选项。在我看来,CBC 期望暖启动解决方案文件的相对路径,而 Pyomo 提供绝对路径。那正确吗?如果是这样,是否有任何可行的替代方法来为 CBC 提供热启动解决方案?非常感谢,斯特凡

细节:

首先,我从启发式存储一个热启动解决方案:

for assignment in heuristic_solution.assignments:
   model.xvars[assignment] = assignment.count

然后我让 Pyomo 调用 CBC 求解器:

solver_factory.solve(model, warmstart=True)

Pyomo 成功创建了一个热启动文件(在 pyomo/solvers/plugins/solvers/CBCplugin.py 的第 267 行):

self._warm_start_file_name = TempfileManager.create_tempfile(suffix = '.cbc.soln')

Pyomo 然后通过创建命令行将此文件名交给 CBC:

C:\<...>\cbc.exe -import C:\<...>\problem.lp -mipstart C:\<...>\warmstart.cbc.soln -solve

但是,_warm_start_file_name 是绝对路径,而 CBC 只接受相对路径。因此,CBC 不会读取热启动解决方案。

标签: pyomo

解决方案


推荐阅读