pyomo - 为什么 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 不会读取热启动解决方案。
解决方案
推荐阅读
- javascript - 如何在超测请求中设置认证信息?
- loops - Go 模板中的嵌套循环
- testing - 下载文件在 Cypress 中挂起
- java - 节俭的通信错误不会被 promise reject 或 cath 捕获
- regex - 正则表达式字符串不以正斜杠开始或结束(或两者)
- python - 通过 Looping Python 提取子页面链接
- python - 无法在 Windows 10 上通过“pip”安装任何包,Python 中的 ssl 模块不可用
- c++ - 事件系统:回调或事件队列
- javascript - styles.xml 破坏受密码保护的 XSSFWorkbook (Apache POI v3.16) 保存过程
- apache-kafka - 无法写入卡夫卡,经纪人倒闭