Tuesday, August 12. Turno de noche.

A las 9:40 PM estábamos en medio de nuestro pico de salida. En el pasillo transversal donde la Vía Principal B se cruza con el Pasillo C, cuatro AMRs llegaron desde las cuatro direcciones al mismo momento. Y se detuvieron. Los cuatro. Nadie se movió, porque cada uno pensaba que tenía la preferencia.

En la pantalla de despacho, cuatro puntitos estaban congelados. Detrás de ellos, una fila de robots se acumulaba por el Pasillo C. El líder de turno Xiao Li corrió, observó un rato y volvió a decirme: "Chen, esos cuatro parece que lo planearon. Nadie se mueve."

Pasaron 8 minutos desde que se bloquearon hasta que uno de nuestros chicos caminó y movió manualmente un robot fuera del camino. Ocho minutos con cero movimiento en el Pasillo C. El reabastecimiento no podía entrar. Todo el plan de olas se desmoronó. Esa noche nuestro throughput por hora cayó del habitual 1,100 cajas a apenas 800. Seré honesto contigo: el RCS llevaba funcionando sin problemas tres meses, y lo que finalmente nos tumbó fue una sola intersección.

Cuatro robots, nadie cediendo

La prioridad predeterminada de fábrica era "primero en llegar, primero en pasar". Suena justo, ¿verdad? Como una cola. Quien llega primero a la intersección pasa primero.

Esto es lo que realmente pasa. Durante el pico, cuatro robots llegan con aproximadamente un segundo de diferencia entre sí. El sistema no puede decir quién fue verdaderamente el primero. Así que los cuatro se detienen, los cuatro avanzan un poco para probar, los cuatro frenan de emergencia cuando sus láseres de seguridad se detectan entre sí. Se detienen tres segundos, lo intentan de nuevo, se detienen de nuevo. Bloqueo total.

Y el bloqueo es contagioso. Una vez que la intersección se congela, los robots detrás se detienen, y los que están detrás de esos se detienen también. Ocho minutos después, la mitad de la flota en la Zona B estaba parada y la pantalla del RCS era un muro de rojo. Old Wang, nuestro veterano de las noches, tomó la radio: "Chen, ¿estos robots están aquí para trabajar o para celebrar una reunión?"

A la mañana siguiente pasé todo el standup discutiendo con el ingeniero del proveedor. Sus palabras exactas: "Chen, este es el estándar de la industria." Yo dije: "Tu estándar acaba de apagar mi almacén por ocho minutos. Dame uno no estándar."

Dos soluciones equivocadas que realmente probamos

La primera idea era obvia: los cargados van primero. Configuramos "prioridad de cargados" — los robots llenos reciben la prioridad más alta, los vacíos ceden.

Tres días después, Old Zhang estaba parado en la intersección del Pasillo C con dos contratados nuevos, maldiciendo a los robots. Un robot vacío en camino a recoger una carga había cedido ante siete u ocho cargados seguidos y llevaba 11 minutos parado. Zhang dijo: "Chen, estas cosas acosan a los nuevos — ¿un robot vacío no es un robot?" Peor aún, los robots cargados empezaron a actuar con privilegios. Sabían que todos cederían, así que dejaron de reducir la velocidad en las intersecciones, y dos veces casi empujan a un robot vacío que salía de un pasillo lateral contra las estanterías. La moral es invisible hasta que se rompe — pero en el cambio de turno ese día, alguien realmente dijo: "Quizás las noches deberían volver a los montacargas." Escuchar eso me dio escalofríos.

La segunda idea: prioridad de vía principal. Los robots en la vía principal nunca se detienen; los robots de pasillos laterales ceden.

Eso fue peor. Los robots de pasillos laterales no podían entrar a la vía principal en absoluto. Se acumulaban en los pasillos — el peor fue un pasillo lateral de 40 metros con seis robots pegados parachoques con parachoques, y el chico de reabastecimiento ni siquiera podía pasar con su transpaleta manual. Movimos el atasco de la intersección a los pasillos, donde era más difícil de arreglar, y dejamos sin reabastecimiento a las zonas de picking en el proceso.

Dos experimentos fallidos nos enseñaron algo contraintuitivo: cuanto más intentas ser "justo", peor es el atasco.

Primero en llegar, primero en pasar suena lo más justo — y es lo que más se bloquea. La prioridad de cargados suena lo más sensato — y acosa a los robots vacíos hasta volverlos inútiles. La prioridad de vía principal suena lo más científico — y mueve el atasco a un lugar más difícil de tratar. Finalmente me cayó la ficha: las intersecciones no temen la lentitud, temen la ambigüedad. En el momento en que dos robots piensan que deben pasar, estás acabado. La única forma de mantener el tráfico en movimiento es construir una "injusticia" deliberada — decir exactamente quién cede ante quién, y dejar cero margen de negociación.

Lo que nuestro almacén hace ahora

Después de un mes de prueba y error, nos quedamos con tres reglas. Así es como opera nuestro almacén hoy.

Regla uno: cambia las reglas según la hora del día. No hay talla única.

Durante el día, cuando las olas son ligeras y hay pocos robots fuera, usamos primero en llegar, primero en pasar. Simple, sin complicaciones. De 7 PM a 11 PM, el sistema cambia automáticamente a "prioridad por urgencia de tarea". Cada tarea recibe una puntuación — las tareas de salida cercanas a su corte de transportista puntúan más alto, luego el reabastecimiento, y los robots vacíos que regresan a cargar los más bajos. Nota: puntuamos por urgencia, no por peso. Un robot vacío corriendo hacia una ola que está a punto de perder el corte supera a un robot cargado paseando sin fecha límite. Old Zhang no ha maldecido en una intersección desde entonces.

Estrategia Riesgo de bloqueo Espera máxima de robot vacío Throughput pico Cuándo la usamos
Primero en llegar, primero en pasar Alto (casi diario en pico) unos 5 min Base Día, tráfico ligero
Prioridad de cargados Medio Más de 10 min unos 10% bajo la base Probada 3 días, descartada
Prioridad de vía principal Medio Pasillos laterales se acumulan Pasillos se atascan, aún peor Probada 2 días, descartada
Urgencia de tarea por hora del día Bajo (cero bloqueos en 3 meses) Menos de 3 min unos 15% sobre la base Lo que operamos ahora, todo el día

(Estos son números medidos en nuestro propio piso con 40 robots. Flota distinta, layout distinto — tómalos como referencia, no como evangelio.)

AMRs cediendo el paso en una intersección de pasillos

Regla dos: dibuja una caja de no-detención alrededor de las intersecciones malas.

Sacamos las estadísticas de las seis intersecciones del edificio. Esa de la Vía Principal B representaba más de 70% de nuestros bloqueos. La solución fue simple: 15 metros en cada dirección, dibujamos una cerca electrónica. Antes de que cualquier robot entre a la caja, el RCS tiene que probar que puede cruzar la intersección de una sola vez. Si no puede probarlo, espera afuera. Nada de "me meto y ya veré". Es la misma regla que "no bloquees la caja" en las calles de la ciudad — excepto que la escribimos en el software. Esa intersección no se ha bloqueado ni una vez desde entonces.

Regla tres: los despachadores nuevos acompañan a los veteranos tres días — observando intersecciones.

Esta es sobre personas. Durante las primeras dos semanas después de cambiar las reglas, los veteranos del turno de noche miraban los monitores, y en cuanto algo se veía mal lo reportaban por radio. Ahora cada despachador nuevo pasa tres días con Old Wang solo observando el tráfico de intersecciones, aprendiendo a detectar "esos dos están a punto de chocar". Las máquinas manejan las reglas; las personas manejan las excepciones. Suena anticuado, pero funciona — el mes pasado una actualización de software restableció nuestros parámetros de prioridad a los valores de fábrica, y Old Wang notó que "los robots están cediendo mal" diez minutos antes de que sonara la alarma del sistema.

Hagamos cuentas. En nuestra peor semana, promediamos tres bloqueos al día, de cinco a ocho minutos cada uno, y el throughput por hora caía doscientas o trescientas cajas cada vez. Eso son casi 4,000 cajas perdidas en una semana. En temporada pico, ese tipo de fallo te trae penalizaciones de clientes que te hacen llorar. Llevamos tres meses con el nuevo esquema: cero bloqueos, y el throughput del turno de noche de hecho subió respecto a antes. Honestamente, el ingeniero del proveedor pensó al principio que nuestro enfoque era burdo. Ahora han escrito nuestras reglas por hora del día en la configuración recomendada que envían a otros almacenes.

Un recordatorio para colegas operadores: cuando pongas el RCS en línea, no te limites a admirar qué tan inteligente es el algoritmo de despacho. Ve y párate en tu intersección más concurrida durante un turno pico primero. Si te equivocas en la intersección, 40 robots se convierten en 40 bloqueos; si aciertas, las personas se convierten en el extra. Y antes de cambiar cualquier regla de tráfico, habla primero con tus veteranos del turno de noche — los robots se manejan solos, pero los turnos los manejan las personas. Si las personas no compran la idea, ninguna regla funciona.

Por Chen Feng, gerente de operaciones de almacén

Traducido del inglés. En caso de discrepancia, prevalece la versión en inglés.