or-tools telepítése SCIP és GLPK használatával egy Python 3.7 virtuális környezetbe Linuxon

Úgy döntöttem, hogy részt veszek a versenyen és ehhez optimalizáló feladatok megoldásához szükséges csomagokat kellett használnom. A Google or-tools eszközét választottam, amely egy interfészt képvisel különböző solver-ekhez. Számos optimalizáló eszközt tartalmaz, de a készítők több külső csomag támogatását ígérik, köztük a kereskedelmi Gurobi és CPLEX programokat is. Azonban mi nem vagyunk gazdag emberek, így a ingyenes SCIP és GLPK használatára fogunk támaszkodni (egyébként hazai fejlesztés). Meglepetésemre nem találtam egyetlen útmutatót sem arról, hogyan lehet ezt a csodát működésbe hozni Python virtuális környezetben, sem a hazai, sem az angol nyelvű interneten, és kicsit rá kellett fektetnem az időt. Akik sietnek, olvassák el azonnal itt, a többieknek javaslom, hogy ismerkedjenek meg a kérdéses minőségű grafomániámmal, amely a Google szoftver telepítésének kalandjait írja le. Igen, elfelejtettem azonnal mondani, hogy mindezt Manjaro Linux alatt telepítettem.

or-tools telepítése SCIP és GLPK használatával egy Python 3.7 virtuális környezetbe Linuxon

Első lépések

Mindhárom csomag megtalálható a Python tárolójában, így pip-en keresztül telepítjük.

Mindegyiknek saját interfésze van, és az or-tools-t kifejezetten azért választottam, hogy különböző csomagokat próbálhassak anélkül, hogy jelentős újraírásokra lenne szükség. Így tehát feladat az, hogy az or-tools összekapcsolja ezeket a solvere-ket, és lehetővé tegye azokat. És mit gondoltok? A pip-en keresztül telepített or-tools nem látja a pip-en keresztül telepített solver-eket, és azok sem látják őt (ki gondolta volna). Tehát mindenképpen érdemes megnézni, mit írnak a dokumentáció.
dokumentációkban azt írják, hogy a külső csomagok integrálásához forrásból kell építeni. Próbáltam összerakni, de semmi nem működik, mert a pip-en keresztül telepített solver-ek nem látszódnak.
Ezért a legegyszerűbb módja a csomagok pip-en keresztül történő telepítésének nem működik, mert az or-tools nem húzza be a solvere-ket, a solver-ek nem telepítik a könyvtárakat, ahogy az or-tools szeretné, mindenki hibákkal bombáz, megnevez téged butának, és mindenféleképpen gúnyolódik.

Tovább a dokumentációkban azt írják, hogy a solver-eket forrásból kell telepíteni, majd a forrásból az or-tools-t. Lássuk, mit tehetek! Telepítettem a SCIP-ot, telepítettem a GLPK-t, de felmerült egy kérdés, ami a dokumentációban nem szerepel: hogyan is telepítsem az or-tools-t a virtuális környezetbe?

A dokumentumban szereplő egyetlen make python parancs globálisan telepíti a csomagot a rendszerbe (meglepő, igaz?).

De szerencsém volt: a mérnöki kutatásom során, a végtelen majmok módszerével, véletlenül beírtam a make help parancsot, és kaptam egy listát az or-tools összes építési lehetőségéről, köztük volt egy lehetőség a wheel csomag összegyűjtésére. Ez a make python_package parancs, ha érdekel (ezért még egyszer megismétlem a végén). Na, szóval, itt az idő, hogy összeüssen és elindítsuk?

or-tools telepítése SCIP és GLPK használatával egy Python 3.7 virtuális környezetbe Linuxon

Keressük a problémát

Semmi sem működik az or-tools építési szakaszában, rossz GLPK könyvtárakra panaszkodik.

or-tools telepítése SCIP és GLPK használatával egy Python 3.7 virtuális környezetbe Linuxon

A SCIP összeszerelése a dokumentáció paramétereivel sikeresen végbemegy, de az or-tools mégis visszautasítja a munkát az importálás pillanatában.

or-tools telepítése SCIP és GLPK használatával egy Python 3.7 virtuális környezetbe Linuxon

Nem találtam megoldást ezekre a problémákra, így a GitHubra mentem a fejlesztőkhöz, hogy megkérdezzem, miért ad hibákat a telepítés az ő utasításaik szerint, valahol a kódjuk belsejében.

or-tools telepítése SCIP és GLPK használatával egy Python 3.7 virtuális környezetbe Linuxon
Hmmm, köszönöm a magyarázatokat

Amíg vártam a választ a GitHubon, a neten böngésztem, hátha találok valamit, ami segíthet. És milyen meglepő, találtam is. Ez volt blogra a projekt csapatvezetője, aki arról írt, hogyan lehet összekapcsolni a GLPK-t az or-tools-szal. És ez a módszer végre működött! Most, ha mindent a SCIP nélkül, de a GLPK-val összegyűjtünk, akkor azzal már lehet dolgozni. Már előrelépés.

Az or-tools csapatvezetője azonban nem ajánlotta a GLPK használatát, azt mondta, hogy az eredmények nem valami jók, és végül szeretnénk legyőzni a SCIP-et és működésre bírni. A szomszédos bejegyzés blog rávilágított arra, hogy a Google csomag konkrét verziókkal működik. Nézzük meg a kiadások változásainak listáját és látjuk ott a 6.0.0 verzió egyértelmű megadását. Annak ellenére, hogy a Makefile-ban a 6.0.2 verzió szerepel, próbáljuk telepíteni a régebbi verziót, és voilà!

Most még egyszer az működő lépések sorrendje.

Az telepítési sorrend

  1. Töltsd le a SCIP archívumot, megbizonyosodva arról, hogy itt egyértelműen szerepel a támogatott verzió, amelyet le szeretnél tölteni (az én esetemben developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) és csomagold ki.
  2. Töltsd le a GLPK-t (a poszt időpontjában a legfrissebb verzió 4.65) és csomagold ki.
  3. Telepítsd a SCIP-et a következő paranccsal:
    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0
    
  4. Telepítsd a GLPK-t a következő paranccsal:
    . /configure --prefix= --with-pic --enable-shared
    make
    make install
    
  5. Töltsd le az OR-Tools-t a GitHubról
    git clone https://github.com/google/or-tools
  6. Telepítsd az OR-Tools-t a következő parancsokkal:
    make third_party
    make python_package
    

    Ha az utolsó parancs nem működik, telepítse a wheel parancsot:

    pip install wheel
  7. Aktiválja a virtuális környezetet, lépjen a Python csomag mappájába, és telepítse onnan.

    Ha nem virtuális környezetbe, hanem globálisan szeretné telepíteni az egész rendszer számára, a következőt használja:

    make python_package

    futtatnia a következő parancsot:

    make python
    

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster