我正在尝试解决在PYOMO中设置的MILP问题,即SCIP作为求解器。 我使用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_executable 无法找到解决方案scip所需的'scipampl'可执行文件 Traceback(最近一次调用最后一次): 文件“/ home / alessandro / Documents / Eclipse workspace / test1 / src / test1.py”,第48行,in results = opt.solve(instance)#solves and updates instance 文件“/home/alessandro/anaconda3/lib/python3.6/site-packages/pyomo/opt/base/solvers.py”,第539行,解决 self.available(exception_flag =真) 文件“/home/alessandro/anaconda3/lib/python3.6/site-packages/pyomo/opt/solver/shellcmd.py”,第122行,可用 引发ApplicationError(msg%self.name) pyutilib.common._exceptions.ApplicationError:找不到求解器'scip'的可执行文件
使用'scipampl'
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设置可执行文件。名称= scipampl的文件不存在或不可执行。要跳过此验证,请使用validate = False调用set_executable。 Traceback(最近一次调用最后一次): 文件“/ home / alessandro / Documents / Eclipse workspace / test1 / src / test1.py”,第48行,in results = opt.solve(instance) 文件“/home/alessandro/anaconda3/lib/python3.6/site-packages/pyomo/opt/base/solvers.py”,第127行,在解决 self._solver_error( '解决') 在_solver_error中输入文件“/home/alessandro/anaconda3/lib/python3.6/site-packages/pyomo/opt/base/solvers.py”,第155行 +“\ n \ toptions:%s”%(self.options,)) RuntimeError:尝试使用不可用的解算器。
SolverFactory无法创建解算器“scipampl” 并返回一个UnknownSolver对象。此时会出现此错误 使用UnknownSolver对象,就好像它是有效的(通过调用 方法“解决”)。
使用以下参数创建原始解算器: 可执行文件: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-Debian软件包“SCIPOptSuite-4.0.1-Linux.deb”安装了最新的SCIPOPTSUITE版本“4.0.1”
我还按如下方式安装了AMPL-MP SCIPOPTLIB和PYSCIPOPT:
conda install -c conda-forge ampl-mp
conda install -c leethargo scipoptlib
conda install -c leethargo pyscipopt
答案 0 :(得分:2)
编辑: 请按照以下说明操作:http://zverovich.net/2012/08/07/using-scip-with-ampl.html
可能会有所帮助的一些事情:
leethargo
的conda包不是官方的conda包(因为没有)啊,看看我在google搜索“pyomo scip”后发现的内容:
因此,PYOMO仅通过AMPL接口(ASL)支持SCIP。