Installere or-tools med SCIP og GLPK i et virtuelt Python 3.7-miljø Linux

Jeg bestemte meg for å delta i konkurranse 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. her, остальным предлагаю познакомиться с сомнительного качества моей графоманией, описывающей перипетии установки гугловского софта. Да, забыл сразу сказать, что устанавливалось всё в Manjaro Linux.

Installere or-tools med SCIP og GLPK i et virtuelt Python 3.7-miljø 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 dokumentasjon.
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 dokker 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?

Installere or-tools med SCIP og GLPK i et virtuelt Python 3.7-miljø Linux

Leter etter et problem

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

Installere or-tools med SCIP og GLPK i et virtuelt Python 3.7-miljø Linux

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

Installere or-tools med SCIP og GLPK i et virtuelt Python 3.7-miljø Linux

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.

Installere or-tools med SCIP og GLPK i et virtuelt Python 3.7-miljø Linux
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 blogg 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. post i bloggen ga meg ideen om at Google-pakken fungerer med spesifikke versjoner. La oss se liste over endringer i utgivelsen 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

  1. Last ned SCIP-arkivet, og sørg for at her støtte for versjonen du laster ned er tydelig angitt (i mitt tilfelle developers.google.com/optimization/support/release_notes#support-for-scip-6.0.0) og pakke ut.
  2. Last ned GLPK (på tidspunktet for publisering er den nyeste versjonen 4.65) og pakk ut.
  3. Installer SCIP med kommandoen
    make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=<path>/scipoptsuite-6.0.0
    
  4. Installer GLPK med kommandoen:
    ./configure --prefix=<install_path> --with-pic --enable-shared
    make
    make install
    
  5. Last ned OR-verktøy fra GitHub
    git clone https://github.com/google/or-tools
  6. Installer OR-verktøy med kommandoer:
    make third_party
    make python_package
    

    Hvis den siste kommandoen ikke fungerer, installer hjulet med kommandoen:

    pip install wheel
  7. 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_package

    kjør kommandoen:

    make python
    

Kilde: www.habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster