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

Vendosa të marr pjesë në garë dhe kishte nevojë për të përdorur paketa për të zgjidhur problemet e 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 shprehin mbështetje për disa paketa të jashtme, duke përfshirë Gurobi dhe CPLEX. Megjithatë, ne nuk jemi të pasur dhe do të përdorim SCIP dhe GLPK falas (nga një zhvillues vendas, për mendimin time). Për habinë time, nuk gjetëm asnjë udhëzues se si ta bëjmë këtë mrekulli të funksionojë në një ambient virtual të Python-it, në hapësirat tona dhe ato anglishtfolëse në internet dhe duhej të merremi pak me këtë. Për ata që janë shumë të nxituar, lexoni menjëherë këtu, të tjerët i propozoj të njihemi me grafomani të dyshimtë të cilën shkruaj për përpjekjet e mia për të instaluar softin e Google. Po, harrova të them se gjithçka u instalua në Manjaro Linux.

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

Hapat e parë

Të tre paketat ekzistojnë në depozitën e Python-it, prandaj i instalojmë ato me pip.

Çdo njëri prej tyre ka ndërfaqen e vet, dhe or-tools u zgjodh pikërisht për të provuar paketa të ndryshme, pa pasur nevojë për të riparë programin në mënyrë të konsiderueshme, prandaj detyra është që or-tools të lidhë këta zgjidhës dhe të mundësojë që ata të kompaktësohen. Dhe çfarë mendoni? Or-tools i instaluar me pip nuk sheh zgjidhësit e instaluar më pip, dhe ata nuk e shohin atë (kush do ta kishte menduar). Kështu që, duhet të shohim se çfarë shkruhet në dokumentacionin.
Dokumentet thonë se duhet të ndërtojmë nga burimi, për të lidhur or-tools me paketat e jashtme. Provojmë të ndërtojmë, por nuk del asgjë, sepse zgjidhësit e instaluar me pip nuk janë të dukshëm.
Prandaj, mënyrat më të thjeshta për të instaluar të gjitha paketat me pip nuk funksionojnë, sepse or-tools nuk tërheq zgjidhësit, zgjidhësit nuk instalojnë bibliotekat siç do të dëshironin or-tools, të gjithë thyejnë gabimet në ty, të quajnë të paditur dhe të qeshin në çdo mënyrë.

Më pas në dokumentet thonë se duhet të ndërtojmë zgjidhësit nga burimi, pasuar nga ndërtimi i or-tools nga burimi. Thënë dhe bërë! Instalova SCIP, instalova GLPK, por u paraqit një pyetje që nuk ishte përshkruar në dokumentacion si ta vendos or-tools në një ambient virtual.

E vetëmi komandë e shkruar në dokumente, make python, instalon paketën globalisht në sistem (e habitshme, apo jo?).

Megjithatë, pata fat: gjatë kërkimit inxhinieror me metodën e majmunëve të pafund, rastësisht shkrova komandën make help, dhe më dha një listë të të gjitha opsioneve të ndërtimit për or-tools, në mesin e të cilave ishte mundësia për të ndërtuar paketën wheel. Kjo është komandë make python_package, për të qenë i qartë (do ta përsëris edhe një herë në fund). Pra, çfarë, është koha për të ndërtuar dhe ekzekutuar?

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

Të gjejmë problemin

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

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

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

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

Nuk kam gjetur një zgjidhje vetë për këto probleme, prandaj u drejtuam në GitHub për të pyetur zhvilluesit pse instalimi sipas udhëzimeve të tyre jep gabime diku brenda kodit të tyre.

Instalimi i or-tools me SCIP dhe GLPK në një ambient virtual Python 3.7 në Linux
Hmmm, faleminderit për sqarimet

Ndërsa prisja një përgjigje në GitHub, po kërkoja në internet, me shpresën të gjej diçka që mund të më ndihmojë. Dhe siç nuk është e habitshme, e gjeta. Ishte blog team lideri i projektit, ku ai shkruante se si të lidhte GLPK me or-tools. Dhe kjo metodë në fund të fundit funksionoi! Tani, nëse ndërtojmë gjithçka pa SCIP, por me GLPK, atëherë me këtë është e mundur të punojmë. Ka progres.

Megjithatë, lideri i ekipit të or-tools nuk e këshilloi përdorimin e GLPK, duke thënë se rezultatet janë jo të mira, dhe gjithashtu dëshiroj të fitoj mbi SCIP dhe ta bëj atë të funksionojë. Një informacion në një postim blog më shtyu të mendoj se paketa e Google funksionon me versione specifike. Le të shohim listën e ndryshimeve të lëshimeve dhe shohim një praninë të qartë të versionit 6.0.0. Pavarësisht se në makefile është e shënuar versioni 6.0.2, provon të instalohet një version më të vjetër dhe voilà!

Tani përsëri, renditja e veprimeve që funksionojnë.

Renditja e instalimit

  1. Shkarkoni arkivën SCIP, duke u siguruar që këtu është shënuar qartë mbështetje për atë version që po e shkarkoni (në rastin tim developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) dhe shfrytëzoni.
  2. Shkarkoni GLPK (në momentin e postimit versioni i fundit është 4.65) dhe shfrytëzoni.
  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 komanda e fundit nuk funksionon, instaloni wheel me komandën:

    pip install wheel
  7. Aktivizoni mjedisin virtual, kaloni në dosjen me paketën Python dhe instaloni nga atje.

    Nëse duhet të instaloni jo në një mjedis virtual, por globalisht për të gjithë sistemin, në vend të:

    make python_package

    ekzekutoni komandën:

    make python
    

Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster