Scip与Pyomo的接口问题

you*_*rja 0 python optimization ampl scip pyomo

我正在尝试使用Pyomo解决非线性优化问题。最初,我尝试了Ipopt求解器,然后一切正常运行。然后,我想尝试求解器Scip尝试进行全局优化,因为Ipopt是本地求解器。但是,出现一个我无法理解的错误。

与Pyomo一起使用Scip并不是一件容易的事,但是通过Internet上的一些帮助以及一些反复试验,我可以从这里获取适用于Windows的scip可执行文件。我将可执行文件命名为scipampl并将其添加到我的PATH中。

当我运行以下命令时,Pyomo能够看到求解器,它返回True。

SolverFactory('scip').available() 
Run Code Online (Sandbox Code Playgroud)

确信自己已使一切正常,然后尝试运行代码。我将我的Solverfactory设置如下:

solver     =  'scip'               
solver_io  =  'nl'                  
opt        =   SolverFactory(solver, solver_io = solver_io)
Run Code Online (Sandbox Code Playgroud)

但令我失望的是,最终我收到以下错误消息:

[Errno 2] No such file or directory: 'C:\\Users\\NITINN~1.SIN\\AppData\\Local\\Temp\\tmpc0hzo5_7.pyomo.sol'
Run Code Online (Sandbox Code Playgroud)

我试图在互联网上了解这是什么意思,但到目前为止我还很走运。如果有人可以提出一些可能的原因,我将不胜感激。

谢谢。

ste*_*fan 5

您需要SCIP / AMPL接口的可执行文件。普通的SCIP可执行文件(可能是您获得的一个)不包含一个。当前,SCIP下载页面上适用于Windows的最后一个可用版本是:https ://scip.zib.de/download.php?fname=scipampl-6.0.0.win.x86_64.intel.opt.spx2.exe 。压缩

  • 从 SCIP 8 开始,“scip”可执行文件确实包含 AMPL 接口。Pyomo 默认情况下不使用它,因此您需要在命令行上指定 `--solver scip --solver-io nl` 或在 Python 代码中指定 `SolverFactory(solver='scip',solver_io='nl')` 。 (2认同)