Jeg bestemte meg for å delta i og det var nødvendig å bruke pakker for å løse optimaliseringsproblemer. Jeg valgte Google-verktøyet eller -verktøyene, som er et grensesnitt for forskjellige løsere (eller løsere? løsere?). Det inneholder flere optimaliseringsverktøy, men skaperne erklærer støtte for flere eksterne pakker, inkludert kommersielle Gurobi og CPLEX. Vi er imidlertid ikke rike mennesker, og vi vil bruke gratis SCIP og GLPK (fra en innenlandsk utvikler, forresten). Til min overraskelse fant jeg ikke en eneste instruksjon om hvordan jeg skulle få all denne prakten til å fungere i et virtuelt python-miljø, i den enorme størrelsen på både vårt og det engelsktalende segmentet av Internett, og jeg måtte tukle litt. For de som har det travelt, les med en gang. , остальным предлагаю познакомиться с сомнительного качества моей графоманией, описывающей перипетии установки гугловского софта. Да, забыл сразу сказать, что устанавливалось всё в Manjaro Linux.

Første trinn
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 å teste ut forskjellige pakker uten å omskrive programmet vesentlig, så oppgaven er at or-tools skal koble disse løsningene og la dem kjøre gjennom seg selv. Og hva synes du? Installert via pip ser ikke or-tools løsningene installert via pip, og de ser det ikke (hvem skulle trodd det). Så vi må fortsatt se på hva de skriver i .
Dokumentasjonen sier at du må bygge fra kildekode slik at or-tools kan hente eksterne pakker. Vi prøver å bygge, men ingenting fungerer, fordi løsningene som er installert via pip ikke er synlige.
Følgelig fungerer ikke de enkleste måtene å installere alle pakker via pip, fordi or-tools ikke henter frem løsere, løsere installerer ikke biblioteker slik or-tools ønsker, alle kaster feilmeldinger på deg, kaller deg dum og ler av deg på alle mulige måter.
Neste inn De skriver at du må kompilere løsningsprogrammene fra kildekoden, og deretter kompilere or-tools selv fra kildekoden. Sånn er det ikke sagt! Jeg installerte SCIP, installerte GLPK, men et spørsmål dukket opp som ikke var beskrevet i dokumentasjonen: hvordan installere or-tools i et virtuelt miljø.
Den eneste kommandoen som er oppført i dokumentasjonen er make python, som installerer pakken globalt i systemet (overraskende, ikke sant?).
Jeg var imidlertid heldig: i prosessen med å utføre ingeniørsøk ved hjelp av metoden til infinite monkeys, skrev jeg ved et uhell kommandoen make help, og den ga meg en liste over alle alternativene for å bygge or-tools, blant annet muligheten til å bygge hjulpakken. Dette er forresten kommandoen make python_package (jeg gjentar den på slutten). Så, er det på tide å bygge og kjøre?

Leter etter et problem
Ingenting fungerer i byggefasen av or-tools, den klager over dårlige GLPK-biblioteker.

Byggingen med SCIP med parameterne fra dokumentasjonen er vellykket, men or-tools nekter fortsatt å fungere i importøyeblikket.

Jeg klarte ikke å finne en løsning på disse problemene på egenhånd, så jeg gikk til utviklernes GitHub for å spørre hvorfor installasjon i henhold til instruksjonene deres produserer feil et sted i koden deres.

Hmm, takk for avklaringen.
Mens jeg ventet på svar på GitHub, surfet jeg på internett i håp om å finne noe som kunne hjelpe meg. Og overraskende nok fant jeg det. Det var prosjektleder, der han skrev om hvordan man kobler GLPK med OR-verktøy. Og denne metoden fungerte endelig! Hvis du samler alt uten SCIP, men med GLPK, kan du til og med jobbe med det. Allerede fremgang.
Teamlederen for or-tools-teamet anbefalte imidlertid ikke bruk av GLPK, og sa at resultatene det viser ikke er særlig gode, og at de fortsatt ønsker å bekjempe SCIP og få det til å fungere. i bloggen ga meg ideen om at Google-pakken fungerer med spesifikke versjoner. La oss se og vi ser der en tydelig indikasjon på versjon 6.0.0. Til tross for at makefilen indikerer versjon 6.0.2, prøver vi å installere en eldre versjon, og vips!
Og nå nok en gang den fungerende handlingssekvensen.
Installasjonssekvens
- Last ned SCIP-arkivet, og sørg for at støtte for versjonen du laster ned er tydelig angitt (i mitt tilfelle ) og pakke ut.
- Last ned GLPK (på tidspunktet for publisering er den nyeste versjonen 4.65) og pakk ut.
- Installer SCIP med kommandoen
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0 - Installer GLPK med kommandoen:
./configure --prefix=<install_path> --with-pic --enable-shared make make install - Last ned OR-verktøy fra GitHub
git clone https://github.com/google/or-tools - Installer OR-verktøy med kommandoer:
make third_party make python_packageHvis den siste kommandoen ikke fungerer, installer hjulet med kommandoen:
pip install wheel - Aktiver det virtuelle miljøet, gå til mappen med Python-pakken og installer den derfra.
Hvis du ikke trenger å installere i et virtuelt miljø, men globalt for hele systemet i stedet for:
make python_packagekjør kommandoen:
make python
Kilde: www.habr.com
