Instalimi i or-tools me SCIP dhe GLPK në një mjedis virtual Python 3.7 në Linux

Vendosi të marr pjesë në garë dhe kisha nevojë për paketat për zgjidhjen e problemeve të optimizimit. Zgjodha mjetin e Google or-tools, i cili ofron një ndërfaqe për zgjidhës të ndryshëm. Ai përmban disa mjete optimizimi, por krijuesit e tij deklarojnë se mbështesin disa paketa të jashtme, përfshirë ato komerciale Gurobi dhe CPLEX. Megjithatë, ne nuk jemi të pasur, kështu që do të përdorim SCIP dhe GLPK falas. Për habinë time, nuk gjeta asnjë udhëzues për të bërë që gjithë kjo të funksiononte në një mjedis virtual të Python-it, as në segmentin tonë, as në atë anglishtfolës të internetit, dhe duhej pak të punoja. Për ata që janë shumë të nxituar, lexoni menjëherë këtu, të tjerët i sugjeroj të njohin shkrimin tim të dyshimtë që përshkruan ngjarjet e instalimit të softuerit të Google. Po, harrova të them se gjithçka u instalua në Manjaro Linux.

Instalimi i or-tools me SCIP dhe GLPK në një mjedis virtual Python 3.7 në Linux

Hapat e parë

Të tre paketat ekzistojnë në repozitorin e Python-it, kështu që i instalojmë përmes pip.

Çdo njëri prej tyre ka ndërfaqen e tij, dhe or-tools u zgjodh saktësisht për të provuar disa paketa pa e shkruar programin në mënyrë të konsiderueshme, kështu që detyra është që or-tools të lidhet me këta zgjidhës dhe t'i japë mundësinë që të ekzekutohen përmes tij. Dhe çfarë mendoni? or-tools i instaluar përmes pip nuk i sheh zgjidhësit e instaluar përmes pip, dhe ata nuk e shohin atë (kush do të mendonte). Prandaj, duhet të shohim se çfarë shkruhet në dokumentacion.
Dokumentet thonë se duhet të ndërtohet nga burimi që or-tools të lidhet me paketat e jashtme. Provojmë të ndërtojmë, dhe nuk dalin gjëra sepse zgjidhësit e instaluar përmes pip nuk janë të dukshëm.
Përkatësisht, mënyrat më të thjeshta për të instaluar të gjitha paketat përmes pip nuk funksionojnë, sepse or-tools nuk merr zgjidhësit, zgjidhësit nuk instalojnë bibliotekat ashtu siç kërkon or-tools, të gjithë hedhin gabime, të quajnë injorant dhe e tallin.

Më pas në dokumenti thotë se duhet ndërtuar zgjidhësit nga burimi dhe pastaj ndërtuar or-tools nga burimi. E thënë e bërë! Instalova SCIP, instalova GLPK, por doli një pyetje e pa përshkruar në dokumentacion se si të vendos or-tools në një mjedis virtual.

E vetmja e shkruar në dokumente, komanda make python instalon paketën globalisht në sistem (e çuditshme, apo jo?).

Megjithatë, pata fat: gjatë kërkimeve inxhinierike me metodën e majmunëve të pafund, rastësisht nisa komandën make help, dhe më u shfaq një listë e të gjitha opsioneve të ndërtimit të or-tools, përfshirë një mundësi për të ndërtuar paketën wheel. Kjo është komanda make python_package, nëse nuk e dinit (do ta përsëris sërish në fund). Pra, kështu që, ka ardhur koha për të ndërtuar dhe ekzekutuar?

Instalimi i or-tools me SCIP dhe GLPK në një mjedis virtual Python 3.7 në Linux

Po kërkojmë problemin

Nuk funksionon asgjë në fazën e ndërtimit të or-tools, ai ankohet për biblioteka të këqija GLPK.

Instalimi i or-tools me SCIP dhe GLPK në një mjedis virtual Python 3.7 në Linux

Ndërtimi me SCIP sipas parametreve nga dokumentacioni kalon me sukses, por or-tools ende refuzon të punojë në momentin e importimit.

Instalimi i or-tools me SCIP dhe GLPK në një mjedis virtual Python 3.7 në Linux

Nuk gjeti ndonjë zgjidhje për këto probleme vetë, prandaj shkova në GitHub te zhvilluesit për të pyetur pse instalimi sipas udhëzimeve të tyre jep gabime diku brenda kodit të tyre.

Instalimi i or-tools me SCIP dhe GLPK në një mjedis virtual Python 3.7 në Linux
Hmm, faleminderit për shpjegimet

Ndërsa prisja përgjigje në GitHub, po kërkoja në Internet, shpresoj për të gjetur diçka që mund të më ndihmojë. Dhe siç nuk është e çuditshme, e gjeta. Kjo ishte blog nga lideri i projektit, ku ai shkruante se si të lidhej GLPK me or-tools. Dhe ky mënyrë përfundimisht funksionoi! Tani, nëse ndërtojmë gjithçka pa SCIP, por me GLPK, atëherë me këtë madje mund të punojmë. Një përparim tashmë.

Megjithatë, lideri i ekipit or-tools nuk e rekomandoi përdorimin e GLPK, duke thënë se rezultatet nuk ishin të shkëlqyera, dhe gjithashtu dëshirojmë të mposhtim SCIP dhe ta bëjmë të funksionojë. Një fqinj post në blog më nxori në mendje se paketa e Google funksionon me versione të caktuara. Shikojmë listën e ndryshimeve të lëshimeve dhe shohim një tregues të qartë të versionit 6.0.0. Edhe pse në makefile është e shënuar versioni 6.0.2, provoni të instaloni një version më të vjetër dhe voilà!

Dhe tani një herë tjetër një sekuencë e punës.

Sekuenca e instalimit

  1. Shkarkoni arkivin SCIP, duke u siguruar që këtu është e shënuar qartë mbështetje për atë version që po shkarkoni (në rastin tim developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) dhe shpërndajeni.
  2. Shkarkoni GLPK (në momentin e postit versioni i fundit ishte 4.65) dhe shpërndajeni.
  3. Instaloni SCIP me komandën
    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0
    
  4. Instaloni GLPK me komandën:
    ./configure --prefix= --with-pic --enable-shared
    make
    make install
    
  5. Shkarkoni OR-Tools nga GitHub
    git clone https://github.com/google/or-tools
  6. Instaloni OR-Tools me komandat:
    make third_party
    make python_package
    

    Nëse komandat e fundit nuk funksionojnë, instaloni wheel me komandën:

    pip install wheel
  7. Aktivizoni mjedisin virtual, shkoni në dosjen me paketën Python dhe instaloni prej aty.

    Nëse dëshironi të instaloni gjithashtu globalisht për të gjithë sistemin, në vend të:

    make python_package

    ekzekuto komandën:

    make python
    

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster