Rozhodl jsem se zúčastnit se a potřeboval jsem k tomu použít balíčky pro optimalizační úlohy. Vybral jsem si nástroj or-tools od Googlu, který představuje rozhraní pro různé řešitele. Obsahuje několik optimalizačních nástrojů, ale autoři tvrdí, že podporuje několik externích balíčků, včetně komerčních Gurobi a CPLEX. Nicméně, nejsme bohatí a použijeme bezplatné SCIP a GLPK (mimochodem od domácího vývojáře). K mému překvapení jsem nenašel žádné instrukce, jak to všechno rozběhnout ve virtuálním prostředí Pythonu, a musel jsem si s tím trochu pohrát. Pro ty, kdo spěchají, čtěte rovnou , ostatním doporučuji se seznámit s mojí pochybně kvalitní grafomanií, popisující peripetie instalace googlovského softwaru. Ano, zapomněl jsem hned říct, že se vše instalovalo v Manjaro Linuxu.

První kroky
Všechny tři balíčky existují v repozitáři Pythonu, takže je nainstalujeme přes pip.
Každý z nich má své vlastní rozhraní, a or-tools byl vybrán právě proto, abychom mohli vyzkoušet různé balíčky bez výrazného přepisování programu, takže úkolem je, aby or-tools připojil tyto řešitele a umožnil je spouštět skrze sebe. A co si myslíte? Nainstalovaný or-tools přes pip nevidí nainstalované řešitele přes pip a oni nevidí jeho (kdo by to mohl tušit). Tudíž musíme přece jen kouknout, co píší v .
Dokumentaci píší, že je potřeba sestavit ze zdrojových kódů, aby or-tools připojil externí balíčky. Zkoušíme sestavit, a nic nefunguje, protože nainstalované řešitele přes pip není vidět.
Samozřejmě, nejjednodušší způsoby instalace všech balíčků přes pip nefungují, protože or-tools nepřipojuje řešitele, řešitelé nenainstalují knihovny tak, jak by to or-tools chtěl, všichni házejí chyby, nazývají tě hloupým a všemožně se ti posmívají.
Dále v píšou, že je třeba sestavit řešitele ze zdrojových kódů, a potom sestavit samotný or-tools ze zdrojových kódů. Řečeno–uděláno! Nainstaloval jsem SCIP, nainstaloval jsem GLPK, ale byl zde nepopisovaný v dokumentaci problém, jak vůbec nainstalovat or-tools do virtuálního prostředí.
Jediný příkaz make python uvedený v dokumentech nainstaluje balíček globálně do systému (úžasné, že?).
Měl jsem však štěstí: během svého inženýrského pátrání metodou nekonečných opic jsem náhodou zadal příkaz make help a zobrazil se mi seznam všech variant kompilace or-tools, mezi nimiž byla možnost sestavit balíček wheel. Je to příkaz make python_package, pokud byste to potřebovali (ještě jednou ho zopakuji na konci). Tak co, je čas začít sestavovat a spouštět?

Hledáme problém
Na etapu sestavení or-tools nic nefunguje, hlásí špatné knihovny GLPK.

Sestavení přes SCIP podle parametrů v dokumentaci probíhá úspěšně, ale or-tools se přesto vzdorovitě odmítá spustit při importu.

Nenalezl jsem žádná řešení těchto problémů sám, a tak jsem se vydal na GitHub k vývojářům, abych se zeptal, proč instalace podle jejich pokynů vykazuje chyby někde v jejich kódu.

Hmm, děkuji za vysvětlení
Zatímco jsem čekal na odpověď na GitHubu, prozkoumával jsem internet, v naději, že najdu něco, co mi pomůže. A jak je to překvapivé, našel jsem to. Byl to team leader projektu, kde psal o tom, jak spojit GLPK s or-tools. A tento způsob konečně fungoval! Teď, pokud všechno sestavujeme bez SCIP, ale s GLPK, je to dokonce použitelné. Už nějaký pokrok.
Nicméně team leader or-tools nedoporučoval používat GLPK, říkal, že výsledky nejsou moc dobré, a chtělo by to přece porazit SCIP a donutit ho pracovat. Vedlejší v blogu mě přivedl na myšlenku, že google balíček funguje s konkrétními verzemi. Podívejme se na a vidíme tam jasné označení verze 6.0.0. I když je v makefile uvedena verze 6.0.2, zkoušíme nainstalovat starší verzi a voilà!
A teď ještě jednou pracovní sekvenci akcí.
Sekvence instalace
- Stáhněte archiv SCIP, ujistěte se, že je jasně uvedena podpora pro verzi, kterou stahujete (v mém případě ) a rozbalte.
- Stáhněte GLPK (v době psaní příspěvku poslední verze 4.65) a rozbalte.
- Nainstalujte SCIP příkazem
make GMP=false READLINE=false TPI=tny ZIMPL=false scipoptlib install INSTALLDIR=/scipoptsuite-6.0.0 - Nainstalujte GLPK příkazem:
./configure --prefix= --with-pic --enable-shared make make install - Stáhněte OR-Tools z GitHubu
git clone https://github.com/google/or-tools - Nainstalujte OR-Tools příkazy:
make third_party make python_packagePokud poslední příkaz nefunguje, nainstalujte wheel pomocí příkazu:
pip install wheel - Aktivujte virtuální prostředí, přejděte do složky s Python balíčkem a nainstalujte jej odsud.
Pokud chcete nainstalovat ne do virtuálního prostředí, ale globálně pro celý systém místo:
make python_packagevězte příkaz:
make python
Zdroj: habr.com
