or-toolsi, SCIP ja GLPK installimine Python 3.7 virtuaalsesse keskkonda Linuxis

Otsustasin osaleda võistlusel ja selle jaoks oli mul vaja kasutada optimeerimisülesannete lahendamiseks mõeldud pakette. Valisin Google'i tööriista or-tools, mis on liides erinevatele lahenditele (või resolveritele?). See sisaldab mitmeid optimeerimistööriistu, kuid loomine väidab, et toetatakse ka mitmeid kolmandate osapoolte pakette, sealhulgas kommertspakette Gurobi ja CPLEX. Kuid me pole rikkad inimesed ja seega kasutame tasuta SCIP-i ja GLPK-d (muide, kodumaise arendaja poolt). Üllatuseks ei leidnud ma ühtegi juhendit selle suurepärase töö korraldamiseks Python'i virtuaalses keskkonnas, nii meie kui ka ingliskeelses internetis ning pidin natuke vaeva nägema. Neile, kes kiirustavad, lugege kohe siit, ülejäänutele soovitan tutvuda minu kaheldava kvaliteediga joonistamisega, mis kirjeldab Google'i tarkvara installimise peripetiaid. Jah, unustasin kohe öelda, et kõik installiti Manjaro Linuxis.

or-toolsi, SCIP ja GLPK installimine Python 3.7 virtuaalsesse keskkonda Linuxis

Esimesed sammud

Kõik kolm paketti eksisteerivad Python'i hoidlas, seega installime need pip'i kaudu.

Igal neist on oma liides, ja or-tools valiti just selleks, et proovida erinevaid pakette ilma oluliste programmistike ümberkirjutamiseta, seega ülesanne on or-tools'i juurutamine nende lahendite jaoks ja nende käitamine enda kaudu. Ja mis te arvate? Pip'i kaudu installitud or-tools ei näe pip'i kaudu installitud lahendeid ja need ei näe teda (kuidas see võiks olla). Seega tuleb siiski vaadata, mida kirjutatakse dokumentatsioon.
Dokumentatsioonis öeldakse, et tuleb koguda allikatest, et or-tools saaks kolmandate osapoolte pakette kasutada. Proovime ehitada, ja midagi ei õnnestu, sest pip'i kaudu installitud lahendeid ei ole näha.
Seega ei toimi kõige lihtsamad viisid kõigi pakettide installimiseks pip'i kaudu, kuna or-tools ei tõmba lahendeid, lahendajad ei paigalda raamatukogusid nii, nagu or-tools soovib, kõik viskavad sulle vigu, nimetavad sind idioodiks ja naeravad igati.

Edasi dokumentatsioonis öeldakse, et lahendajad tuleb koostada allikatest, seejärel koostada or-tools samuti allikatest. Öeldud-tehtud! Installisin SCIP-i, installisin GLPK-d, kuid tekkis küsimus, mida dokumentatsioonis ei kirjeldatud, kuidas installida or-tools'i virtuaalsesse keskkonda.

Ainus dokumentides kirjas olev käsk make python paigaldab paketi süsteemi globaalselt (üllatav, jah?).

Kuid mul vedas: inseneriteadmiste otsimise käigus lõputute ahvide meetodil sisestasin kogemata käsu make help, ja sain vastuseks loetelu kõikidest or-tools kogumise variantidest, mille seas oli võimalus koguda wheel pakett. See on käsk make python_package, muide (ma kordaan seda veel kord lõpus). Noh, kas on aeg koguda ja käivitada?

or-toolsi, SCIP ja GLPK installimine Python 3.7 virtuaalsesse keskkonda Linuxis

Otsime probleemi

Kogumise etapis or-tools ei tööta midagi, see kaebab halbade GLPK teekide üle.

or-toolsi, SCIP ja GLPK installimine Python 3.7 virtuaalsesse keskkonda Linuxis

Kogumine SCIP'iga dokumentatsioonist saadud parameetritega läheb edukalt läbi, kuid or-tools keeldub ikkagi töötamast impordi hetkel.

or-toolsi, SCIP ja GLPK installimine Python 3.7 virtuaalsesse keskkonda Linuxis

Ma ei leidnud nende probleemide jaoks iseseisvaid lahendusi, seetõttu suundusin githubi arendajate poole, et küsida, miks nende juhiste kohaselt paigaldamine annab nende koodis vigu.

or-toolsi, SCIP ja GLPK installimine Python 3.7 virtuaalsesse keskkonda Linuxis
Hmm, aitäh selgituste eest

Kuna ootasime vastust githubis, surfasin internetis, lootes leida midagi, mis mind aitaks. Ja kuidas see poleks üllatav, leidsin selle. See oli blogi projekti tiimijuht, kus ta kirjutas, kuidas siduda GLPK or-tools'iga. Ja see meetod toimis lõpuks! Nüüd, kui koguda kõik ilma SCIP'ita, aga GLPK'ga, on sellega isegi võimalik töötada. Juba edusamm.

Kuid or-tools'i tiimijuht ei soovitanud GLPK kasutada, öeldes, et tulemused pole kuigi head, ja siiski tahaks võita SCIP'i ja sundida seda töötama. Kõrval postitus blogis andis mõtte, et googled'i paketid töötavad konkreetsete versioonidega. Vaadates väljaandeloetelu ja seal on selgelt välja toodud versioon 6.0.0. Kuigi mэйkfailis on näidatud versioon 6.0.2, proovime paigaldada vanema versiooni ja voilà!

Ja nüüd veel kord tööprotsessi järjestus.

Paigaldamise järjestus

  1. Laadige alla SCIP arhiv, veendudes, et siit toetatakse selgelt seda versiooni, mille te alla laadite (minu puhul developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) ja pakkige lahti.
  2. Laadige alla GLPK (postituse hetkel viimane versioon 4.65) ja pakkige lahti.
  3. Installeerige SCIP käsuga
    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0
    
  4. Installeerige GLPK käsuga:
    ./configure --prefix= --with-pic --enable-shared
    make
    make install
    
  5. Laadige alla OR-Tools githubist
    git clone https://github.com/google/or-tools
  6. Installeerige OR-Tools käskudega:
    make third_party
    make python_package
    

    Kui viimane käsk ei toimi, paigaldage wheel käsuga:

    pip install wheel
  7. aktiveerige virtuaalne keskkond, minge Python paketi kausta ja installige see sealt.

    Kui soovite paigaldada mitte virtuaalsesse keskkonda, vaid globaalselt kogu süsteemi jaoks, siis kasutage:

    make python_package

    täitke käsk:

    make python
    

Allikas: habr.com

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster