Vincent Demarez
Al het werk

2026

Sibyl

Vraagvoorspelling voor Agrafresh

Sibyl voorspelt hoeveel onze retailklanten van elk product zullen bestellen, zodat de fabriek snijden en bezetting kan plannen voor de orders binnen zijn. Het leerde van 160.149 verkooplijnen over drie en een half jaar, en hertraint zichzelf elke nacht.

160.149 verkooplijnen om van te leren
0.250.500.751.00zelfde week vorig jaar41 productlijnen, beste eerst0.250.500.751.00zelfde week vorig jaar41 productlijnen, beste eerst

Typische productlijn: 32% minder fout dan de basislijn. Waar niets beter deed, houdt Sibyl de basislijn.

TimesFM
15
Ensemble
11
LightGBM
7
TimesFM met signalen
4
Week van vorig jaar
4

Hoe het in elkaar zit

  1. SignalenWeer, kalender, schoolvakanties, promoties
  2. Historiek160.149 verkooplijnen, 108 producten, zeven retailgroepen, sinds 2023
  3. ModellenGoogle’s TimesFM naast een getunede LightGBM
  4. BacktestDoorlopend, tegen de basislijn “zelfde week vorig jaar”
  5. VoorspellingBeste model per product, elke nacht hertraind, wekelijks getuned

Het probleem

Versgesneden groenten wachten niet. Orders komen laat binnen en schommelen met het weer, de vakanties en de promotie die een retailer die week draait. Plan je te weinig, dan vertrekken vrachtwagens half leeg. Plan je te veel, dan gaat goede waar verloren.

Wat ik bouwde

Ik begon met de eenvoudigste eerlijke basislijn: zelfde week, vorig jaar. Elk model moet die verslaan om zijn plaats te verdienen. Sibyl draait Google’s TimesFM, een foundation model voor tijdreeksen, naast een LightGBM die weer-, kalender- en promotiesignalen krijgt. Een doorlopende backtest kiest per product de winnaar.

Wat het toonde

Over alles heen versloeg TimesFM de getunede LightGBM: 34,1 tegenover 36,5 WAPE. Het wint op stabiele lijnen met veel volume. Op promotielijnen klopt het gradient-boosted model de basislijn nog altijd, dus Sibyl kiest niet één model. Het kiest er één per product, elke nacht.

Specificaties

Gebouwd voor
Productieplanning bij Agrafresh
Draait op
Onze eigen server
Stack
Python, TimesFM, LightGBM, Optuna
Resultaat
34,1 WAPE voor TimesFM tegenover 36,5 voor LightGBM (lager is beter)