Installation de ou-tools avec SCIP et GLPK dans un environnement virtuel Python 3.7 sous Linux

J'ai décidé de participer au concours et il a fallu lui utiliser des packages pour résoudre des problèmes d'optimisation. J'ai choisi l'outil ou les outils Google, qui est une interface pour différents solveurs (ou résolus? Solveurs?). Il contient plusieurs outils d'optimisation, mais les créateurs revendiquent la prise en charge de plusieurs packages externes, notamment Gurobi commercial et CPLEX. Cependant, nous ne sommes pas riches et nous utiliserons gratuitement SCIP et GLPK (d'un développeur national, en passant). À ma grande surprise, pas une seule instruction sur la façon de faire fonctionner toute cette splendeur dans un environnement virtuel en python, je ne l'ai pas trouvé sur les espaces ouverts de nos segments Internet et anglophones et j'ai dû bricoler un peu. Pour ceux qui sont pressés, lisez ici, Je suggère au reste de se familiariser avec la qualité douteuse de ma graphomanie, qui décrit les hauts et les bas de l'installation du logiciel Google. Oui, j'ai oublié de dire tout de suite que tout était installé dans Manjaro Linux.


Premiers pas


Les trois packages existent dans le référentiel python, nous installons donc depuis via pip.

Chacun d'eux a sa propre interface, et or-tools a été choisi juste pour essayer différents packages, sans réécriture importante du programme, donc la tâche est que or-tools récupère ces solveurs et les laisse s'exécuter. Et qu'en penses-tu? Installé via pip ou-tools ne voit pas les solveurs installés via pip, et ils ne le voient pas (qui aurait pensé). Donc, vous devez toujours regarder ce qu'ils écrivent dans la documentation .
Sur les quais, ils écrivent ce qui doit être collecté à la source afin que or-tools récupère les packages externes. Nous essayons de collecter, et rien ne sort, car les solveurs installés via pip ne sont pas visibles.
En conséquence, les moyens les plus simples d'installer tous les packages via pip ne fonctionnent pas, car or-tools ne tire pas les solveurs, les solveurs n'installent pas les bibliothèques comme le veut or-tools, tout le monde vous déforme, ils vous appellent stupide et rient de toutes les manières possibles.

Plus loin dans les docks, ils écrivent qu'il est nécessaire de collecter les solveurs à partir des codes source, puis de la source pour collecter les outils eux-mêmes. À peine dit que c'était fait! SCIP installé, GLPK installé, mais la question qui se posait non décrite dans la documentation était de savoir comment mettre ou-tools dans un environnement virtuel.

La seule commande make python sur les docks installe le paquet globalement sur le système (étonnamment, hein?).

Cependant, j'ai eu de la chance: au cours d'une recherche d'ingénierie utilisant la méthode du singe sans fin, j'ai accidentellement tapé make help et on m'a donné une liste de toutes les options de construction de or-tools, parmi lesquelles la possibilité de construire un package de roues. Il s'agit de la commande make python_package, si cela (je le répéterai à la fin). Alors, est-il temps de construire et de lancer?



Vous cherchez un problème


Rien ne fonctionne à la phase de construction de or-tools, cela ne jure que par les mauvaises bibliothèques GLPK.



La construction avec SCIP avec les paramètres de la documentation est réussie, mais or-tools refuse toujours de fonctionner au moment de l'importation.



Je n'ai pas pu trouver de solution à ces problèmes par moi-même, alors je suis allé voir les développeurs github pour demander pourquoi l'installation selon leurs instructions produit des erreurs quelque part dans leur code.


Hmm, merci pour les clarifications.

Pendant que j'attendais une réponse sur le github, j'ai fouillé sur Internet, espérant trouver quelque chose qui pourrait m'aider. Et comme ce n'est pas surprenant, je l'ai trouvé. C'était un blog dirigé par une équipe de projet où il a écrit sur la façon de lier GLPK à des outils or. Et cette méthode a finalement fonctionné! Maintenant, si vous construisez tout sans SCIP, mais avec GLPK, vous pouvez même travailler avec cela. Déjà des progrès.

Cependant, le chef d'équipe or-tools n'a pas conseillé d'utiliser GLPK, disant que les résultats ne sont pas importants, et je veux toujours vaincre SCIP et le faire fonctionner. Voisins post dans le blog est tombé sur l'idée que package de version de Google fonctionne avec les versions spécifiques. Nous regardons la liste des changements de version et y voyons une indication explicite de la version 6.0.0. Malgré le fait que la version 6.0.2 soit indiquée dans le makefile, nous essayons d'installer une version plus ancienne et le tour est joué!

Et maintenant encore, une séquence d'actions de travail.

Séquence d'installation


  1. Téléchargez l'archive SCIP, en vous assurant qu'il existe un support clairement indiqué pour la version que vous téléchargez (dans mon cas, developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0 ) et décompressez.
  2. Téléchargez GLPK (au moment de publier la dernière version 4.65) et décompressez.
  3. Installer la commande SCIP

    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0
    
  4. Installez GLPK avec la commande:

    ./configure --prefix=<install_path> --with-pic --enable-shared
    make
    make install
    
  5. Télécharger OR-Tools depuis github

    git clone https://github.com/google/or-tools
  6. Installez OR-Tools avec les commandes:

    make third_party
    make python_package
    

    Si la dernière commande ne fonctionne pas, installez wheel avec la commande:

    pip install wheel
  7. Pour activer l'environnement virtuel, allez dans le dossier contenant le package Python et installez-le à partir de là.

    Si vous devez installer non pas dans un environnement virtuel, mais globalement pour l'ensemble du système:

    make python_package

    exécutez la commande:

    make python
    

All Articles