Or-tööriistade installimine SCIP ja GLPK abil Python 3.7 virtuaalsesse keskkonda Linux

Ma otsustasin osaleda võistlus ja optimeerimisülesannete lahendamiseks oli vaja kasutada pakette. Valisin Google'i tööriista or-tools, mis on liides erinevatele lahendajatele (või lahendajatele? lahendajatele?). See sisaldab mitmeid optimeerimistööriistu, kuid loojad deklareerivad tuge mitmetele välistele pakettidele, sealhulgas kommertslikele Gurobile ja CPLEXile. Me pole aga rikkad inimesed ja kasutame tasuta SCIP-i ja GLPK-d (muide, kodumaiselt arendajalt). Minu üllatuseks ei leidnud ma ühtegi juhist selle kohta, kuidas kogu seda suurejoonelisust virtuaalses Pythoni keskkonnas nii meie kui ka ingliskeelse internetisegmendi avarustes tööle panna ja pidin natuke nokitsema. Kiirustavatele lugege kohe. siinÜlejäänutele soovitan lugeda minu kahtlaseid kirjatöid, mis kirjeldavad Google'i tarkvara installimise nüansse. Ahjaa, ja ma unustasin mainida, et kõik installiti Manjarole. Linux.

Or-tööriistade installimine SCIP ja GLPK abil Python 3.7 virtuaalsesse keskkonda Linux

Esimesed sammud

Kõik kolm paketti eksisteerivad Pythoni repositooriumis, seega paigaldame need pipi kaudu.

Igal neist on oma liides ja or-tools valiti just selleks, et proovida erinevaid pakette ilma programmi oluliselt ümber kirjutamata, seega on or-toolsi ülesanne need lahendajad ühendada ja lasta neil endal töötada. Ja mida te arvate? Pipi kaudu installitud or-tools ei näe pipi kaudu installitud lahendajaid ja nemadki ei näe seda (kes oleks osanud arvata). Seega peame ikkagi vaatama, mida nad sisse kirjutavad. dokumentatsioon.
Dokumentatsioonis öeldakse, et peate ehitama lähtekoodist, et or-tools saaks väliseid pakette vastu võtta. Proovime ehitada, aga miski ei toimi, sest pip-i kaudu installitud lahendajad pole nähtavad.
Seega ei tööta ka kõige lihtsamad viisid kõigi pakettide installimiseks pipi kaudu, sest or-tools ei ava lahendajaid, lahendajad ei installi teeke nii, nagu or-tools soovib, kõik viskavad sulle vigu, nimetavad sind lolliks ja naeravad su üle igal võimalikul moel.

Järgmisena dokid Nad kirjutavad, et peate lähtekoodist kompileerima lahendajad ja seejärel kompileerima or-tools ise lähtekoodist. Niipea kui öeldud, siis tehtud! Paigaldasin SCIP-i, paigaldasin GLPK-i, aga tekkis küsimus, mida dokumentatsioonis ei kirjeldatud: kuidas paigaldada or-tools virtuaalsesse keskkonda.

Dokumentatsioonis on ainult üks käsk: make python, mis installib paketi globaalselt süsteemi (üllatav, eks?).

Mul vedas aga: lõpmatute ahvide meetodil tehes otsingut, kirjutasin kogemata käsu make help ja see andis mulle loendi kõigist or-tools'i loomise valikutest, mille hulgas oli ka wheel paketi loomise võimalus. See on muide käsk make python_package (kordan seda lõpus veel kord). Kas on aeg see luua ja käivitada?

Or-tööriistade installimine SCIP ja GLPK abil Python 3.7 virtuaalsesse keskkonda Linux

Probleemi otsimine

or-tools ehitusetapis ei tööta miski, see kurdab halbade GLPK teekide üle.

Or-tööriistade installimine SCIP ja GLPK abil Python 3.7 virtuaalsesse keskkonda Linux

SCIP-iga ehitamine dokumentatsiooni parameetritega on edukas, kuid or-tools keeldub impordi hetkel ikka töötamast.

Or-tööriistade installimine SCIP ja GLPK abil Python 3.7 virtuaalsesse keskkonda Linux

Ma ei suutnud neile probleemidele ise lahendust leida, seega läksin arendajate GitHubisse, et küsida, miks nende juhiste järgi installimine tekitab kuskil koodis vigu.

Or-tööriistade installimine SCIP ja GLPK abil Python 3.7 virtuaalsesse keskkonda Linux
Hmm, tänan selgituse eest.

GitHubis vastust oodates surfasin internetis, lootes leida midagi, mis mind aitaks. Ja üllatuslikult ma selle leidsingi. See oligi... blog projekti meeskonnajuht, kus ta kirjutas, kuidas siduda GLPK-d or-tööriistadega. Ja see meetod lõpuks toimis! Nüüd, kui kogute kõik ilma SCIP-ita, aga GLPK-ga, siis saate sellega isegi töötada. Juba on edusamme tehtud.

Or-toolsi meeskonna juht ei soovitanud aga GLPK-d kasutada, öeldes, et selle tulemused pole eriti head ning et nad tahavad ikkagi SCIP-ist jagu saada ja selle tööle panna. postitus blogis andis mulle idee, et Google'i pakett töötab teatud versioonidega. Vaatame väljalaskemuudatuste loend ja me näeme seal selget viidet versioonile 6.0.0. Hoolimata asjaolust, et makefile näitab versiooni 6.0.2, proovime installida vanema versiooni ja voilaa!

Ja nüüd taas kord toimingute toimimise jada.

Paigaldusjärjekord

  1. Laadige alla SCIP-arhiiv, veendudes, et siin allalaaditava versiooni tugi on selgelt märgitud (minu puhul developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) ja pakkige lahti.
  2. Laadige alla GLPK (postitamise ajal on uusim versioon 4.65) ja pakkige see lahti.
  3. Installige SCIP käsuga
    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0
    
  4. Paigalda GLPK käsuga:
    ./configure --prefix=<install_path> --with-pic --enable-shared
    make
    make install
    
  5. Laadige OR-tööriistad alla GitHubist
    git clone https://github.com/google/or-tools
  6. OR-tööriistade installimine käskudega:
    make third_party
    make python_package
    

    Kui viimane käsk ei tööta, paigalda ratas käsuga:

    pip install wheel
  7. Aktiveeri virtuaalne keskkond, mine Pythoni paketi kausta ja installi see sealt.

    Kui peate installima mitte virtuaalsesse keskkonda, vaid kogu süsteemi jaoks globaalselt, mitte:

    make python_package

    käivitage käsk:

    make python
    

Allikas: www.habr.com

Ostke DDoS-kaitsega saitide jaoks usaldusväärne hostimine, VPS VDS-serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster