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

Ich beschloss, mitzumachen Wettbewerb und es war notwendig, Pakete zur Lösung von Optimierungsproblemen zu verwenden. Ich habe mich für das Google-Tool or-tools entschieden, das eine Schnittstelle für verschiedene Solver (oder Solver? Solver?) darstellt. Es enthält mehrere Optimierungstools, aber die Entwickler behaupten, mehrere externe Pakete zu unterstützen, darunter kommerzielle Gurobi und CPLEX. Wir sind jedoch keine reichen Leute und werden kostenloses SCIP und GLPK verwenden (übrigens von einem inländischen Entwickler). Zu meiner Überraschung fand ich in den Weiten unseres und des englischsprachigen Internetsegments keine einzige Anleitung, wie man all diese Pracht in der virtuellen Umgebung von Python zum Laufen bringen könnte, und ich musste ein wenig basteln. Wer es eilig hat, sollte gleich lesen hierAllen anderen empfehle ich meine etwas zweifelhaften Aufzeichnungen zur Installation von Google-Software. Ach ja, und ich hatte vergessen zu erwähnen, dass alles unter Manjaro installiert wurde. Linux.

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

Erste Schritte

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

Jeder von ihnen hat seine eigene Schnittstelle, und or-tools wurde nur ausgewählt, um verschiedene Pakete auszuprobieren, ohne das Programm wesentlich umzuschreiben. Daher besteht die Aufgabe für or-tools darin, diese Solver aufzugreifen und sie durch sich selbst laufen zu lassen. Was denkst du? Über pip installiert or-tools sieht keine über pip installierten Löser, und sie sehen es nicht (wer hätte das gedacht). Sie müssen sich also noch ansehen, was sie schreiben Dokumentation.
In den Dokumenten steht, dass Sie aus dem Quellcode erstellen müssen, damit or-tools externe Pakete abrufen können. Wir versuchen es zu kompilieren, aber es kommt nichts dabei heraus, da die über pip installierten Solver nicht sichtbar sind.
Dementsprechend funktionieren die einfachsten Methoden, alle Pakete über pip zu installieren, nicht, weil or-tools die Löser nicht hochzieht, die Löser die Bibliotheken nicht so installieren, wie or-tools es will, jeder wirft dir Fehler vor, nennt dich dumm und lacht auf jede erdenkliche Weise.

Weiter in Docks Sie schreiben, dass Sie Solver aus Quellcodes kompilieren und dann or-tools selbst aus Quellcodes kompilieren müssen. Gesagt, getan! Ich habe SCIP installiert, GLPK installiert, aber es stellte sich die Frage, wie man or-tools in einer virtuellen Umgebung installiert, was in der Dokumentation nicht beschrieben wurde.

Der einzige in den Docks geschriebene Befehl „make python“ installiert das Paket global auf dem System (überraschend, oder?).

Allerdings hatte ich Glück: Bei einer technischen Suche mit der Methode „Endless Monkeys“ habe ich versehentlich den Befehl „make help“ eingegeben und er hat mir eine Liste aller Optionen zum Bauen von „or-tools“ angezeigt, darunter auch die Option zum Bauen des Rades Paket. Dies ist, wenn überhaupt, der Befehl make python_package (ich wiederhole ihn am Ende noch einmal). Ist es also Zeit für den Zusammenbau und den Start?

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

Auf der Suche nach einem Problem

In der or-tools-Erstellungsphase funktioniert nichts, es werden fehlerhafte GLPK-Bibliotheken beklagt.

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

Der Build mit SCIP mit den Parametern aus der Dokumentation ist erfolgreich, or-tools funktioniert zum Zeitpunkt des Imports jedoch immer noch nicht.

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

Da ich alleine keine Lösung für diese Probleme finden konnte, ging ich zu GitHub und fragte die Entwickler, warum die Installation gemäß ihren Anweisungen irgendwo in ihrem Code Fehler erzeugt.

Installation von or-tools mit SCIP und GLPK in einer virtuellen Python 3.7-Umgebung Linux
Hmm, danke für die Klarstellung

Während ich auf Github auf eine Antwort wartete, durchforstete ich das Internet in der Hoffnung, etwas zu finden, das mir helfen würde. Und überraschenderweise habe ich es gefunden. Es war Blog Teamleiter des Projekts, wo er darüber schrieb, wie man GLPK mit or-tools verbindet. Und diese Methode hat endlich funktioniert! Wenn Sie nun alles ohne SCIP, aber mit GLPK sammeln, dann können Sie sogar damit arbeiten. Schon Fortschritte.

Der Teamleiter des or-tools-Teams empfahl die Verwendung von GLPK jedoch nicht mit der Begründung, dass die angezeigten Ergebnisse unwichtig seien und ich trotzdem SCIP besiegen und dafür sorgen möchte, dass es funktioniert. Benachbart Post Der Blog brachte mich auf die Idee, dass das Google-Paket mit bestimmten Versionen funktioniert. Schauen wir mal Liste der Release-Änderungen und wir sehen dort einen expliziten Hinweis auf Version 6.0.0. Obwohl im Makefile Version 6.0.2 angegeben ist, versuchen wir, eine ältere Version zu installieren und voilà!

Und nun noch einmal der funktionierende Handlungsablauf.

Installationsreihenfolge

  1. Laden Sie das SCIP-Archiv herunter und stellen Sie sicher, dass dies der Fall ist hier Die Unterstützung für die Version, die Sie herunterladen, wird deutlich angezeigt (in meinem Fall). Developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) und auspacken.
  2. Laden Sie GLPK herunter (zum Zeitpunkt dieses Beitrags ist die neueste 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 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 folgenden 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, gehen Sie in den Ordner mit dem Python-Paket und installieren Sie es von dort.

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

    make python_package

    Führen Sie den Befehl aus:

    make python
    

Source: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz und VPS-VDS-Servern 🔥 Kaufen Sie zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster