Es nolēmu piedalīties un man vajadzēja izmantot pakotnes optimizācijas uzdevumu risināšanai. Izvēlējos Google rīku or-tools, kas ir saskarne dažādiem risinātājiem. Tajā ir vairākas optimizācijas instrumenti, taču radītāji apgalvo, ka tas atbalsta arī dažas ārējās pakotnes, tostarp komerciālās Gurobi un CPLEX. Tomēr mēs neesam bagāti, tādēļ izmantosim bezmaksas SCIP un GLPK (starpcitu, no vietējā izstrādātāja). Manam pārsteigumam es neatradu nevienu instrukciju par to, kā visu šo brīnišķo lietu darbināt Python virtuālajā vidē ne mūsu, ne angliski runājošajās interneta telpās, un nācās nedaudz piepūlēties. Tiem, kas ļoti steidzas, lasiet tūlīt , pārējiem piedāvāju iepazīties ar manas ne pārāk augstās kvalitātes grafomanijas aprakstu par Google programmatūras uzstādīšanas peripetijām. Jā, aizmirsu uzreiz pieminēt, ka viss tika instalēts Manjaro Linux.

Pirmie soļi
Visas trīs pakotnes pastāv Python repozitorijā, tādēļ instalēsim tās caur pip.
Katram no tiem ir savs saskarsmes veids, un or-tools tika izvēlēts tieši tādēļ, lai izmēģinātu dažādas pakotnes bez ievērojamas programmas pārprogrammēšanas, tāpēc uzdevums ir panākt, lai or-tools piesaistītu šos risinātājus un ļautu tos palaist caur sevi. Un ko jūs domājat? Pip caur or-tools instalētais risinātājs neredz pip caur instalētos risinātājus, un tie neredz viņu (kas gan varētu to padomāt). Tātad, ir jāskatās, ko raksta .
Dokumentācijā raksta, ka nepieciešams būvēt no avota koda, lai or-tools varētu piesaistīt ārējās pakotnes. Mēģinām būvēt, un nekas nesanāk, jo pip caur instalētie risinātāji nav redzami.
Attiecīgi, visvienkāršākie veidi, kā instalēt visas pakotnes caur pip, nedarbojas, jo or-tools nepiesaista risinātājus, risinātāji neinstalē bibliotēkas tā, kā to vēlas or-tools, visi bagātīgi noraksta tevi ar kļūdām, saucot par muļķi un visādi izsmiekli.
Tālāk dokumentācijā Viņi saka, ka jāizveido risinātāji no avota kodiem, tad no avota kodiem jāsavāc pats or-tools. Teikts - izdarīts! Uzstādīju SCIP, uzstādīju GLPK, bet radās neaprakstīts dokumentācijā jautājums, kā uzstādīt or-tools virtuālajā vidē.
Vienīgā komandā, kas norādīta dokumentos, make python instalē pakotni globāli sistēmā (neticami, vai ne?).
Tomēr man paveicās: meklējot risinājumus ar bezgalīgo pērtiķu metodi, es nejauši ievadīju komandu make help, un man tika parādīts visu or-tools salikšanas variantu saraksts, tostarp iespēja izveidot wheel pakotni. Tas ir make python_package, ja kaut kas (es to atkārtošu vēlreiz beigās). Nu tad, vai ir pienācis laiks salikt un palaist?

Meklējam problēmu
Nekas nedarbojas or-tools salikšanas posmā, tas sūdzas par sliktām GLPK bibliotēkām.

Salikšana ar SCIP saskaņā ar dokumentācijas parametriem norit veiksmīgi, bet or-tools joprojām atsakās darboties importēšanas brīdī.

Es neatradu risinājumus šīm problēmām pats, tāpēc devos uz GitHub pie izstrādātājiem, jautājot, kāpēc instalācija pēc viņu norādījumiem rada kļūdas viņu kodā.

Hmmm, paldies par skaidrojumiem
Kamēr gaidīju atbildi uz GitHub, es klīdu pa internetu, cerot atrast kaut ko, kas man palīdzētu. Un kā tas nebūtu pārsteidzoši, es atradu. Tas bija projekta komandas vadītājs, kurš rakstīja par to, kā sasaistīt GLPK ar or-tools. Un šī metode beidzot nostrādāja! Tagad, ja saliek visu bez SCIP, bet ar GLPK, tad ar to pat var strādāt. Jau progress.
Tomēr or-tools komandas vadītājs neieteica izmantot GLPK, sakot, ka rezultāti nav īpaši labi, un tomēr gribas uzvarēt SCIP un likt tam darboties. Blakus blogs lika padomāt, ka Google pakotne strādā ar konkrētām versijām. Apskatām un redzam tur skaidru versijas 6.0.0 norādi. Neskatoties uz to, ka make failā norādīta versija 6.0.2, mēģinām instalēt vecāku versiju un voilà!
Un tagad vēlreiz darbību secība.
Instalēšanas secība
- Lejupielādējiet SCIP arhīvu, pārliecinoties, ka ir skaidri norādīta atbalstītā versija, kuru jūs lejupielādējat (manā gadījumā ) un izpakojiet.
- Lejupielādējiet GLPK (raksta laikā jaunākā versija 4.65) un izpakojiet.
- Instalējiet SCIP ar komandu
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0 - Instalējiet GLPK ar komandu:
./configure --prefix= --with-pic --enable-shared make make install - Lejupielādējiet OR-Tools no GitHub
git clone https://github.com/google/or-tools - Instalējiet OR-Tools ar komandām:
make third_party make python_packageJa, ja pēdējā komanda nedarbojas, uzstādiet wheel ar komandu:
pip install wheel - Aktivizējiet virtuālo vidi, pārejiet uz mapi ar Python pakotni un instalējiet to no turienes.
Ja nepieciešams instalēt ne virtuālajā vidē, bet globāli visai sistēmai, vietā:
make python_packageizpilda komandu:
make python
Avots: habr.com
