Ошибка при установке SCIP в качестве решателя с PYOMO

Я пытаюсь решить проблему MILP, созданную в PYOMO с помощью SCIP в качестве решателя. Я запускаю проблему из PyDev, используя интерпретатор python ANACONDA.

Я могу запускать и решать проблему с помощью других решателей, а именно 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 Traceback решателя (последний вызов последний): Файл "/ home / alessandro / Documents / Eclipse workspace / test1 / src / test1.py", строка 48, в results = opt.solve (instance) # решает и обновляет файл экземпляра "/ home / alessandro / anaconda3 / lib / python3 .6 / site-packages / pyomo / opt / base / solvers.py ", строка 539, в файле решения self.available (exception_flag = True)" /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 либо не существует, либо не является исполняемым. Чтобы пропустить эту проверку, вызовите set_executable с validate = False. Отслеживание (последний вызов последним): файл "/ home / alessandro / Documents / Eclipse workspace / test1 / src / test1.py", строка 48, в файле results = opt.solve (instance) "/ home / alessandro / anaconda3 / lib / python3.6 / site-packages / pyomo / opt / base / solvers.py ", строка 127, в файле решения self._solver_error ('resolve')" /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 использовался, как если бы он был действительным (путем вызова метода «решить»).

Исходный решатель был создан со следующими параметрами: исполняемый файл: тип 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

Я установил последнюю версию SCIPOPTSUITE "4.0.1" с пакетом Linux-Debian "SCIPOptSuite-4.0.1-Linux.deb"

Я также установил AMPL-MP SCIPOPTLIB и PYSCIPOPT следующим образом:

conda install -c conda-forge ampl-mp
conda install -c leethargo scipoptlib
conda install -c leethargo pyscipopt

person sasap    schedule 05.10.2017    source источник


Ответы (1)


РЕДАКТИРОВАТЬ: следуйте этим инструкциям: http://zverovich.net/2012/08/07/using-scip-with-ampl.html

Несколько вещей, которые могут помочь:

  • пакет conda в leethargo не является официальным пакетом conda (потому что его нет)
  • попробуйте сначала установить и запустить PySCIPOpt через pip
  • PySCIPOpt не связан с PYOMO, поэтому вам, скорее всего, придется полагаться на AMPL для поддержки SCIP.
  • PYOMO поддерживает SCIP? Я не мог понять этого из их документации

Ах, посмотрите, что я нашел после поиска в Google "pyomo scip":

Итак, PYOMO поддерживает SCIP только через интерфейс AMPL (ASL).

person mattmilten    schedule 05.10.2017
comment
Итак, означает ли это, что мне нужен полный доступ к AMPL (у меня нет на это лицензии) или есть другой способ решить проблему? Мне понравился SCIP за то, что он быстрый и бесплатный для академических кругов, но для этого пришлось использовать MATLAB. Затем я начал с pyomo, и было бы здорово, если бы я мог продолжать использовать scip ... - person sasap; 05.10.2017
comment
Нет, вам не нужен AMPL. Следуйте этим инструкциям, чтобы сгенерировать необходимый scipampl исполняемый файл для PYOMO. Это выглядит немного непонятно, но я только что попробовал его с последней версией SCIP 4.0.1, и он все еще работает. - person mattmilten; 05.10.2017
comment
Я не вижу инструкции, не хватает ли ссылки? - person sasap; 06.10.2017
comment
Извините, я забыл вставить ссылку. Вот он: zverovich.net/2012/08/07/ using-scip-with-amp.html - person mattmilten; 06.10.2017