我正试图解决在PYOMO中设置的一个MILP问题,它以SCIP作为求解者。我使用python解释器在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_executable无法找到“scipampl”可执行文件,该可执行文件是解决器scip跟踪所必需的(最近一次调用):File“/home/alessandro/Documents/Eclipse工作区/test1 1/src/test1.py”,第48行,在"/home/alessandro/anaconda3/lib/python3.6/site-packages/pyomo/opt/base/solvers.py",=opt.solve(实例)#解决和更新实例文件的第539行中,在解决self.available(exception_flag=True)文件的第122行中,在可用的ApplicationError(msg % self.name) pyutilib.common._exceptions.ApplicationError中:没有为解决程序“scip”找到可执行文件
配上“枕安普尔”
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_call未能创建名为“scipampl”的解决程序:未能为解决程序asl设置可执行文件。带有name=scipampl的文件要么不存在,要么不能执行。若要跳过此验证,请使用set_executable调用validate=False。回溯(最近一次调用):文件“/home/alessandro/Documents/Eclipse工作区/test1 1/src/test1.py”,第48行,在results =opt.solve(实例)文件"/home/alessandro/anaconda3/lib/python3.6/site-packages/pyomo/opt/base/solvers.py",中,在opt.solve(实例)文件第127行,在解决self._solver_error(‘解决’)文件"/home/alessandro/anaconda3/lib/python3.6/site-packages/pyomo/opt/base/solvers.py",中第155行,在_solver_error + "\n\toptions:%s“%( self.options,)RuntimeError中:尝试使用不可用的解决程序。 SolverFactory无法创建求解器"scipampl“并返回一个UnknownSolver对象。在使用UnknownSolver对象时会引发此错误,好像它是有效的(通过调用方法"solve")。 最初的求解器是使用以下参数创建的:可执行文件: scipampl类型: scipampl _args:()选项:{}
Eclipse版本是"Oxygen.1 (4.7.1)“,PyDev版本是"6.0.0”。
python、pyomo和solvers版本如下:
~$ 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
我安装了CBC、GLPK和IPOT软件包如下:
conda install -c conda-forge coincbc
conda install -c conda-forge glpk
conda install -c conda-forge ipopt
我在Linux.deb软件包" SCIPOPTSUITE -4.0.1-Linux.deb“中安装了最新的SCIPOptSuite版本"4.0.1”
我还安装了AMPL和PYSCIPOPT,如下所示:
conda install -c conda-forge ampl-mp
conda install -c leethargo scipoptlib
conda install -c leethargo pyscipopt
发布于 2017-10-05 16:17:36
编辑:按照以下说明:http://zverovich.net/2012/08/07/using-scip-with-ampl.html
有几件可能有帮助的事情:
leethargo
上的conda包不是官方的conda包(因为没有)啊,看看我在谷歌搜索"pyomo“后发现了什么:
因此,PYOMO只通过AMPL接口(ASL)支持SCIP。
https://stackoverflow.com/questions/46589393
复制相似问题