Ma otsustasin osaleda 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. Ü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.

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. .
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 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?

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

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

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.

Hmm, tänan selgituse eest.
GitHubis vastust oodates surfasin internetis, lootes leida midagi, mis mind aitaks. Ja üllatuslikult ma selle leidsingi. See oligi... 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. blogis andis mulle idee, et Google'i pakett töötab teatud versioonidega. Vaatame 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
- Laadige alla SCIP-arhiiv, veendudes, et allalaaditava versiooni tugi on selgelt märgitud (minu puhul ) ja pakkige lahti.
- Laadige alla GLPK (postitamise ajal on uusim versioon 4.65) ja pakkige see lahti.
- Installige SCIP käsuga
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0 - Paigalda GLPK käsuga:
./configure --prefix=<install_path> --with-pic --enable-shared make make install - Laadige OR-tööriistad alla GitHubist
git clone https://github.com/google/or-tools - OR-tööriistade installimine käskudega:
make third_party make python_packageKui viimane käsk ei tööta, paigalda ratas käsuga:
pip install wheel - 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_packagekäivitage käsk:
make python
Allikas: www.habr.com
