Installieren von or-tools mit SCIP und GLPK in einer virtuellen Python 3.7-Umgebung unter Linux

Ich entschied mich für die Teilnahme am Wettbewerb und es war notwendig, Pakete für ihn zu verwenden, um Optimierungsprobleme zu lösen. Ich habe das Google-Tool oder die Google-Tools ausgewählt, bei denen es sich um eine Schnittstelle für verschiedene Löser handelt (oder um gelöste? Löser?). Es enthält mehrere Optimierungstools, aber die Entwickler beanspruchen Unterstützung für mehrere externe Pakete, einschließlich kommerzieller Gurobi und CPLEX. Wir sind jedoch keine reichen Leute, und wir werden kostenlos SCIP und GLPK verwenden (übrigens von einem inländischen Entwickler). Zu meiner Überraschung fand ich keine Anweisungen, wie all diese Pracht in einer virtuellen Python-Umgebung auf den Freiflächen unseres und des englischsprachigen Internetsegments funktionieren könnte, und ich musste ein wenig basteln. Für diejenigen, die es eilig haben, lesen Sie hierIch schlage den Rest vor, um sich mit der zweifelhaften Qualität meiner Graphomanie vertraut zu machen, die die Höhen und Tiefen der Installation von Google-Software beschreibt. Ja, ich habe sofort vergessen zu sagen, dass alles in Manjaro Linux installiert war.


Erste Schritte


Alle drei Pakete sind im Python-Repository vorhanden, daher installieren wir über via pip.

Jedes von ihnen hat seine eigene Oberfläche, und or-tools wurde ausgewählt, um verschiedene Pakete auszuprobieren, ohne das Programm wesentlich neu zu schreiben. Daher besteht die Aufgabe darin, dass or-tools diese Löser aufnimmt und sie durch sich selbst laufen lässt. Und was denkst du? Installiert über Pip oder Tools werden installierte Löser nicht über Pip installiert, und sie sehen es nicht (wer hätte das gedacht). Sie müssen sich also noch ansehen, was in der Dokumentation steht .
In die Docks schreiben sie, was von der Quelle gesammelt werden muss, damit or-tools externe Pakete abholt. Wir versuchen zu sammeln, und es kommt nichts heraus, weil die durch pip installierten Löser nicht sichtbar sind.
Dementsprechend funktionieren die einfachsten Möglichkeiten, alle Pakete über pip zu installieren, nicht, da or-tools keine Löser zieht, Löser Bibliotheken nicht so platzieren, wie es or-tools will, jeder Fehler auf Sie schüttet, Sie als dumm bezeichnet und auf jede mögliche Weise lacht.

Weiter in den Docks schreiben sie , dass es notwendig ist, Löser aus den Quellen und dann aus den Quellen zu sammeln, um die or-Tools selbst zu sammeln. Gesagt, getan! Installiertes SCIP, installiertes GLPK, aber die Frage, die in der Dokumentation nicht beschrieben wurde, war, wie Or-Tools in eine virtuelle Umgebung gestellt werden.

Der einzige Befehl make python, der in den Docks aufgeführt ist, installiert das Paket global auf dem System (überraschenderweise, oder?).

Ich hatte jedoch Glück: Während der technischen Suche mit der Endlos-Affen-Methode habe ich versehentlich make help eingegeben und eine Liste aller Optionen zum Erstellen von Werkzeugen erhalten, darunter die Möglichkeit, ein Radpaket zu erstellen. Dies ist der Befehl make python_package, falls dies der Fall ist (ich werde ihn am Ende noch einmal wiederholen). Also ist es Zeit zu bauen und zu starten?



Auf der Suche nach einem Problem


In der Erstellungsphase von or-tools funktioniert nichts, es schwört auf die fehlerhaften GLPK-Bibliotheken.



Das Erstellen mit SCIP mit den Parametern aus der Dokumentation ist erfolgreich, aber or-tools funktioniert zum Zeitpunkt des Imports immer noch nicht.



Ich konnte alleine keine Lösung für diese Probleme finden, also ging ich zum Github, um die Entwickler zu fragen, warum die Installation gemäß ihren Anweisungen irgendwo in ihrem Code Fehler erzeugt.


Hmm, danke für die Klarstellungen.

Während ich auf eine Antwort im Github wartete, kramte ich im Internet und hoffte, etwas zu finden, das mir helfen würde. Und da es nicht überraschend ist, habe ich es gefunden. Es war ein Blog des Projektteams, in dem er schrieb, wie man GLPK mit or-tools verknüpft. Und diese Methode hat endlich funktioniert! Wenn Sie jetzt alles ohne SCIP, aber mit GLPK erstellen, können Sie sogar damit arbeiten. Schon Fortschritte.

Der Teamleiter von or-tools riet jedoch nicht zur Verwendung von GLPK und sagte, dass die Ergebnisse nicht wichtig seien, und ich möchte SCIP trotzdem besiegen und es zum Laufen bringen. Der benachbarte Beitrag im Blog kam auf die Idee, dass das Google Release-Paket mit bestimmten Versionen funktioniert. Wir sehen uns die Liste der Release-Änderungen an und sehen dort explizite Hinweise auf Version 6.0.0. Trotz der Tatsache, dass Version 6.0.2 im Makefile angegeben ist, versuchen wir, eine ältere Version und voila zu installieren!

Und jetzt wieder eine funktionierende Abfolge von Aktionen.

Installationsreihenfolge


  1. Laden Sie das SCIP - Archiv, um sicherzustellen , dass es für die Version Sie herunterladen (in meinem Fall eindeutig angegebene Unterstützung developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0 ) und entpacken Sie es.
  2. Laden Sie GLPK herunter (zum Zeitpunkt der Veröffentlichung der neuesten Version 4.65) und entpacken Sie es.
  3. Installieren Sie den SCIP-Befehl

    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0
    
  4. Installieren Sie GLPK mit dem folgenden Befehl:

    ./configure --prefix=<install_path> --with-pic --enable-shared
    make
    make install
    
  5. Laden Sie OR-Tools von github herunter

    git clone https://github.com/google/or-tools
  6. Installieren Sie OR-Tools mit den Befehlen:

    make third_party
    make python_package
    

    Wenn der letzte Befehl nicht funktioniert, installieren Sie das Rad mit dem folgenden Befehl:

    pip install wheel
  7. Um die virtuelle Umgebung zu aktivieren, rufen Sie den Ordner mit dem Python-Paket auf und installieren Sie ihn von dort aus.

    Wenn Sie nicht in einer virtuellen Umgebung, sondern global für das gesamte System installieren müssen:

    make python_package

    Führen Sie den Befehl aus:

    make python
    

All Articles