2014-10-29 2 views
0

В последнее время я хочу попробовать некоторые решения с открытым исходным кодом вместо CPLEX. Я обнаружил, что PICOS + zibopt может быть хорошим выбором. Тем не менее, я могу просто найти инструкцию о том, как сделать zibopt работать с python под окнами должным образом. Я загрузил библиотеки Windows (DLL-файл) из scip, и я пытаюсь установить python-zibopt в соответствии с командой «python setup.py install». Ошибка «blockmemshell/memory.h нет такого файла» всегда выпадала. Я чувствовал, что это потому, что мой компилятор, который является VS120COMNTOOL, doecn't найти scip решатель. Есть ли вероятность, что я смогу сделать работу над окнами сейчас?Возможно ли, что SCIP и python-zibopt работают под окнами?

ответ

0

Вы посмотрели текущий интерфейс python SCIP 3.1.0? Он использует библиотеку из пакета оптимизации SCIP, поэтому вам не нужно связывать другой решатель LP с SCIP. В Windows попробуйте изменить файл setup.py:

import sys, os, readline, glob, platform 
from distutils.core import setup 
from distutils.extension import Extension 
from Cython.Distutils import build_ext 
from Cython.Build import cythonize 

BASEDIR = os.path.dirname(os.path.abspath(__file__)) 
BASEDIR = os.path.dirname(BASEDIR) 
BASEDIR = os.path.dirname(BASEDIR) 
INCLUDEDIR = os.path.join(BASEDIR,'src') 
BASEDIR = os.path.dirname(BASEDIR) 

#identify compiler version 
prefix = "MSC v." 
i = sys.version.find(prefix) 
if i == -1: 
    raise Exception('cannot determine compiler version') 
i = i + len(prefix) 
s, rest = sys.version[i:].split(" ", 1) 
majorVersion = int(s[:-2]) - 6 
minorVersion = int(s[2:3])/10.0 

if platform.architecture()[0].find('64')>=0: 
    LIBDIR = os.path.join(BASEDIR,'vc'+str(majorVersion),'scip_spx','x64','Release') 
else: 
    LIBDIR = os.path.join(BASEDIR,'vc'+str(majorVersion),'scip_spx','Release') 
print('BASEDIR='+ BASEDIR) 
print('INCLUDEDIR='+ INCLUDEDIR) 
print('LIBDIR='+ LIBDIR) 

def complete(text, state): 
    return (glob.glob(text+'*')+[None])[state] 

readline.set_completer_delims(' \t\n;') 
readline.parse_and_bind("tab: complete") 
readline.set_completer(complete) 

libscipopt = 'lib/libscipopt.so' 
includescip = 'include/scip' 

ext_modules = [] 

ext_modules += [Extension('pyscipopt.scip', [os.path.join('pyscipopt', 'scip.pyx')], 
         #extra_compile_args=['-g', '-O0', '-UNDEBUG'], 
         include_dirs=[INCLUDEDIR], 
         library_dirs=[LIBDIR], 
         #runtime_library_dirs=[os.path.abspath('lib')], 
         libraries=['spx', 'scip_spx'])] 
         #libraries=['scipopt', 'readline', 'z', 'gmp', 'ncurses', 'm'])] 

setup(
    name = 'pyscipopt', 
    version = '0.1', 
    description = 'wrapper for SCIP in Python', 
    author = 'Zuse Institute Berlin', 
    author_email = '[email protected]', 
    license = 'MIT', 
    cmdclass = {'build_ext' : build_ext}, 
    ext_modules = ext_modules, 
    packages=['pyscipopt'] 
)