Rozhraní pro řešiče úloh lineárního programování v Pythonu a Julii

Místo
Anotace

Lineární programování (LP) představuje jeden z nejdůležitějších nástrojů moderní aplikované matematiky, informatiky a inženýrství. Denně se využívá v oblastech jako je:

  • Optimalizace dopravy a logistiky (např. rozvrhování tras a dodávek),
  • Plánování výroby (minimalizace nákladů, efektivní využití zdrojů),
  • Finanční modelování a řízení portfolia,
  • Energetika (např. optimalizace sítí a využití obnovitelných zdrojů),
  • Strojové učení a data science (např. SVM, robustní regrese).

V reálných aplikacích však často čelíme velmi rozsáhlým úlohám se statisíci až miliony proměnných a omezení. Pro tyto případy klasické metody (např. Simplexová metoda nebo metoda vnitřního bodu) selhávají kvůli náročnosti na paměť i výpočetní čas.

Moderní přístup představují metody prvního řádu jako je Primal–Dual Hybrid Gradient (PDHG), které umožňují řešit i extrémně rozsáhlé úlohy. Zvláště efektivní jsou v kombinaci s akcelerací pomocí grafických procesorů (GPU).

Existující implementace řešiče lineárního programování metodou Primal–Dual Hybrid Gradient (PDLP) v knihovně TNL psaná v jazyce C++ nabízí vysoký výpočetní výkon a efektivitu, zejména na GPU. Její využití je však zatím omezené na technické uživatele schopné psát C++ kód a připravit vstupy ve vlastním formátu.

Cílem práce je umožnit použití vlastního řešiče založeného na metodě Primal–Dual Hybrid Gradient (PDHG) v jazyce C++ jako backend pro populární modelovací balíky jako CVXPY pro Python nebo Jump pro Julii. Solver bude orientován na řešení rozsáhlých úloh lineárního programování s pomocí akcelerace na GPU.

Cíle práce (konkrétní zadání se domluví individuálně se studentem):

  • Seznámit s typickými úlohami lineráního programování.
  • Seznámit se s nástroji pybind11 nebo CxxWrap.jl pro propojení C++ s  jazyky. Python a Julia.
  • Vytvořit v Pythonu (Julii) rozhraní, které umožní přístup k řešiči PDLP.
  • Integrovat řešič do CVXPY v Pythou nebo JuMP v Julii.
  • Ověřit funkčnost na příkladech a porovnat s jinými solvery (např. HiGHS, COPT).

Přínosy pro studenta:

  1. Získá znalosti o důležité, prakticky používané oblasti optimalizace.
  2. Získá zkušenosti s propojováním vyšších programovacích jazyků jako Python a Julia s C++.
  3. Bude pracovat na tématu, které má reálné využití ve vědě i průmyslu.

Zdroje:

  1. Bertsimas, Dimitris, and John N. Tsitsiklis. Introduction to linear optimization. Vol. 6. Belmont, MA: Athena scientific, 1997.
  2. CVXPY - https://www.cvxpy.org/
  3. JuMP - https://jump.dev/JuMP.jl/stable/
Téma si rezervujte v KOSu
Poslední změna