Otsustasin osaleda 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 , teistele soovitan tutvuda minu kaheldava kvaliteediga grafoomaania kirjeldustega Google'i tarkvara paigaldamise seiklustest. Jah, unustasin kohe öelda, et kõik paigaldati Manjaro 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 ö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 ö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?

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

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

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.

Hmm, aitäh, selgituste eest.
Kuna ootasin vastust GitHubis, surfisin internetis, lootes leida midagi, mis mind aitaks. Ja, nagu imet, leidsin midagi. See oli 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 blogis tuli mõte, et Google'i pakett töötab konkreetsete versioonidega. Vaata 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
- Laadige alla SCIP arhiiv, veendudes, et on selgelt märgitud, et toetatakse seda versiooni, mille te allalaadite (minu juhul ) ja lahti pakkida.
- Laadige alla GLPK (postituse ajal viimane versioon 4.65) ja lahti pakkida.
- Installige SCIP käsuga
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0 - Installige GLPK käsuga:
./configure --prefix= --with-pic --enable-shared make make install - Lae OR-Tools GItHubist
git clone https://github.com/google/or-tools - Paigaldage OR-Tools käskudega:
make third_party make python_packageKui viimane käsk ei toimi, installige wheel käsuga:
pip install wheel - 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_packagekäivitage käsk:
make python
Allikas: habr.com
