Ports et logistique
Planifier les postes à quai, les grues et le terminal
Un plan de quai, c’est une poignée de longs événements aux conséquences coûteuses. Les escales durent des heures ou des jours, les grues sont partagées entre elles, et une arrivée tardive décale la fenêtre de chaque escale qui suit. Le planificateur a besoin de tout le quai sous les yeux et du détail d’un seul quart à portée de geste.
De longues fenêtres, des équipements partagés, des arrivées mouvantes
Chaque escale occupe un poste à quai de l’accostage au départ, et il lui faut un poste assez long et assez profond pour le navire. Dans cette fenêtre, des portiques de quai et d’autres équipements sont affectés au traitement de la cargaison, et passent souvent d’un navire à l’autre quand l’un termine et que le suivant commence.
Les heures d’arrivée sont des estimations qui ne cessent de changer. Un navire retardé par la météo arrive dans une fenêtre qui chevauche désormais l’escale suivante. Certains ports ajoutent des fenêtres de marée qui limitent les moments où les navires à fort tirant d’eau peuvent entrer ou sortir, et les pilotes, les remorqueurs et les équipes de dockers ont leurs propres disponibilités.
L’attente coûte cher à tous les intéressés. Un navire au mouillage, un poste gardé vide ou une cargaison qui rate sa correspondance accroissent le risque de surestaries et de litiges : les planificateurs cherchent donc le changement qui perturbe le moins, pas simplement un changement qui tient.
Les décisions du plan de quai
- 01
Quel poste reçoit l’escale
Faire correspondre la longueur, le tirant d’eau et le type de cargaison du navire avec la longueur, la profondeur et l’équipement du poste, tout en respectant les fenêtres convenues avec les compagnies maritimes.
- 02
Combien de grues, et quand
Plus de grues raccourcissent l’escale, mais les retirent à d’autres navires. La répartition des grues détermine combien de temps le poste reste occupé.
- 03
Ce qu’une arrivée tardive déplace
Une escale retardée peut garder son poste et repousser la suivante, passer sur un autre poste ou attendre au mouillage. Chaque choix se répercute différemment dans le plan.
- 04
Tenir compte des fenêtres de marée
Les arrivées et départs des navires à fort tirant d’eau ne sont parfois possibles qu’autour de la pleine mer, ce qui contraint le début et la fin d’une escale, mais pas les heures entre les deux.
Modéliser le quai
Les lignes sont les postes et les équipements, les événements sont les escales et le travail qu’elles contiennent, et l’axe du temps couvre des jours, avec les heures à un niveau de zoom près.
- Ressources
- Regroupez les postes par terminal dans une arborescence de ressources, avec des colonnes pour la longueur et le tirant d’eau maximal. Les grues et autres équipements peuvent occuper un second volet de SchedulerPanes, qui partage l’axe du temps et le zoom tout en défilant verticalement de façon indépendante.
- Événements
- Une escale est un intervalle semi-ouvert sur plusieurs jours, de l’accostage au départ, avec le nom du navire, l’ETA et le statut comme champs personnalisés. Les affectations de grues sont des événements sur les lignes de grues, liés à leur escale pour que la relation reste visible quand l’un ou l’autre bouge.
- Échelle de temps
- Des cellules d’une heure avec des en-têtes de jour couvrent les prochains jours ; dézoomez vers les jours et les semaines pour la saison. Chargez les longs horizons à la demande avec createRangeLoader, qui demande des tranches à mesure que la vue se déplace et annule les requêtes qui en sortent.
- Règles
- Dans onEventMoving, refusez un poste trop court ou pas assez profond, à partir des attributs de la ressource, avec un message qui nomme la contrainte. Ombrez les fenêtres de marée et vérifiez que le début et la fin y tombent, puis alimentez la minimap avec l’occupation des postes ou les heures de grue par intervalle, pour que les journées chargées ressortent.
La vue de planification et les systèmes du terminal
- Des événements longs sur plusieurs jours, avec le détail horaire au zoom
- Des lignes de postes groupées et un volet séparé pour les équipements, sur un même axe du temps
- Des liens entre escales et opérations de grue
- Une minimap de la série d’occupation que calcule votre application
- Un chargement par plages avec annulation, et un rendu virtualisé pour les longs horizons
- Flux d’ETA, données des navires et intégration avec votre système d’exploitation de terminal
- L’optimisation de l’allocation des postes et de la répartition des grues, le cas échéant : la bibliothèque n’optimise pas
- Les tables de marée et les fenêtres qui en découlent
- La replanification des escales suivantes après un retard
- Surestaries, facturation et fenêtres contractuelles
- La coordination entre planificateurs, la persistance et l’audit
Exemples fonctionnels
Les pièges de la planification de quai
Des fenêtres de marée en cellules désactivées
Les cellules désactivées refusent tout événement qui les recouvre, alors qu’un navire peut rester à quai pendant la basse mer. Ombrez plutôt les fenêtres, et ne validez que les heures d’arrivée et de départ.
Transmettre directement des horodatages avec fuseau
Une chaîne avec décalage, comme 10:00:00+02:00, est convertie en heure d’horloge UTC. Convertissez les flux dans l’heure civile locale du port au sein de votre application, et transmettez des dates-heures simples.
Supposer qu’un retard se propage
Les opérations de grue liées ne bougent pas quand leur escale bouge. Décidez dans vos handlers s’il faut les décaler, et regroupez le changement pour qu’il puisse être annulé en une seule étape.
Charger toute la saison d’un coup
Des mois d’escales et d’affectations d’équipements se chargent mieux par plages, au fil du défilement, avec un serveur qui respecte les requêtes semi-ouvertes [start, end).
Questions
SuperScheduler peut-il optimiser l’allocation des postes à quai ?
Non. Il n’a aucun moteur d’allocation ni d’optimisation. Il affiche le plan produit par vos planificateurs ou votre solveur, permet aux planificateurs de le modifier et signale chaque changement pour que votre système le valide.
Comment afficher les fenêtres de marée sur un plan de quai ?
Colorez les cellules concernées dans onBeforeCellRender avec un fond ou une classe CSS, ou tracez des séparateurs aux bords des fenêtres. Vérifiez ensuite dans onEventMoving que le début et la fin de l’escale tombent dans une fenêtre, et refusez le déplacement avec un message dans le cas contraire.
Postes à quai et grues peuvent-ils partager un même axe du temps ?
Oui. SchedulerPanes, de super-scheduler/panes, empile plusieurs plannings avec un défilement horizontal, un zoom et une largeur d’en-tête de ligne partagés, et un défilement vertical indépendant. Les déplacements entre volets sont pris en charge, et les handlers indiquent le volet d’origine et le volet cible.
Combien d’escales la frise peut-elle gérer ?
Le rendu est toujours virtualisé : seul ce qui est visible est dessiné. Pour les longs horizons, chargez les événements par plages avec createRangeLoader plutôt que tous à la fois, et mesurez avec vos propres données, car la limite pratique dépend des événements, des lignes et des appareils.
Découvrez la démo Harborworks
Harborworks, un terminal fictif, déplace une fenêtre d’accostage et réorganise les opérations qui y sont liées, avec un résumé d’occupation calculé à côté du plan.
Exemples fonctionnels