Jag bestÀmde mig för att delta i och behövde anvÀnda paket för att lösa optimeringsproblem. Jag valde Googles verktyg or-tools, som fungerar som ett grÀnssnitt för olika lösgörare (eller solver?). Det innehÄller flera optimeringsverktyg, men skaparna hÀvdar att det stöder flera externa paket, inklusive de kommersiella Gurobi och CPLEX. Men vi Àr inga rika mÀnniskor, sÄ vi anvÀnder de gratis SCIP och GLPK (frÄn en inhemsk utvecklare, för övrigt). Till min förvÄning hittade jag ingen instruktion om hur man fÄr allt detta att fungera i en virtuell miljö för Python, varken pÄ vÄra eller engelsksprÄkiga internetplatser, sÄ jag fick lÀgga ner lite arbete. För dem som har brÄttom, lÀs gÀrna direkt , medan jag för övrigt erbjuder att bekanta mig med min tveksamma kvalitet av grafomani, som beskriver Àventyren kring installationen av Googles mjukvara. Ja, jag glömde nÀmna att allt installerades i Manjaro Linux.

Första stegen
Alla tre paketen finns i Python-repositoriet, sÄ vi installerar dem via pip.
Var och en av dem har sitt eget grÀnssnitt, och or-tools valdes just för att kunna pröva olika paket utan att behöva skriva om programmet i grunden, sÄ mÄlet Àr att or-tools ska koppla dessa lösgörare och lÄta dem köras genom sig. Och vad tror ni? Or-tools installerat via pip ser inte de lösgörare som installerats via pip, och de ser inte or-tools (vem skulle ha kunnat tro det?). SÄ, det verkar som vi mÄste kolla vad som stÄr i .
Dokumenten sÀger att man mÄste kompilera frÄn kÀllkod för att or-tools ska koppla externa paket. Vi försöker kompilera, och det gÄr inte, eftersom de lösgörare som installerats via pip inte syns.
DÀrmed fungerar de enklaste sÀtten att installera alla paket via pip inte, eftersom or-tools inte kopplar lösgörarna, lösgörarna installerar inte biblioteken sÄ som or-tools vill ha dem, allt ger dig felmeddelanden, kallar dig dum och skrattar pÄ olika sÀtt.
GÄ sedan till dÀr det stÄr att man mÄste kompilera lösgörarna frÄn kÀllkod, och sedan kompilera sjÀlva or-tools frÄn kÀllkod. Sagt och gjort! Jag installerade SCIP, installerade GLPK, men det uppstod en frÄga som inte beskrivs i dokumentationen: hur installerar man or-tools i en virtuell miljö.
Det enda kommandot som anges i dokumentationen, make python, installerar paketet globalt i systemet (förvÄnande, eller hur?).
Men jag hade tur: under en ingenjörsundersökning med metoden av oÀndliga apor tryckte jag av misstag in kommandot make help, och jag fick en lista över alla alternativ för att bygga or-tools, bland vilka det fanns en möjlighet att bygga wheel-paketet. Det kommandot Àr make python_package, för dem som undrar (jag upprepar det en gÄng till i slutet). SÄ, Àr det dags att bygga och köra?

LÄt oss leta efter problemet
Ingenting fungerar under byggprocessen av or-tools, det klagar pÄ dÄliga GLPK-bibliotek.

Byggandet med SCIP med parametrarna frÄn dokumentationen gÄr bra, men or-tools vÀgrar ÀndÄ att fungera vid import-stadiet.

Jag hittade inga lösningar pÄ dessa problem sjÀlv, sÄ jag gick till GitHub och frÄgade utvecklarna varför installationen enligt deras instruktioner ger fel nÄgonstans inne i deras kod.

Hmm, tack för förklaringen
Medan jag vÀntade pÄ svar pÄ GitHub, surfade jag pÄ internet i hopp om att hitta nÄgot som skulle hjÀlpa mig. Och som det visade sig, hittade jag det. Det var teamledaren för projektet, dÀr han skrev om hur man kopplar GLPK till or-tools. Och denna metod fungerade Àntligen! Nu, om man bygger allt utan SCIP men med GLPK, sÄ kan man faktiskt arbeta med detta. Redan framsteg.
Men teamledaren för or-tools avrÄdde frÄn att anvÀnda GLPK, och sa att resultaten Àr ganska dÄliga, och man vill ÀndÄ besegra SCIP och fÄ det att fungera. En nÀrstÄende blogg gav mig en tankestÀllare om att Googles paket fungerar med specifika versioner. LÄt oss kolla och vi ser dÀr ett tydligt versionsangivande 6.0.0. Trots att version 6.0.2 anges i makefilen, testar vi att installera en Àldre version och voilà !
Och nu, en gÄng till, en fungerande sekvens av ÄtgÀrder.
Installationssekvens
- Ladda ner SCIP-arkivet, se till att den version du laddar ner Àr tydligt angiven som stödd (i mitt fall ) och packa upp det.
- Ladda ner GLPK (vid tidpunkten för inlÀgget Àr den senaste versionen 4.65) och packa upp det.
- Installera SCIP med kommandot
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0 - Installera GLPK med kommandot:
./configure --prefix= --with-pic --enable-shared make make install - Ladda ner OR-Tools frÄn GitHub
git clone https://github.com/google/or-tools - Installera OR-Tools med kommandona:
make third_party make python_packageOm den senaste kommandot inte fungerar, installera wheel med kommandot:
pip install wheel - Aktivera den virtuella miljön, gÄ till mappen med Python-paketet och installera det dÀrifrÄn.
Om du vill installera inte i en virtuell miljö, utan globalt för hela systemet istÀllet för:
make python_packageutför kommandot:
make python
KĂ€lla: habr.com
