Épisode n°1 : ChatGPT vs Gouvernante : le combat !

chatgptvs

Mon défi

Cela fait bien 3 ans que je passe la moitié de mon temps à créer des algorithmes pour automatiser l'ouverture le matin dans les hôtels. Venu fraîchement du monde de la R&D j'ai pensé que le problème était facile à résoudre… jusqu'à que je comprenne que le problème est bien plus complexe qu'il n'en a l'air….

Alors c'est vrai que quand le génie ChatGPT a pointé du nez je me suis rué pour voir s'il faisait mieux que moi. Je ne dis pas mieux que les gouvernant.es car ça c'est impossible (😉) mais au moins plus vite !

Le PMS Opera (et d'autres bien sur) sait faire une ouverture me direz vous… je répondrais que c'est en dessous de tout : une répartition linéaire bête et méchante.

J'en sais quelque chose : mon algorithme s'est fait insulté tellement de fois que j'ai commencé à comprendre qu'il y avait d'abord un problème de définition.

Pas si simple

Au début ça commence par : bah c'est simple il faut juste donner 12 chambres par femme de chambre.

Et puis ça se complique : ah, mais il faut respecter sa section et aussi ses crédits. Très bien… Mais il faut maximum 2 étages sinon il faut retirer des crédits…ok…et puis aussi si jamais il n'y a pas assez de crédits/chambres dans la section il faut puiser dans la section adjacente…qui d'ailleurs pas toujours la plus logique.

A chaque fois, je rajoute des contraintes à mon Solver… et ce n'est jamais assez : ah mais il faut équilibrer les départs (plus longs) avec les arrivées. J'avais oublié qu'il fallait donner les chambres propres mais ne pas les compter tout de même ! et la liste s'allonge

Un jour je publie une liste des contraintes par pays... personne n'est d'accord ! J'ai compilé une liste de 200 contraintes...

J'ai fini par mettre en place un algorithme de type gestion de contraintes linéaires. Donner un Poids à chaque contrainte qui peuvent être mutuellement exclusifs : changer d'étage ne vaut le coup que si on a au moins 2 chambres, si pas assez de crédit alors rajouter un étage mais retirer des crédits...

La métaphore des taches

C'est un peu comme la métaphore des taches : si tu commences par les petites taches, il ne restera pas de place pour les grosses tâches :

Il était une fois… un expert réputé qui tenait une conférence sur la meilleure façon de planifier son temps.
« Je vous propose une expérience » dit-il à son public attentif.
Il prend un grand bocal de verre et le remplit à ras bord de gros cailloux de la taille d'une balle de tennis. Puis il demanda à son public : « Est-ce que ce bocal est plein ? » Tout le monde a répondu : « Oui ». « Bien », répondez-il « nous allons voir. »
C'est alors qu'il sort un sac contenant des graviers et le versa dans le bocal. Les graviers se faufilèrent entre les cailloux et remplirent le bocal. À nouveau, il pose la question : « Est-ce que le bocal est plein ? ». Le public, commençant à comprendre, répondit : « Non. » 
Il prend ensuite un sac de sable qu'il versa dans le bocal. Le sable, à son tour, se faufila entre les cailloux et les graviers jusqu'à remplir le bocal.
Il fit de même avec la bouteille d'eau qui était posée sur sa table et remplit à nouveau le bocal.
« Quel enseignement pouvons-nous tirer de cette expérience ? » exigea-t-il à son public. « Cette expérience montre que si l'on ne met pas les gros cailloux en premier dans le bocal, on ne pourra jamais les mettre tous. Il faut donc commencer par les gros cailloux avant de s'attaquer aux petits. »
(Les gros cailloux sont nos priorités, les graviers, le sable et l'eau sont les tâches de moindre importance que nous avons tendance à faire passer en premier. Une fois la journée bien remplie de graviers, de sable et d'eau, impossible de faire rentrer nos gros cailloux.)

Cette expérience ne peut pas marcher pour l'ouverture : on arrive vite à une impasse ! Si on commence par assigner les chambres par celles qui sont évidentes, dans l'ordre des contraintes on arrive vite à une impasse. Il faut faire du Sudoku pour arriver à une solution viable

L'expérience

J'ai donné à ChatGPT une liste de 70 chambres dans un tableau qui ressemble à ça :

C'est parti :

il beug, un peu, se reprend (la classe tout de même) puis :

Mais il ne respecte pas les crédits ! il en donne 600 ! Impossible car derrière ce calcul informatique il ya des êtres humains qui travaillent.

Et plus je lui demande d'avancer plus il échoue.

Pour information, mon algorithme de calcul s'en sort beaucoup mieux. Si cela intéresse quelqu'un que je pourrais en dire plus dans un prochain article. :

Il donne bien 400 crédits tout en respectant les contraintes !

Le mot de la fin

Bon, l'honneur est sauf et ChatGPT ne sait pas encore faire mieux que l'humain. L'algorithme utilisé par Roomchecking est très "métier" donc il est normal qu'il fasse mieux... mais cela me rassure.

Pour être juste j'ai demandé à ChatGPT et franchement il a le mérite de l'humilité ;=)

J'ai d'autres expériences que je voudrais partager. N'hésitez pas à me dire si vous voulez que je teste d'autres choses jweizman@roomchecking.com

Vous pourriez également être intéressé par les articles suivants