Anaconda 使用PYOMO将SCIP设置为解算器时出错

Anaconda 使用PYOMO将SCIP设置为解算器时出错,anaconda,pydev,pyomo,scip,Anaconda,Pydev,Pyomo,Scip,我正试图解决一个由SCIP作为解算器在俾莫提出的MILP问题。 我使用python ANACONDA解释器从PyDev内部运行该问题 我可以使用其他解算器运行并解决问题,即CBC、GLPK和IPOPT 但是,当使用SCIP作为解算器时,它不起作用。似乎SCIP/AMPL接口有问题。。。有人能帮忙吗 下面是有关错误提示和系统配置的一些详细信息 我试过用“scip”和“scipampl” 使用“scip” opt = SolverFactory('scip') instance = model.c

我正试图解决一个由SCIP作为解算器在俾莫提出的MILP问题。 我使用python ANACONDA解释器从PyDev内部运行该问题

我可以使用其他解算器运行并解决问题,即CBC、GLPK和IPOPT

但是,当使用SCIP作为解算器时,它不起作用。似乎SCIP/AMPL接口有问题。。。有人能帮忙吗

下面是有关错误提示和系统配置的一些详细信息


我试过用“scip”和“scipampl”

使用“scip”

opt = SolverFactory('scip')
instance = model.create_instance("test1.dat")
results = opt.solve(instance)
instance.display()
警告:“[base]/site packages/pyomo/solvers/plugins/solvers/SCIPAMPL.py”,68,_default_可执行文件 找不到解算器scip所需的“SCIPANPL”可执行文件 回溯(最近一次呼叫最后一次): 文件“/home/alesandro/Documents/eclipseworkspace/test1/src/test1.py”,第48行,在 结果=opt.solve(实例)#解决并更新实例 文件“/home/alesandro/anaconda3/lib/python3.6/site packages/pyomo/opt/base/solvers.py”,第539行,在solve中 self.available(异常标志=True) 文件“/home/alessandro/anaconda3/lib/python3.6/site packages/pyomo/opt/solver/shellcmd.py”,第122行,可用 引发应用程序错误(消息%self.name) pyutilib.common.\u exceptions.ApplicationError:未找到解算器“scip”的可执行文件

用“Scipanpl”

opt = SolverFactory('scipampl')
instance = model.create_instance("test1.dat")
results = opt.solve(instance)
instance.display()
警告:“[base]/site packages/pyomo/opt/base/solvers.py”,202,solver\u调用 无法创建名为“SCIPANPL”的解算器: 未能为解算器asl设置可执行文件。名为SCIPANPL的文件不存在或不可执行。要跳过此验证,请使用validate=False调用set_executable。 回溯(最近一次呼叫最后一次): 文件“/home/alesandro/Documents/eclipseworkspace/test1/src/test1.py”,第48行,在 结果=opt.solve(实例) 文件“/home/alesandro/anaconda3/lib/python3.6/site packages/pyomo/opt/base/solvers.py”,第127行,在solve中 self.\u解算器\u错误('solve') 文件“/home/alessandro/anaconda3/lib/python3.6/site packages/pyomo/opt/base/solvers.py”,第155行,输入解算器错误 +“\n\t选项:%s”%(self.options,)) 运行时错误:试图使用不可用的解算器

SolverFactory无法创建解算器“SCIPANPL” 并返回一个未知的UnknownSolver对象。此时会出现此错误 使用UnknownSolver对象时,将其视为有效对象(通过调用 方法“解决”)

原始解算器是使用以下参数创建的: 可执行文件:scipampl 类型:SCIPANPL _args:() 选项:{}

Eclipse版本是“Oxygen.1(4.7.1)”,PyDev版本是“6.0.0”

python、pyomo和Solver版本如下所示:

~$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 30 2017, 18:42:57) [GCC 7.2.0] on linux

~$ pyomo --version
Pyomo 5.2 (CPython 3.6.2 on Linux 4.10.0-35-generic)

~$ cbc
Welcome to the CBC MILP Solver 
Version: 2.9.9 
Build Date: Jul  6 2017

~$ glpsol
GLPSOL: GLPK LP/MIP Solver, v4.63

~$ ipopt
No stub!
usage: ipopt [options] stub [-AMPL] [<assignment> ...]

~$ scip 
SCIP version 4.0.1 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: SoPlex 3.0.1] [GitHash: 8a04b84]
Copyright (C) 2002-2017 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin (ZIB)
External codes: 
SoPlex 3.0.1         Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: 24cffa9]
CppAD 20160000.1     Algorithmic Differentiation of C++ algorithms developed by B. Bell (www.coin-or.org/CppAD)
ZLIB 1.2.8           General purpose compression library by J. Gailly and M. Adler (zlib.net)
GMP 6.1.0            GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
ZIMPL 3.3.4          Zuse Institute Mathematical Programming Language developed by T. Koch (zimpl.zib.de)
Ipopt 3.12.8         Interior Point Optimizer developed by A. Waechter et.al. (www.coin-or.org/Ipopt)
user parameter file <scip.set> not found - using default parameters
SCIP> ^C
conda install -c conda-forge coincbc
conda install -c conda-forge glpk
conda install -c conda-forge ipopt
conda install -c conda-forge ampl-mp
conda install -c leethargo scipoptlib
conda install -c leethargo pyscipopt
我用Linux Debian包“scipoptsite-4.0.1-Linux.deb”安装了最新的Scipoptsite版本“4.0.1”

我还安装了AMPL-MP SCIPOPTLIB和PYSCIPOPT,如下所示:

~$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 30 2017, 18:42:57) [GCC 7.2.0] on linux

~$ pyomo --version
Pyomo 5.2 (CPython 3.6.2 on Linux 4.10.0-35-generic)

~$ cbc
Welcome to the CBC MILP Solver 
Version: 2.9.9 
Build Date: Jul  6 2017

~$ glpsol
GLPSOL: GLPK LP/MIP Solver, v4.63

~$ ipopt
No stub!
usage: ipopt [options] stub [-AMPL] [<assignment> ...]

~$ scip 
SCIP version 4.0.1 [precision: 8 byte] [memory: block] [mode: optimized] [LP solver: SoPlex 3.0.1] [GitHash: 8a04b84]
Copyright (C) 2002-2017 Konrad-Zuse-Zentrum fuer Informationstechnik Berlin (ZIB)
External codes: 
SoPlex 3.0.1         Linear Programming Solver developed at Zuse Institute Berlin (soplex.zib.de) [GitHash: 24cffa9]
CppAD 20160000.1     Algorithmic Differentiation of C++ algorithms developed by B. Bell (www.coin-or.org/CppAD)
ZLIB 1.2.8           General purpose compression library by J. Gailly and M. Adler (zlib.net)
GMP 6.1.0            GNU Multiple Precision Arithmetic Library developed by T. Granlund (gmplib.org)
ZIMPL 3.3.4          Zuse Institute Mathematical Programming Language developed by T. Koch (zimpl.zib.de)
Ipopt 3.12.8         Interior Point Optimizer developed by A. Waechter et.al. (www.coin-or.org/Ipopt)
user parameter file <scip.set> not found - using default parameters
SCIP> ^C
conda install -c conda-forge coincbc
conda install -c conda-forge glpk
conda install -c conda-forge ipopt
conda install -c conda-forge ampl-mp
conda install -c leethargo scipoptlib
conda install -c leethargo pyscipopt
编辑: 请按照以下说明操作:

以下几点可能会有所帮助:

  • 位于leethargo的conda软件包不是官方的conda软件包(因为没有)
  • 首先尝试通过pip安装并运行PySCIPOpt
  • PySCIPOpt没有与PYOMO接口,因此您很可能需要依赖AMPL来获得SCIP支持
  • PYOMO甚至支持SCIP吗?我无法从他们的文档中看出这一点
啊,看看我在谷歌搜索“pyomo scip”后发现了什么:


因此,PYOMO仅通过AMPL接口(ASL)支持SCIP。

那么,这是否意味着我需要完全访问AMPL(我没有这方面的许可证),或者是否有其他方法来解决此问题?我喜欢SCIP,因为它对学术界来说既快又免费,但我不得不使用MATLAB。然后我从pyomo开始,如果我能继续使用scip,那就太好了……不,你不需要AMPL。按照以下说明为PYOMO生成必要的
scipanpl
可执行文件。它看起来有点晦涩,但我只是用最新的SCIP 4.0.1试用了一下,它仍然有效。我看不到说明,它缺少链接吗?对不起,我忘记粘贴链接了。这是: