【问题标题】:Can't use Cplex as solver when using Pyomo使用 Pyomo 时不能使用 Cplex 作为求解器
【发布时间】:2018-11-29 02:07:51
【问题描述】:

在我使用 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 创建的日志文件的默认路径吗?

谢谢,

【问题讨论】:

    标签: cplex pyomo


    【解决方案1】:

    这里的问题是 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 中解决的问题类似。

    【讨论】:

    • 看来 tmp_dir_path 是只读的,因为它原来 PermissionError: [WinError 5]
    • Pyomo的tmp文件的默认路径可以改吗?
    • 是的。尝试选择不同的路径而不是 tmp_dir_path。您有写入权限但没有常用路径名的地方。
    • 我试过了,实际上我可以打印出日志文件,但仍然遇到上面同样的问题。
    • 日志文件的内容是什么?
    猜你喜欢
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 2018-03-01
    • 2018-06-21
    • 2018-03-17
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多