Saltar al contenido
SuperScheduler

Puertos y logística

Planificación de atraques, grúas y terminales

Un plan de atraques es un puñado de eventos largos con consecuencias caras. Las escalas duran horas o días, las grúas se comparten entre ellas y una llegada tardía mueve la ventana de todas las escalas que vienen detrás. El planificador necesita todo el muelle a la vista y el detalle de un solo turno a un gesto de distancia.

Ventanas largas, equipos compartidos, llegadas que se mueven

Cada escala ocupa un muelle desde el atraque hasta la salida, y necesita uno lo bastante largo y con calado suficiente para el buque. Dentro de esa ventana se asignan grúas de muelle y otros equipos para operar la carga, que a menudo pasan de un buque a otro a medida que uno termina y empieza el siguiente.

Las horas de llegada son estimaciones que no paran de cambiar. Un buque retrasado por el mal tiempo llega a una ventana que ahora se solapa con la escala siguiente. Algunos puertos añaden ventanas de marea que limitan cuándo pueden entrar o salir los buques de gran calado, y prácticos, remolcadores y manos de estiba tienen su propia disponibilidad.

Esperar sale caro a todos los implicados. Un buque fondeado, un muelle reservado y vacío o una carga que pierde su conexión aumentan el riesgo de sobreestadías y disputas, así que los planificadores buscan el cambio que menos perturba, no simplemente uno que encaje.

Decisiones sobre el plan de atraques

  1. 01

    Qué muelle recibe la escala

    Ajustar la eslora, el calado y el tipo de carga del buque a la longitud, la profundidad y el equipamiento del muelle, respetando las ventanas acordadas con las navieras.

  2. 02

    Cuántas grúas y cuándo

    Más grúas acortan una estancia, pero se las quitan a otros buques. El reparto de grúas decide cuánto tiempo sigue ocupado el muelle.

  3. 03

    Qué desplaza una llegada tardía

    Una escala retrasada puede mantener su muelle y empujar la siguiente, pasar a otro muelle o esperar fondeada. Cada opción repercute de forma distinta en el plan.

  4. 04

    Encajar las ventanas de marea

    Puede que las llegadas y salidas de gran calado solo sean posibles en torno a la pleamar, lo que limita el inicio y el fin de una escala, pero no las horas intermedias.

Cómo modelar el muelle

Las filas son muelles y equipos, los eventos son escalas y el trabajo dentro de ellas, y el eje temporal abarca días con las horas a un nivel de zoom de distancia.

Recursos
Agrupa los muelles por terminal en un árbol de recursos, con columnas para la longitud y el calado máximo. Las grúas y otros equipos pueden ir en un segundo panel de SchedulerPanes, que comparte el eje temporal y el zoom pero tiene su propio scroll vertical.
Eventos
Una escala es un intervalo semiabierto de varios días desde el atraque hasta la salida, con el nombre del buque, la ETA y el estado como campos propios. Las asignaciones de grúa son eventos en las filas de grúas, vinculados a su escala para que la relación siga visible cuando cualquiera de los dos se mueve.
Escala temporal
Las celdas de una hora con cabeceras de día cubren los próximos días; aleja el zoom a días y semanas para la temporada. Carga los horizontes largos bajo demanda con createRangeLoader, que pide bloques a medida que se mueve la vista y cancela las peticiones que quedan fuera de ella.
Reglas
En onEventMoving, rechaza un muelle demasiado corto o con poco calado a partir de los atributos del recurso, con un mensaje que nombre la restricción. Sombrea las ventanas de marea y valida que el inicio y el fin caigan dentro de ellas, y alimenta el minimapa con la ocupación de los muelles o las horas de grúa por tramo para que destaquen los días con más carga.

Vista de planificación y sistemas de la terminal

  • Eventos largos que abarcan días, con detalle por horas al hacer zoom
  • Filas de muelles agrupadas y un panel de equipos aparte sobre un mismo eje temporal
  • Vínculos entre escalas y trabajo de grúas
  • Un minimapa de la serie de ocupación que calcula tu aplicación
  • Carga por rangos con cancelación y render virtualizado para horizontes largos
  • Los datos de ETA, la información de los buques y la integración con tu sistema operativo de terminal
  • La optimización de la asignación de muelles y del reparto de grúas, si la hay: la librería no optimiza
  • Las tablas de mareas y las ventanas que se derivan de ellas
  • La reprogramación de las escalas siguientes tras un retraso
  • Sobreestadías, facturación y ventanas contractuales
  • La coordinación entre planificadores, la persistencia y la auditoría

Ejemplos que funcionan

Trampas de la planificación de atraques

Ventanas de marea como celdas deshabilitadas

Las celdas deshabilitadas rechazan cualquier evento que las abarque, pero un buque puede seguir atracado durante la bajamar. Sombrea las ventanas en su lugar y valida solo las horas de llegada y salida.

Pasar directamente marcas de tiempo con zona

Una cadena con desfase, como 10:00:00+02:00, se convierte a hora de reloj en UTC. Convierte los datos a la hora civil local del puerto en tu aplicación y pasa fechas y horas simples.

Dar por hecho que un retraso se propaga

El trabajo de grúa vinculado no se mueve cuando se mueve su escala. Decide en tus handlers si desplazarlo y agrupa el cambio para que se pueda deshacer en un solo paso.

Cargar toda la temporada de golpe

Meses de escalas y asignaciones de equipos se cargan mejor por rangos a medida que el planificador se desplaza, con un servidor que respete peticiones semiabiertas [start, end).

Preguntas

¿Puede SuperScheduler optimizar la asignación de muelles?

No. No tiene motor de asignación ni de optimización. Muestra el plan que elaboran tus planificadores o tu solver, deja que los planificadores lo cambien e informa de cada cambio para que tu sistema lo valide.

¿Cómo muestro las ventanas de marea en un plan de atraques?

Colorea las celdas correspondientes en onBeforeCellRender con un fondo o una clase CSS, o dibuja separadores en los bordes de la ventana. Después comprueba en onEventMoving que el inicio y el fin de la escala caen dentro de una ventana y, si no es así, rechaza el movimiento con un mensaje.

¿Pueden muelles y grúas compartir un mismo eje temporal?

Sí. SchedulerPanes, de super-scheduler/panes, apila varios schedulers que comparten el scroll horizontal, el zoom y el ancho de la cabecera de fila, con scroll vertical independiente. Se pueden mover eventos entre paneles, y los handlers indican el panel de origen y el de destino.

¿Cuántas escalas puede manejar la línea de tiempo?

El render siempre está virtualizado, así que solo se dibuja lo que está a la vista. Para horizontes largos, carga los eventos por rangos con createRangeLoader en lugar de todos a la vez, y mide con tus propios datos, porque el límite práctico depende de los eventos, las filas y los dispositivos.

Mira la demo de Harborworks

Harborworks, una terminal ficticia, mueve una ventana de atraque y reorganiza las operaciones vinculadas a ella, con un resumen de ocupación calculado junto al plan.

Ejemplos que funcionan