De uitdaging
De case van Merford is er een die voor veel bedrijven misschien herkenbaar is. Hoe kun je van te voren zo nauwkeurig mogelijk het budget en de marge op een project bepalen? Merford wil meer zicht op het verloop van de projecten en de bijbehorende kosten.
Door Merford’s grote variatie aan geluidsoplossingen, veiligheidsprocedures en risico’s door verschillende uitvoering- en montage omstandigheden verloopt elk project via een andere procedure. Door dit verschil is de kans aanwezig dat de winstmarge later is dan verwacht, waardoor een fout zelfs enkele tonnen verlies kan veroorzaken. Dit moet natuurlijk voorkomen worden.
Deze kosten worden momenteel al in de gaten gehouden door projectleiders en financial controllers, maar er blijft ruimte voor verbetering. De verslaglegging is nu vaak achteraf, waardoor er niet tijdig kan worden ingegrepen. Ook zijn de prognoses van de projectleiders hoe een project zal verlopen subjectief, wat kan zorgen voor een vertekend beeld. Merford wil graag al tijdens de uitvoering van het project op de hoogte worden gesteld van de (verwachte) uitgaven en een seintje krijgen indien een project duurder uitvalt dan in eerste instantie werd gedacht. Door deze financiële risico’s tijdig op te sporen, kan er waar nodig worden bijgestuurd om uiteindelijk onvoorziene kosten te voorkomen.
Het resultaat
Het MKB Datalab heeft als oplossing voor Merford een dynamische koppeling gemaakt tussen een Python script en de SQL Database. Deze maakt wekelijks een voorspelling van de marges voor projecten en plaatst deze in de SQL Database. Er zijn 4 projecten voor nodig geweest om het eindresultaat te bereiken, welke hieronder stapsgewijs zijn uitgewerkt.
1. Inzicht in data vergaren en verschillende projecten clusteren
Allereerst wordt er gekeken naar de factoren die de kosten beïnvloeden. Het begint met een data analyse om de verschillende databronnen en de kwaliteit hiervan in kaart te brengen. De kwaliteit leek in eerste instantie goed, maar zodra we ons gingen verdiepen bleek dat er geen consistent startmoment voor een volgende fase werd genoteerd, welke van invloed zijn op de uiteindelijke kosten per fase. Als resultaat van dit project is er een rapportage gemaakt die de bevindingen uit de data beschrijft. Ook is er een simpel Linear Regressie model in Python gemaakt welke de marge voorspelt per project, ook al dit model is nog niet optimaal.

Python script als basis voor het model
2. Verbetering voorspelmodel en proof of concept in Excel
Met het tweede project hebben we het model van het eerste project verbeterd. Hiermee hebben we een Linear Regressie model kunnen maken wat met 72% nauwkeurigheid de verwachte marge per project kan voorspellen. Daarna hebben we toegewerkt naar bruikbare een proof of concept waarbij Merford met een druk op de knop het Python script kan uitvoeren en een Excel bestand krijgt met de verwachte marges per project. Voor deze proof of concept hebben ze geen enkele kennis van Python nodig, maar krijgen ze wel al eerste inzichten die uitschieters in de kosten kunnen signaleren!
3. Specifieker voorspelmodel
Het bestaande Lineare Regressie model kijkt naar verschillende factoren over het hele project en probeert op basis daarvan de uiteindelijke marge van het project te voorspellen. Echter is het voor Merford interssant om te weten of het mogelijk is om per verschillende fase (ontwerpen, assemblage, engeneering, etc) ook de marge te voorspellen. Zo kunnen ze per fase controleren of het project binnen het budget blijft of niet, en daar tijdens het project al op inspelen. In plaats van vooraf gedefinieerde fases kunnen we ook kijken of het mogelijk is om de marges te voorspellen per verschillende tijdseenheden, bijv. op 10% van de verwachte doorlooptijd. Helaas bracht het verder specificeren van het model niets op, waardoor we met het vorige algemene model zijn doorgegaan.
4. Implementatie
We hebben een werkend Linear Regressie model gemaakt, nu is het de kunst om deze ook werkend te krijgen zodat Merford gemakkelijk de voorspelde marges kan inzien. Hiervoor hebben we een Windows Task Scheduler aangemaakt die automatisch het Python script uitvoert om nieuwe voorspellingen te maken. Deze voorspellingen worden gelijk in de SQL database verwerkt.

Merford MKB Logistieke afdeling
Doordat er met elk project nieuwe data vrijkomt, laten we het model één keer in de maand updaten met deze nieuwe data. Om ervoor te zorgen dat het Python script makkelijk draait op de SQL server hebben we met Docker een “pakketje” gemaakt welke in zijn geheel op de server gezet kan worden. Dit maakt het installeren makkelijker. Om al deze kennis te waarborgen is er ook een Github account aangemaakt die de verschillende versies van de applicatie beheert.