cplex - 使用 Pyomo 时不能使用 Cplex 作为求解器
问题描述
在我使用 Glpk 解决抽象模型之前,但由于 Glpk 可能比 Cplex 慢,我转向 Cplex。但是在我安装了 Cplex 并将其用作求解器后,我发现 Cplex 无法打开 Pyomo 创建的日志文件:
CPLEX> CPLEX Error 1422: Could not open file 'C:\Users\???\AppData\Local\Temp\tmp6u0194_4.cplex.log' for writing.
Could not open logfile -- please try another name.
Name of new logfile ('*' to close present file): Logfile 'read' open.
CPLEX> No problem exists.
CPLEX> No problem exists.
CPLEX> No problem exists.
CPLEX> Complete!
以上是我从 tee=true 得到的
路径包含中文字母,所以我不确定它是否重要。如果是这样,我可以更改 Pyomo 创建的日志文件的默认路径吗?
谢谢,
轩
解决方案
这里的问题是 Pyomo 正在将*.lp
CPLEX 输入文件写入路径名中包含非字母数字字符的位置。CPLEX 调用因路径名而失败,产生报告的错误消息。
要更正此问题,必须设置不同的临时目录。SolverFactory('cplex').solve(model)
一种方法是在调用之前执行以下操作:
import pyutilib.services
pyutilib.services.TempfileManager.tempdir = 'C:\user_writable_path'
这类似于https://github.com/Pyomo/pyomo/pull/485中解决的问题。
推荐阅读
- image - 如何在 OpenCV Python 中对附近的轮廓进行分组?- 斑马线检测
- tfs - 我们如何将文件从 Windows 共享路径 (UNC) 复制或下载到 Azure Devops 工具/TFS 中的 linux 服务器?
- android - 在 Play 商店应用中查看时,我的应用的屏幕截图被严重压缩
- oracle - 正在使用控制文件和 sqlldr 在数据库中插入具有空值的额外行
- html - 如何使用 base.html 在不同页面上更改导航“活动”类
- javascript - ThreeJS 模块没有被 Babel 转译
- outlook-addin - Outlook-Addin:使用 Exchange-Online 时如何快速检索文件夹树
- ios - Swift - 在 presentViewController 上的 iOS 13 上显示故障
- c# - LINQ 将基于标志的连续记录添加到 JSON
- python - Django - 上下文 - 如何将上下文传递给所有视图