Ken je het probleem dat je bepaalde keuzes maakt op basis van gevoel in plaats van gebaseerd op feiten? Maak je planningen uit de losse pols, is het moeilijk om een route probleem te tackelen of is het een lastige keuze welke size vrachtwagen je het beste kunt huren? Kortom, heb jij te maken met optimaliseringsvraagstukken? Lees dan deze blog.
Optimization tool in Alteryx
Tegenwoordig verandert het optimaliseren van processen steeds meer van een gevoelskwestie naar een feitenkwestie. De optimization tool van Alteryx kan het maken van beslissingen in een proces vereenvoudigen door middel van integer- of linear programming. In deze blog leg ik met behulp van een simpel voorbeeld de werking van deze optimization tool uit. Daarna worden de uitkomsten in Tableau gevisualiseerd.
Situatieschets
In dit voorbeeld geef ik eerst een korte situatieschets.
Stel je bent de eigenaar van een bedrijf dat koffieproducten verkoopt. Eens in de 2 weken heb je de beschikking over een vrachtwagen die je naar eigen wens kunt indelen. Je wilt deze vrachtwagen zo optimaal mogelijk inpakken om een zo maximaal mogelijke winst op je producten te maken. Wel heb je te maken met een aantal beperkingen. Zo mag je maar 40.000 euro aan personeelskosten maken, 60.000 euro aan verpakkingskosten en mag je niet het maximale gewicht van 10.000 kg overschrijden. Ook hebben de producten een beperkte voorraad. Je kan dus niet meer dan je voorraad in de vrachtwagen pakken. De vraag in dit voorbeeld is: Hoeveel verpakkingen van elk product moet ik in mijn vrachtwagen pakken om de winst te maximaliseren?
Hierboven zie je de Alteryx workflow die ik hiervoor heb gemaakt. Deze licht ik stap voor stap toe.
Stap 1
Ik ben begonnen met een kleine dataset waarin ik van alle producten een aantal meetwaardes heb. De winst is hetgeen je wilt maximaliseren de andere meetwaardes zijn nodig voor de restricties (beperkingen).
Stap 2
Selecteer de kolommen Product, Winst en Voorraad. Voorraad heb ik hernoemd naar ub (upper bound). Dit herkent Alteryx automatisch als de bovengrens.
Stap 3
Maak 2 nieuwe kolommen aan.
- De eerste geeft de ondergrens van elke variabele aan. Dit heb ik in dit geval 0 gemaakt. Je kunt natuurlijk niet een negatief aantal producten in de vrachtwagen laden.
- In de tweede kolom staat ‘I’ (integer) dit geeft aan dat de uitkomst alleen kan bestaan uit integer values.
Stap 4
Selecteer de kolom Product, hierin staan je variabelen. En selecteer de kolommen Personeelskosten, Gewicht en Verpakkingskosten. Deze zijn nodig om de restricties te definiëren.
Stap 5
Maak een tabel waar je de boundries van de 3 meetwaarde aangeeft (40.000 personeelskosten, 60.000 verpakkingskosten en 10.000 gewicht).
Ik ben nu klaar met het prepareren van mijn data en definiëren van de te optimaliseren variabelen. Deze data kan nu al input voor de optimization tool gebruikt worden.
Stap 6
De optimization tool.
- Select input mode. Hier kun je aangeven op welke manier je de input aanlevert.
- Ook geef je hier aan dat je te maken hebt met een (mixed) Integer Program. Deze keuze is gemaakt omdat je alleen gehele getallen kan gebruiken. Je kunt geen halve pakken koffie inpakken en verkopen.
- Je kunt een solver kiezen die past bij je probleem type. De solvers in Alteryx zijn open sources solvers. Het verschil tussen de solvers zit hem vooral in de berekeningstijd. Deze berekeningstijd hangt erg af van de door jou ontworpen input. Veelal is de GLPK solver sneller bij linear programming problems, de Symphony solver is vooral voor (mixed) integer programming problems een goede keuze. Bij mijn voorbeeld zou je beide solvers kunnen gebruiken omdat die beide een acceptabele berekeningstijd hebben (onder de 10 seconden). Naarmate de matrixen groter worden kan de keuze voor een solver een belangrijkere rol spelen.
- Ook vink ik aan dat ik de objective function wil maximaliseren omdat je in dit model de winst op de producten wilt maximaliseren.
Stap 7
Als output van de optimization tool krijg je het aantal verpakkingen van elk product dat in de vrachtwagen moet worden geladen. Om dit visueel aantrekkelijk te maken in Tableau is het interessant om deze waardes af te zetten tegen de oorspronkelijke aantallen. Dit is de reden dat ik de uitkomst join aan de originele waardes.
Tableau Dashboard
Vervolgens heb ik met de verkregen output een Tableau dashboard gemaakt, deze zie je hierboven. Met behulp van het dashboard kun je precies zien welke producten je moet inpakken en in welke kwantiteit dit moet gebeuren. Ook kun je zien welke restricties in dit model van belang zijn geweest. Dit zijn:
- Bij de producten Caffe Mocha, Amaretto en Decaf Irisch Cream is de totale voorraad opgemaakt. Wanneer er meer van deze producten aanwezig waren geweest zou de geoptimaliseerde winst hoger kunnen uitvallen.
- Ook is er te zien dat we bij de verpakkingskosten aan het maximale bedrag zitten. Wanneer de verpakkingskosten per product omlaag kunnen of als de totale maximale verpakkingskosten verhoogd kunnen worden zou dit eveneens invloed hebben op de geoptimaliseerde winst.
Zelf optimaliseren met Alteryx? Download de Alteryx trial of neem contact op!
Zo handig dit programma. Kan ik ook ergens terugvinden hoeveel het kost?
Hallo Jaap, de Alteryx Designer licentie kost 5195,- EUR voor een 1 jarig contract en 3995,- EUR per jaar voor een 3 jarig contract. Mocht je hier meer over willen weten neem dan contact met ons op via salesdesk@infotopics.nl of telefonisch op 088-8225328.