Instalación de herramientas o con SCIP y GLPK en un entorno virtual Python 3.7 en Linux

Decidí participar en la competencia y era necesario usar paquetes para que él resolviera problemas de optimización. Elegí las herramientas o herramientas de Google, que es una interfaz para diferentes solucionadores (¿o resueltos? ¿Solucionadores?). Contiene varias herramientas de optimización, pero los creadores reclaman soporte para varios paquetes externos, incluidos Gurobi y CPLEX comerciales. Sin embargo, no somos personas ricas, y utilizaremos SCIP y GLPK gratuitos (por cierto, de un desarrollador nacional). Para mi sorpresa, ni una sola instrucción sobre cómo hacer que todo este esplendor funcione en un entorno virtual de Python, no lo encontré en los espacios abiertos de nuestros segmentos de Internet y de habla inglesa y tuve que pensar un poco. Para aquellos que tienen prisa, lea aquí, Sugiero al resto que se familiarice con la dudosa calidad de mi grafomanía, que describe los altibajos de la instalación del software de Google. Sí, olvidé decir de inmediato que todo estaba instalado en Manjaro Linux.


Primeros pasos


Los tres paquetes existen en el repositorio de Python, por lo que instalamos desde pip.

Cada uno de ellos tiene su propia interfaz, y se eligieron las herramientas o solo para probar diferentes paquetes sin una reescritura significativa del programa, por lo que la tarea es recoger las herramientas o dejar que estos solucionadores se ejecuten por sí mismos. ¿Y, qué piensas? Instalado a través de pip o-tools no ve los solucionadores instalados a través de pip, y ellos no lo ven (quién lo hubiera pensado). Entonces, aún necesita ver lo que escriben en la documentación .
En los muelles escriben lo que se debe recopilar de la fuente para que o-tools recoja paquetes externos. Intentamos recopilar, y no sale nada, porque los solucionadores instalados a través de pip no son visibles.
En consecuencia, las formas más fáciles de instalar todos los paquetes a través de pip no funcionan, porque o-tools no extrae solucionadores, los solucionadores no instalan bibliotecas como quiere o-tools, todos te arrojan errores, te llaman estúpido y se ríen de todas las formas posibles.

Además, en los muelles escriben que es necesario recopilar solucionadores de los códigos fuente, luego de la fuente para recopilar o herramientas en sí. ¡Dicho y hecho! Instalé SCIP, instalé GLPK, pero la pregunta que surgió no descrita en la documentación fue cómo colocar herramientas o en un entorno virtual.

El único comando make python en los muelles instala el paquete globalmente en el sistema (sorprendentemente, ¿eh?).

Sin embargo, tuve suerte: en el curso de una búsqueda de ingeniería utilizando el método del mono interminable, accidentalmente escribí hacer ayuda y me dieron una lista de todas las opciones de construcción de herramientas o, entre las cuales estaba la oportunidad de construir un paquete de ruedas. Este es el comando make python_package, si es eso (lo repetiré nuevamente al final). Entonces, ¿es hora de construir y lanzar?



Buscando un problema


Nada funciona en la fase de compilación de herramientas o, lo jura en las bibliotecas GLPK malas.



Construir con SCIP con los parámetros de la documentación es exitoso, pero o-tools aún se niega a funcionar en el momento de la importación.



No pude encontrar una solución a estos problemas por mi cuenta, así que fui al github para que los desarrolladores preguntaran por qué la instalación de acuerdo con sus instrucciones produce errores en algún lugar dentro de su código.


Hmm, gracias por las aclaraciones.

Mientras esperaba una respuesta en el github, busqué en Internet con la esperanza de encontrar algo que me ayudara. Y como no es sorprendente, lo encontré. Fue un blog líder del equipo del proyecto donde escribió sobre cómo vincular GLPK con herramientas o. ¡Y este método finalmente funcionó! Ahora, si compila todo sin SCIP, pero con GLPK, incluso puede trabajar con esto. Ya progreso.

Sin embargo, el líder del equipo o-tools no aconsejó usar GLPK, diciendo que los resultados no son importantes, y todavía quiero derrotar a SCIP y hacer que funcione. La publicación vecina en el blog surgió con la idea de que el paquete de lanzamiento de Google funciona con versiones específicas. Observamos la lista de cambios de lanzamiento y vemos indicaciones explícitas de la versión 6.0.0 allí. A pesar de que la versión 6.0.2 está indicada en el archivo MAKE, estamos intentando instalar una versión anterior y ¡listo!

Y ahora de nuevo, una secuencia de trabajo de acciones.

Secuencia de instalación


  1. Descargue el archivo SCIP, asegurándose de que haya un soporte claramente indicado para la versión que descargue (en mi caso developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0 ) y desempaquete.
  2. Descargue GLPK (al momento de publicar la última versión 4.65) y descomprímalo.
  3. Instalar el comando SCIP

    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0
    
  4. Instale GLPK con el comando:

    ./configure --prefix=<install_path> --with-pic --enable-shared
    make
    make install
    
  5. Descargar OR-Tools desde github

    git clone https://github.com/google/or-tools
  6. Instale OR-Tools con los comandos:

    make third_party
    make python_package
    

    Si el último comando no funciona, instale wheel con el comando:

    pip install wheel
  7. Para activar el entorno virtual, vaya a la carpeta con el paquete Python e instálelo desde allí.

    Si necesita instalar no en un entorno virtual, sino globalmente para todo el sistema:

    make python_package

    ejecuta el comando:

    make python
    

All Articles