Tuesday, August 12. Équipe de nuit.

À 9:40 PM, nous étions en plein pic de sorties. Au carrefour où la Voie Principale B rencontre l'Allée C, quatre AMR sont arrivés des quatre directions au même moment. Et se sont arrêtés. Tous les quatre. Personne n'a bougé, parce que chacun pensait avoir la priorité.

Sur l'écran de dispatch, quatre petits points restaient figés. Derrière eux, une file de robots s'accumulait dans l'Allée C. Le chef d'équipe Xiao Li a couru, a observé un moment et est revenu me dire : "Chen, ces quatre-là, on dirait qu'ils l'ont planifié. Personne ne bouge."

Il a fallu 8 minutes entre le moment où ils se sont bloqués et le moment où l'un de nos gars est allé déplacer manuellement un robot. Huit minutes avec zéro mouvement dans l'Allée C. Le réapprovisionnement ne pouvait pas entrer. Tout le plan de vagues est tombé à l'eau. Cette nuit-là, notre débit horaire est passé des 1,100 colis habituels à à peine 800. Je vais être honnête avec vous : le RCS tournait sans problème depuis trois mois, et ce qui nous a finalement mis à terre, c'est une seule intersection.

Quatre robots, personne ne cède

La priorité par défaut d'usine était "premier arrivé, premier servi". Ça sonne équitable, non ? Comme une file d'attente. Celui qui arrive le premier à l'intersection passe le premier.

Voici ce qui se passe réellement. Pendant le pic, quatre robots arrivent à environ une seconde d'intervalle. Le système ne peut pas dire qui était vraiment le premier. Alors les quatre s'arrêtent, les quatre avancent un peu pour tester, les quatre pilent quand leurs lasers de sécurité se captent mutuellement. Arrêt pendant trois secondes, nouvel essai, nouvel arrêt. Blocage.

Et le blocage est contagieux. Une fois l'intersection gelée, les robots derrière s'arrêtent, et ceux derrière ceux-là s'arrêtent aussi. Huit minutes plus tard, la moitié de la flotte de la Zone B était à l'arrêt et l'écran RCS était un mur de rouge. Old Wang, notre vétéran des nuits, a pris la radio : "Chen, ces robots sont là pour travailler ou pour tenir une réunion ?"

Le lendemain matin, j'ai passé tout le standup à me disputer avec l'ingénieur du fournisseur. Ses mots exacts : "Chen, c'est le standard de l'industrie." J'ai dit : "Votre standard vient de mettre mon entrepôt à l'arrêt pendant huit minutes. Donnez-moi du non-standard."

Deux mauvais correctifs que nous avons vraiment essayés

La première idée était évidente : les chargés passent en premier. Nous avons configuré la "priorité aux chargés" — les robots pleins obtiennent la priorité la plus haute, les vides cèdent.

Trois jours plus tard, Old Zhang se tenait à l'intersection de l'Allée C avec deux nouvelles recrues, en train d'injurier les robots. Un robot vide en route pour ramasser une charge avait cédé le passage à sept ou huit chargés d'affilée et restait là depuis 11 minutes. Zhang a dit : "Chen, ces trucs harcèlent les nouveaux — un robot vide n'est pas un robot ?" Pire, les robots chargés ont commencé à se croire tout permis. Ils savaient que tout le monde céderait, alors ils ont cessé de ralentir aux intersections, et deux fois ils ont failli pousser un robot vide sortant d'une allée latérale contre les rayonnages. Le moral est invisible jusqu'à ce qu'il casse — mais lors de la passation ce jour-là, quelqu'un a vraiment dit : "Peut-être que les nuits devraient revenir aux chariots élévateurs." Entendre ça m'a donné des frissons.

La deuxième idée : priorité à la voie principale. Les robots sur la voie principale ne s'arrêtent jamais ; les robots des allées latérales cèdent.

C'était pire. Les robots des allées latérales ne pouvaient plus du tout rejoindre la voie principale. Ils s'entassaient dans les allées — le pire était une allée latérale de 40 mètres avec six robots pare-chocs contre pare-chocs, et le gars du réapprovisionnement ne pouvait même pas passer avec son transpalette manuel. Nous avons déplacé l'embouteillage de l'intersection vers les allées, où il était plus difficile à résoudre, et affamé les zones de picking en réapprovisionnement au passage.

Deux expériences ratées nous ont appris quelque chose de contre-intuitif : plus on essaie d'être "équitable", pire est l'embouteillage.

Premier arrivé, premier servi sonne le plus équitable — et se bloque le plus. La priorité aux chargés sonne le plus sensée — et harcèle les robots vides jusqu'à les rendre inutiles. La priorité à la voie principale sonne le plus scientifique — et déplace l'embouteillage quelque part où il est plus difficile à traiter. J'ai fini par comprendre : les intersections ne craignent pas la lenteur, elles craignent l'ambiguïté. Dès que deux robots pensent tous deux qu'ils doivent passer, c'est fini. La seule façon de garder le trafic fluide est d'instaurer une "injustice" délibérée — dire exactement qui cède à qui, et ne laisser aucune place à la négociation.

Ce que fait notre entrepôt aujourd'hui

Après un mois d'essais et d'erreurs, nous avons retenu trois règles. Voici comment notre entrepôt fonctionne aujourd'hui.

Règle un : changer les règles selon l'heure de la journée. Pas de taille unique.

Pendant la journée, quand les vagues sont légères et peu de robots sont dehors, nous utilisons premier arrivé, premier servi. Simple, sans chichi. De 7 PM à 11 PM, le système bascule automatiquement sur la "priorité d'urgence de tâche". Chaque tâche reçoit un score — les tâches de sortie proches de leur heure limite de transporteur obtiennent le score le plus élevé, puis le réapprovisionnement, et les robots vides retournant charger, les plus bas. Note : nous notons par urgence, pas par poids. Un robot vide fonçant vers une vague sur le point de rater sa limite dépasse un robot chargé roulant tranquillement sans échéance. Old Zhang n'a plus injurié personne à une intersection depuis.

Stratégie Risque de blocage Attente max du robot vide Débit de pointe Quand nous l'utilisons
Premier arrivé, premier servi Élevé (presque quotidien en pointe) environ 5 min Base Journée, trafic léger
Priorité aux chargés Moyen Plus de 10 min environ 10% sous la base Essayée 3 jours, abandonnée
Priorité à la voie principale Moyen Les allées latérales s'entassent Allées bloquées, encore pire Essayée 2 jours, abandonnée
Urgence de tâche selon l'heure Faible (zéro blocage en 3 mois) Moins de 3 min environ 15% au-dessus de la base Ce que nous utilisons aujourd'hui, toute la journée

(Ce sont des chiffres mesurés sur notre propre site avec 40 robots. Flotte différente, agencement différent — prenez-les comme référence, pas comme évangile.)

AMR cédant le passage à un carrefour d'allées

Règle deux : dessiner une zone de non-arrêt autour des mauvaises intersections.

Nous avons sorti les statistiques des six intersections du bâtiment. Celle de la Voie Principale B représentait plus de 70% de nos blocages. La solution était simple : 15 mètres dans chaque direction, nous avons dessiné une clôture électronique. Avant qu'un robot n'entre dans la zone, le RCS doit prouver qu'il peut franchir l'intersection d'un seul coup. S'il ne peut pas le prouver, il attend dehors. Pas de "je me faufile et on verra". C'est la même règle que "ne bloquez pas le carrefour" dans les rues des villes — sauf que nous l'avons écrite dans le logiciel. Cette intersection ne s'est plus bloquée une seule fois depuis.

Règle trois : les nouveaux dispatchers suivent les anciens trois jours — à observer les intersections.

Celle-ci concerne les gens. Pendant les deux premières semaines après le changement des règles, les vétérans de l'équipe de nuit fixaient les écrans, et dès que quelque chose semblait anormal, ils l'appelaient à la radio. Maintenant, chaque nouveau dispatcher passe trois jours avec Old Wang à simplement observer le trafic des intersections, apprenant à repérer "ces deux-là vont se rentrer dedans". Les machines gèrent les règles ; les gens gèrent les exceptions. Ça sonne démodé, mais ça marche — le mois dernier, une mise à jour logicielle a réinitialisé nos paramètres de priorité aux valeurs d'usine, et Old Wang a remarqué que "les robots cèdent mal" dix minutes avant que l'alarme du système ne se déclenche.

Faisons les comptes. Lors de notre pire semaine, nous avons eu en moyenne trois blocages par jour, de cinq à huit minutes chacun, et le débit horaire chutait de deux à trois cents colis à chaque fois. Cela fait près de 4,000 colis perdus en une semaine. En haute saison, ce genre de raté vous vaut des pénalités clients à vous faire pleurer. Nous sommes sur le nouveau système depuis trois mois : zéro blocage, et le débit de l'équipe de nuit a en fait augmenté par rapport à avant. Honnêtement, l'ingénieur du fournisseur a d'abord trouvé notre approche grossière. Maintenant, ils ont écrit nos règles selon l'heure dans la configuration recommandée qu'ils expédient aux autres entrepôts.

Un rappel pour mes collègues exploitants : quand vous mettez le RCS en ligne, ne vous contentez pas d'admirer à quel point l'algorithme de dispatch est intelligent. Allez d'abord vous tenir à votre intersection la plus chargée pendant un pic. Ratez l'intersection et 40 robots deviennent 40 barrages routiers ; réussissez-la et les gens deviennent le bonus. Et avant de changer une règle de circulation, parlez d'abord à vos vétérans de l'équipe de nuit — les robots se conduisent seuls, mais les équipes sont menées par des gens. Si les gens n'adhèrent pas, aucune règle ne fonctionne.

Par Chen Feng, responsable des opérations d'entrepôt

Traduit de l'anglais. En cas de divergence, la version anglaise fait foi.