Odlučio sam sudjelovati u i trebao mi je alat za rješavanje problema optimizacije. Odabrao sam Googleov alat or-tools, koji predstavlja sučelje za različite rješavače. Sadrži nekoliko alata za optimizaciju, ali stvaraoci navode podršku za nekoliko vanjskih paketa, uključujući komercijalne Gurobi i CPLEX. No, mi nismo bogati ljudi, pa ćemo koristiti besplatne SCIP i GLPK (inače domaći razvijatelj). Na moje iznenađenje, nisam našao nikakve upute o tome kako natjerati svu tu ljepotu da radi u virtualnom okruženju Pythona, ni u našem ni u engleskom segmentu interneta i morao sam se malo potruditi. Za one koji su jako nestrpljivi, čitajte odmah , ostalima predlažem da upoznaju moju grafomaniju loše kvalitete koja opisuje peripetije instalacije Googleovog softvera. Da, zaboravio sam odmah reći da se sve instaliralo na Manjaro Linuxu.

Prvi koraci
Sve tri paketa postoje u Python repozitoriju, pa ih instaliramo putem pip.
Svaki od njih ima svoje sučelje, a or-tools je odabran upravo da bi se mogli isprobati različiti paketi bez značajnijeg prepisivanja programa, tako da je zadatak natjerati or-tools da poveže te rješavače i omogući njihovo pokretanje. I što mislite? Instalirani or-tools preko pip-a ne vidi rješavače instalirane putem pip-a, a oni ne vide njega (tko bi to mogao pomisliti). To znači da treba pogledati što piše u .
Dokumentaciji piše da treba graditi iz izvora, kako bi or-tools povezao vanjske pakete. Pokušavamo sastaviti, i ništa ne ide, jer rješavači instalirani putem pip-a nisu vidljivi.
Prema tome, najjednostavniji načini instalacije svih paketa putem pip-a ne funkcioniraju, jer or-tools ne povlači rješavače, rješavači ne postavljaju biblioteke onako kako to želi or-tools, svi bacaju greške na vas, nazivaju vas glupim i ismijavaju vas.
Dalje u piše da treba skupiti rješavače iz izvora, a zatim iz izvora skupiti sam or-tools. Rečeno – učinjeno! Instalirao sam SCIP, instalirao sam GLPK, ali se postavlja pitanje koje nije opisano u dokumentaciji kako postaviti or-tools u virtualno okruženje.
Jedina upisana komanda make python instalira paket globalno u sistem (iznenađujuće, zar ne?).
Ipak, imao sam sreće: tokom istraživanja metodom beskrajnih majmuna, slučajno sam otkucao komandu make help, i izlistala mi je sve opcije kompilacije or-tools, među kojima se našla mogućnost izrade wheel paketa. To je komanda make python_package, ako što. Pa, je li došlo vreme za kompilaciju i pokretanje?

Tražimo problem
Ništa ne radi u fazi kompilacije or-tools, javlja grešku na lošim bibliotekama GLPK.

Kompilacija sa SCIP s parametrima iz dokumentacije prolazi uspešno, ali or-tools se i dalje odbija pokrenuti u trenutku uvoza.

Nisam pronašao rešenja za ove probleme sam, pa sam otišao na GitHub da pitam programere zašto instalacija prema njihovim uputstvima stvara greške negde unutar njihovog koda.

Hmm, hvala na objašnjenju
Dok sam čekao odgovor na GitHubu, pretraživao sam internet, nadajući se da ću pronaći nešto što će mi pomoći. I, kako to čudno zvučalo, pronašao sam. To je bio vođa projekta, gde je pisao o tome kako povezati GLPK sa or-tools. I ovaj način konačno je uspeo! Sada, ako sve kompajliramo bez SCIP, ali sa GLPK, onda se to čak može koristiti. Već je napredak.
Međutim, vođa tima or-tools nije savetovao korišćenje GLPK, govoreći da rezultati koje daje nisu sjajni, i želim ipak pobediti SCIP i naterati ga da radi. Susedni blog me je inspirisao na pomisao da Googleov paket radi sa određenim verzijama. Pogledajmo i vidimo tamo jasno označenu verziju 6.0.0. Iako je u makefile-u označena verzija 6.0.2, pokušavamo instalirati stariju verziju i voilà!
A sada ponovo radna sekvenca postupaka.
Sekvenca instalacije
- Preuzmite arhivu SCIP, osiguravajući da je jasno označena podrška za verziju koju preuzimate (u mom slučaju ) i raspakujte.
- Preuzmite GLPK (u trenutku pisanja, poslednja verzija 4.65) i raspakujte.
- Instalirajte SCIP komandom
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0 - Instalirajte GLPK komandom:
./configure --prefix= --with-pic --enable-shared make make install - Preuzmite OR-Tools sa GitHub-a
git clone https://github.com/google/or-tools - Instalirajte OR-Tools komandom:
make third_party make python_packageAko posljednja komanda ne radi, instalirajte wheel s komandom:
pip install wheel - Aktivirati virtualno okruženje, otići u mapu s Python paketom i instalirati ga od tamo.
Ako treba instalirati ne u virtualno okruženje, već globalno za cijeli sustav umjesto:
make python_packageizvršite naredbu:
make python
Izvor: habr.com
