Ga meteen naar de inhoud
Nieuw: Data & AI Strategy-oefening.
metroplafond

Network flow: een krachtige tool om problemen te modelleren

1 november 2019
ALGORITMES

Network flow hoort bij de toolbox van de grafentheorie en wordt gebruikt om transportnetwerken, planning en resourcematching te modelleren. Met de huidige libraries lost één simpele method call de optimalisatie op. Het moeilijke deel is het probleem correct modelleren.

Van unieke paden naar bipartiete matching

Unieke (edge-disjuncte) paden vinden van knoop i naar j in een graaf doe je door elke edge capaciteit 1 te geven en maximum flow te draaien. Voor knoop-disjuncte paden dupliceer je elke knoop naar k en k' met capaciteit-1-edges ertussen.

Voor de matching tussen medewerkers en projecten: verbind de source met de medewerkers, de medewerkers met passende projecten (op basis van de vereiste skills) en de projecten met de sink. Zet alle edges op capaciteit 1. Maximum flow geeft de optimale matching.

Uitbreiden met reële beperkingen

Echte problemen hebben extra beperkingen: senioriteitsniveaus van medewerkers, moeilijkheidsgraden van projecten, budgetlimieten. We modelleerden dat met edge-capaciteiten gelijk aan de lonen, source-naar-medewerker-edges op basis van het aantal gelijktijdige projecten en project-naar-sink-edges begrensd op het projectbudget. Max-flow-min-cost draaien met networkx en de onverzadigde edges wegfilteren geeft toewijzingen die het budget respecteren.

- Armando

metroplafond
Zit je met optimalisatie-uitdagingen?

PRAAT MET ONS