Jeg bestemte meg for å delta i og jeg trengte å bruke pakker for å løse optimaliseringsoppgaver. Jeg valgte Googles verktøy or-tools, som fungerer som et grensesnitt for ulike løsningsmetoder. Det inneholder flere optimaliseringsverktøy, men utviklerne oppgir støtte for flere eksterne pakker, inkludert de kommersielle Gurobi og CPLEX. Men vi er ikke rike, så vi skal bruke de gratis alternativene SCIP og GLPK (fra en innfødt utvikler, forresten). Til min overraskelse fant jeg ingen instruksjoner om hvordan man skulle få alt dette til å fungere i et virtuelt Python-miljø på verken vårt eller det engelskspråklige internett. Jeg måtte derfor arbeide litt med det. For de som har det travelt, les med én gang , mens jeg for de andre tilbyr å bli kjent med min tvilsomme grafomani, som beskriver eventyrene ved installasjonen av Googles programvare. Ja, jeg glemte å si at alt ble installert i Manjaro Linux.

Første skritt
Alle tre pakkene finnes i Python-repositoriet, så vi installerer dem via pip.
Hver av dem har sitt eget grensesnitt, og or-tools ble valgt nettopp for å kunne prøve ut ulike pakker uten betydelig omskrivning av programmet. Derfor er oppgaven å få or-tools til å koble til disse løserne og la dem kjøre gjennom seg. Hva tror du? Or-tools installert via pip ser ikke de løserne som er installert via pip, og de ser ikke or-tools (hvem skulle trodd det). Dermed må vi sjekke hva som står i .
dokumentasjonen, som sier at man må bygge fra kildekoden for at or-tools skal koble til eksterne pakker. Vi prøver å bygge, men får ikke til noe, fordi de pip-installerte løserne ikke er synlige.
Dermed fungerer de enkleste installasjonsmetodene for alle pakkene via pip ikke, fordi or-tools ikke drar inn løserne, og løserne installerer ikke biblioteker på den måten or-tools ønsker, alle gir deg feil, kaller deg dum og ler så mye de kan.
Videre i står det at løserne må bygges fra kildekoden, deretter må man bygge or-tools fra kildekoden. Det er sagt, gjort! Jeg installerte SCIP, jeg installerte GLPK, men det oppsto et spørsmål som ikke er beskrevet i dokumentasjonen: hvordan installere or-tools i et virtuelt miljø.
Den eneste kommandoen som er dokumentert i dokumentasjonen, make python, installerer pakken globalt på systemet (overraskende, sant?).
Men jeg var heldig: i løpet av min ingeniørsøk med den metodiske tilnærmingen til de uendelige apekatter, skrev jeg tilfeldigvis inn kommandoen make help, og fikk opp en liste over alle alternativer for bygging av or-tools, inkludert muligheten til å bygge wheel-pakken. Det er kommandoen make python_package, bare så du vet (jeg skal gjenta den en gang til på slutten). Så, er det på tide å bygge og kjøre?

La oss se etter problemet
Ingenting fungerer på byggestadiet for or-tools, det klager over dårlige GLPK-biblioteker.

Bygging med SCIP med parametere fra dokumentasjonen går bra, men or-tools nekter fremdeles å fungere ved importeringen.

Jeg fant ikke egne løsninger på disse problemene, så jeg gikk til GitHub for å spørre utviklerne hvorfor installasjonen ifølge deres instruksjoner gir feil et sted inne i koden deres.

Hmm, takk for forklaringen
Mens jeg ventet på svar fra GitHub, lette jeg rundt på internett i håp om å finne noe som kunne hjelpe meg. Og det er ikke så overraskende, jeg fant noe. Det var teamlederen for prosjektet, hvor han skrev om hvordan man knytter GLPK til or-tools. Og denne metoden fungerte endelig! Nå, hvis man bygger alt uten SCIP, men med GLPK, så kan man faktisk jobbe med dette. Det er allerede fremgang.
Imidlertid frarådet teamlederen for or-tools å bruke GLPK, og sa at resultatene ikke er så imponerende, og det er fortsatt ønskelig å overvinne SCIP og få det til å fungere. Den nærliggende bloggen fikk meg til å tenke på at Googles pakke fungerer med spesifikke versjoner. La oss se på og ser der en klar angivelse av versjon 6.0.0. Til tross for at makefilen angir versjon 6.0.2, prøver vi å installere en eldre versjon og vips!
Og nå, en gang til, den fungerende sekvensen av handlinger.
Installasjonssekvensen
- Last ned SCIP-arkivet, og sørg for at den angir tydelig støtte for den versjonen du laster ned (i mitt tilfelle ) og pakk det ut.
- Last ned GLPK (på tidspunktet for denne posten var den nyeste versjonen 4.65) og pakk det ut.
- Installer SCIP med kommandoen
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0 - Installer GLPK med kommandoen:
./configure --prefix= --with-pic --enable-shared make make install - Last ned OR-Tools fra GitHub
git clone https://github.com/google/or-tools - Installer OR-Tools med kommandoene:
make third_party make python_packageHvis den siste kommandoen ikke fungerer, installer wheel med kommandoen:
pip install wheel - Aktiver det virtuelle miljøet, gå til mappen med Python-pakken og installer den derfra.
Hvis du trenger å installere globalt for hele systemet i stedet for:
make python_packageutför kommandot:
make python
Kilde: habr.com
