Une entreprise d’organisation d’événements nous a approchés pour co-construire un système d’optimisation des réservations en temps réel.
Nous avons bâti un système qui maximise le nombre de personnes dans un restaurant. Nous avons aussi construit un système de recommandation pour les aider à accommoder leur clientèle : lorsqu’un restaurant se remplit, il peut être avantageux de refuser un groupe afin d’en accepter un autre, plus grand, un peu plus tard. Résultat global : une augmentation d’environ 20 % du nombre de clients.
L’image suivante montre un restaurant fictif de 12 tables (une par ligne) sur une période de 6 heures (chaque colonne correspond à une plage de 15 minutes). Les cases bleues sont les réservations acceptées par notre système en temps réel.

Un problème à très forte stochasticité
Le système devait tenir compte non seulement des réservations par téléphone et en ligne, mais aussi des gens qui se présentent sans réservation. La gestion des réservations peut être délicate : quelqu’un réserve pour six personnes à 19 h, mais en réalité quatre personnes arrivent à 19 h 30 — et vous estimez qu’elles resteront une heure alors qu’elles resteront une heure et demie.
Nous avons vite réalisé qu’il était dans l’intérêt des restaurants qui se remplissent rapidement de refuser parfois des gens. Nous avons donc construit un système de recommandation combinant l’AA et la RO pour les aider à replanifier certains groupes.
L’optimisation mathématique ne fait pas tout
Une bonne optimisation mathématique n’est pas nécessairement une bonne solution pour nos clients. Notre première version du système de réservation proposait des solutions hautement optimisées — et c’est précisément pourquoi il a fallu une deuxième version, qui tient compte de la façon dont les gens travaillent réellement.