or-tools, SCIP ja GLPK paigaldamine Python 3.7 virtuaalkeskkonnas Linuxis

Otsustasin osaleda võistlusel ja selle jaoks oli vajalik kasutada optimeerimise ülesannete lahendamise pakette. Valisin Google'i tööriista or-tools, mis on liides erinevatele lahendajatele. See sisaldab mitmeid optimeerimise tööriistu, kuid arendajad teatavad tuge mitmetelt välistelt pakettidelt, sealhulgas kaubanduslikelt Gurobi ja CPLEX. Kuid kuna me pole rikkad, kasutame tasuta SCIP ja GLPK (mis on muide kodumaise arendaja loodud). Üllatuseks ei leidnud ma ühtegi juhendit selle kõigi raamatute töölepanemiseks Python'i virtuaalkeskkonnas, ei meie ega ingliskeelsetes segmentides internetis, nii et tuli natuke vaeva näha. Neile, kes kiirustavad, lugege kohe siin, teistele soovitan tutvuda minu kaheldava kvaliteediga grafoomaania kirjeldustega Google'i tarkvara paigaldamise seiklustest. Jah, unustasin kohe öelda, et kõik paigaldati Manjaro Linuxis.

or-tools, SCIP ja GLPK paigaldamine Python 3.7 virtuaalkeskkonnas Linuxis

Esimesed sammud

Kõik kolm paketti on Python'i hoidlas, seega paigaldame selle pip'i kaudu.

Igal on oma liides, ja or-tools valiti just selleks, et katsetada erinevaid pakette ilma olulise programmi ümberkirjutamiseta. Seega on ülesanne selles, et or-tools suudaks need lahendajad kiirelt integreerida ja läbi enda käivitada. Ja mida te arvate? Pip kaudu installitud or-tools ei näe pip kaudu installitud lahendajaid ning need ei näe teda (kes oleks võinud arvata). Seega on vaja ikkagi vaadata, mida kirjutatakse dokumentatsioonis.
Dokumentatsioonis öeldakse, et tuleb koguda algallikatest, et or-tools saaks välised paketid integreerida. Proovime koguda, kuid midagi ei õnnestu, sest pip kaudu installitud lahendajad ei ole nähtavad.
Seega ei tööta kõige lihtsamad viisid kõigi paketide installimiseks pip kaudu, sest or-tools ei tõmba lahendajaid endasse, lahendajad ei installi raamatukogusid nii, nagu or-tools soovib. Kõik viskavad sulle vigu, nimetavad lolliks ja naeravad igati.

Edasi dokumentatsioonis öeldakse, et lahendajad tuleb koguda algallikast ja seejärel or-tools ise. Nii on öeldud - nii teeme! Installisin SCIP-i, installisin GLPK-i, kuid sattusin dokumentatsioonis mittekirjeldatud küsimuse peale, kuidas or-tools paigaldada virtuaalsesse keskkonda.

Dokumentides kirjutatud ainus käsk make python installib paketi süsteemi globaalsetesse kaustadesse (üllatav, eks?).

Kuid mul vedas: inseneriteaduse protsessis lõputu ahvide meetodi abil sisestasin juhuslikult käsu make help, ja sain nimekirja kõigist or-toolsi koostamisvõimalustest, sealhulgas võimalusest koguda wheel pakett. See käsk on make python_package, kui miski jääb arusaamatuks (kordan seda veel kord lõpus). Nii et, kas on aeg kokku panna ja käivitada?

or-tools, SCIP ja GLPK paigaldamine Python 3.7 virtuaalkeskkonnas Linuxis

Otsime probleemi

Or-toolsi ehitamise etapis ei tööta mitte miski, ta kurdab halva GLPK raamatukogu üle.

or-tools, SCIP ja GLPK paigaldamine Python 3.7 virtuaalkeskkonnas Linuxis

SCIP'i kogumine dokumentatsioonis toodud parameetritega läheb edukalt läbi, kuid or-tools keeldub ikkagi importimise hetkel töötamast.

or-tools, SCIP ja GLPK paigaldamine Python 3.7 virtuaalkeskkonnas Linuxis

Omaette lahendust nendele probleemidele ma ei leidnud, seega suundusin GitHubi arendajate poole, et küsida, miks nende juhiste järgimine annab vigu kusagil nende koodis.

or-tools, SCIP ja GLPK paigaldamine Python 3.7 virtuaalkeskkonnas Linuxis
Hmm, aitäh, selgituste eest.

Kuna ootasin vastust GitHubis, surfisin internetis, lootes leida midagi, mis mind aitaks. Ja, nagu imet, leidsin midagi. See oli blogi projekti tiimijuht, kes kirjutas, kuidas siduda GLPK or-tools'iga. Ja see meetod töötas lõpuks! Nüüd, kui koguda kõike ilma SCIP-ta, aga GLPK-ga, on see isegi töötav. Juba edasiminek.

Kuid or-toolsi tiimijuht ei soovitanud GLPK-d kasutada, öeldes, et tulemused on kehvad ja ikka on soov võita SCIP ja sundida seda tööle. Naaber post blogis tuli mõte, et Google'i pakett töötab konkreetsete versioonidega. Vaata muudatuste loendit ja näeme seal selget versiooni märget 6.0.0. Kuigi makefailis on märgitud versioon 6.0.2, proovime installida vanema versiooni ja voila!

Ja nüüd veel kord tööprotseduur.

Installeerimise protseduur

  1. Laadige alla SCIP arhiiv, veendudes, et siin on selgelt märgitud, et toetatakse seda versiooni, mille te allalaadite (minu juhul developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) ja lahti pakkida.
  2. Laadige alla GLPK (postituse ajal viimane versioon 4.65) ja lahti pakkida.
  3. Installige SCIP käsuga
    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0
    
  4. Installige GLPK käsuga:
    ./configure --prefix= --with-pic --enable-shared
    make
    make install
    
  5. Lae OR-Tools GItHubist
    git clone https://github.com/google/or-tools
  6. Paigaldage OR-Tools käskudega:
    make third_party
    make python_package
    

    Kui viimane käsk ei toimi, installige wheel käsuga:

    pip install wheel
  7. Aktiveerige virtuaalne keskkond, minge Python paketi kausta ja installige see sealt.

    Kui soovite installida mitte virtuaalsesse keskkonda, vaid kogu süsteemi jaoks, siis asendage:

    make python_package

    käivitage käsk:

    make python
    

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster