Decidín participar e foi necesario utilizar paquetes para resolver problemas de optimización. Escollín a ferramenta ou-ferramentas de Google, que é unha interface para diferentes solucionadores (ou solucionadores? solucionadores?). Contén varias ferramentas de optimización, pero os creadores reclaman soporte para varios paquetes externos, incluíndo Gurobi e CPLEX comerciais. Non obstante, non somos persoas ricas e usaremos SCIP e GLPK gratuítos (por certo, dun programador doméstico). Para a miña sorpresa, non atopei nin unha soa instrución sobre como facer que toda esta magnificencia funcionase no entorno virtual de Python sobre a inmensidade tanto do noso segmento como dos angloparlantes de Internet e tiven que retocar un pouco. Para os que teñan présa, lea de inmediato , convido ao resto a que se familiarice coa miña grafomanía de dubidosa calidade, que describe as vicisitudes da instalación do software de Google. Si, esquecín dicir de inmediato que todo estaba instalado en Manjaro Linux.

Primeiros Pasos
Os tres paquetes existen no repositorio de Python, polo que os instalamos desde pip.
Cada un deles ten a súa propia interface, e or-tools escolleuse só para probar diferentes paquetes sen reescribir significativamente o programa, polo que a tarefa é que or-tools colle estes solucionadores e deixe que funcionen por si mesmo. E ti que opinas? Instalados a través de pip ou-tools non ve solucionadores instalados a través de pip, e non o ven (quen o pensaría). Entón, aínda debes mirar o que escriben .
Os documentos escriben que cómpre construír desde a fonte para que or-tools poida recoller paquetes externos. Tentamos compilalo, pero non sae nada, porque os solucionadores instalados mediante pip non son visibles.
En consecuencia, os métodos máis sinxelos para instalar todos os paquetes a través de pip non funcionan, porque or-tools non leva os solucionadores, os solucionadores non instalan as bibliotecas como quere or-tools, todo o mundo che arroxa erros, chámache estúpido e ri de todos os xeitos posibles.
A continuación en Eles escriben que cómpre compilar solucionadores a partir de códigos fonte e, a continuación, compilar o propio or-tools a partir de códigos fonte. Nada máis dicir que feito! Instalei SCIP, instalei GLPK, pero xurdiu a pregunta, que non estaba descrita na documentación, de como instalar or-tools nun ambiente virtual.
O único comando escrito nos peiraos, facer python, instala o paquete globalmente no sistema (sorprendente, non?).
Non obstante, tiven sorte: durante unha busca de enxeñería mediante o método dos monos infinitos, teclei accidentalmente o comando make help e deume unha lista de todas as opcións para construír ou-ferramentas, entre as que estaba a opción de construír a roda. paquete. Este é o comando make python_package, se hai algo (repetireino de novo ao final). Entón, é hora de montar e lanzar?

Buscamos un problema
Nada funciona na fase de construción de ou-tools, quéixase de bibliotecas GLPK defectuosas.

A compilación con SCIP cos parámetros da documentación ten éxito, pero or-tools aínda se nega a funcionar no momento da importación.

Non puiden atopar unha solución a estes problemas pola miña conta, así que fun a GitHub para preguntarlles aos desenvolvedores por que a instalación segundo as súas instrucións produce erros nalgún lugar do seu código.

Hmm, grazas pola aclaración
Mentres esperaba unha resposta en Github, busquei Internet coa esperanza de atopar algo que me axudara. E, sorprendentemente, atopeino. Foi xefe de equipo do proxecto, onde escribiu sobre como conectar GLPK con or-tools. E este método finalmente funcionou! Agora, se recolles todo sen SCIP, pero con GLPK, ata podes traballar con el. Xa avanza.
Non obstante, o xefe de equipo do equipo de or-tools non recomendou usar GLPK, dicindo que os resultados que mostra non son importantes e aínda quero derrotar SCIP e facelo funcionar. Veciño O blog deume a idea de que o paquete de Google funciona con versións específicas. Imos mirar e vemos alí unha indicación explícita da versión 6.0.0. A pesar de que a versión 6.0.2 está indicada no makefile, tentamos instalar unha versión máis antiga e listo!
E agora unha vez máis a secuencia de traballo de accións.
Secuencia de instalación
- Descarga o arquivo SCIP, asegurándoo o soporte para a versión que estás descargando está claramente indicado (no meu caso ) e desempaquete.
- Descarga GLPK (no momento desta publicación a última versión é a 4.65) e descomprime.
- Instalar o comando SCIP
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0 - Instala GLPK co comando:
./configure --prefix=<install_path> --with-pic --enable-shared make make install - Descarga OR-Tools de Github
git clone https://github.com/google/or-tools - Instale OR-Tools usando os comandos:
make third_party make python_packageSe o último comando non funciona, instala wheel co comando:
pip install wheel - Para activar o entorno virtual, vai ao cartafol co paquete Python e instálao desde alí.
Se precisa instalar non nun ambiente virtual, senón globalmente para todo o sistema, en lugar de:
make python_packageexecuta o comando:
make python
Fonte: www.habr.com
