我正在尝试对 CBC 求解器 2.10.3 和 Pyomo 5.7.3 使用热启动/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 不会读取热启动解决方案。