Fenêtres horaires

Une fenêtre horaire correspond à la période entre une heure de début et une heure de fin, au cours de laquelle une localisation réseau telle qu'un arrêt dans une analyse des itinéraires doit être visitée par un itinéraire.

Deux couches d’analyse de réseau comprennent des fenêtres horaires : les couches d’analyse itinéraire et tournée de véhicules. Les deux tableaux suivants présentent une liste des classes d’analyse de réseau pour lesquelles vous pouvez définir des fenêtres horaires.

Champs de fenêtre horaire dans les couches d'analyse des itinéraires

Classe d'analyse de réseauChamp de fenêtre horaire

Arrêts

TimeWindowStart

TimeWindowEnd

Remarque :

Les fenêtres horaires sont utilisées si l’un des champs des fenêtres horaires (TimeWindowStart et TimeWindowEnd) dans la couche Arrêts est renseigné. Le fuseau horaire des champs de fenêtre horaire peut être spécifié lors de la création d’une couche d’analyse d’itinéraire à l’aide du paramètre Time Zone for Time Fields (Fuseau horaire des champs horaires) de la boîte de dialogue de l’outil de géotraitement Créer une couche d’analyse d’itinéraire. Pour mettre à jour le fuseau horaire des champs de fenêtre horaire sur une couche existante, utilisez la propriété timeZoneUsageForTimeFields de la classe RouteSolverProperties dans Python.

Champs de fenêtre horaire dans les couches d'optimisation des tournées de véhicules

Classe d'analyse de réseauChamp de fenêtre horaire

Ordres

TimeWindowStart

TimeWindowEnd

TimeWindowStart2

TimeWindowEnd2

Dépôts

TimeWindowStart

TimeWindowEnd

TimeWindowStart2

TimeWindowEnd2

Interruptions

TimeWindowStart

TimeWindowEnd

Il n’est pas nécessaire d’activer des propriétés dans la couche d’optimisation des tournées de véhicules pour rendre les fenêtres horaires disponibles ; elles sont toujours disponibles. Les classes Courses et Dépôts vous permettent de définir deux fenêtres horaires.

Remarque :

Les fenêtres horaires sont utilisées si l’un des champs des fenêtres horaires (TimeWindowStart et TimeWindowEnd) dans les couches Courses et Dépôts est renseigné. Le fuseau horaire des champs de fenêtre horaire peut être spécifié lors de la création d’une couche d’analyse d’itinéraire à l’aide du paramètre Time Zone for Time Fields (Fuseau horaire des champs horaires) de la boîte de dialogue de l’outil de géotraitement Créer une couche d’analyse de tournée de véhicules. Pour mettre à jour le fuseau horaire des champs de fenêtre horaire sur une couche existante, utilisez la propriété timeZoneUsageForTimeFields de la classe VehicleRoutingProblemSolverProperties dans Python.

Les objets d’itinéraire dans la tournée de véhicules disposent également de champs de fenêtre horaire : EarliestStartTime et LatestStartTime. Ils spécifient la période pendant laquelle un itinéraire peut commencer son trajet.

Utiliser des dates dans les fenêtres horaires

La portion date d’une fenêtre horaire indique si la fenêtre horaire se produit à une date spécifique, à un jour de la semaine ou à la date actuelle. Par exemple, si votre fenêtre horaire représente une heure de livraison, il pourrait s’agir d’une livraison unique programmée pour une date spécifique, d’une livraison régulière ayant lieu le mercredi ou d’une livraison programmée pour avoir lieu aujourd’hui, quel que soit le jour

Pour une fenêtre horaire d’une date spécifique, incluez simplement cette date lorsque vous renseignez les champs de fenêtre horaire. Dans les exemples de la section suivante, la fenêtre horaire se produit le 16 mars 2018.

Au lieu d'utiliser une date particulière, un jour de la semaine peut être spécifié à l'aide des dates suivantes :

  • Aujourd’hui - 12/30/1899
  • Dimanche - 12/31/1899
  • Lundi - 1/1/1900
  • Mardi - 1/2/1900
  • Mercredi - 1/3/1900
  • Jeudi - 1/4/1900
  • Vendredi - 1/5/1900
  • Samedi - 1/6/1900

La fenêtre horaire doit correspondre à la date spécifiée pour l’heure de la journée (pour une analyse d’itinéraire) ou à la date par défaut (pour une couche d’analyse de tournée de véhicules).

Exemple de fenêtre horaire

Pour mieux comprendre les fenêtres horaires, prenons l’exemple de quatre arrêts, a, b, c et d, pour lesquels vous recherchez un itinéraire. La fenêtre horaire de chaque arrêt est spécifiée par ses champs TimeWindowStart et TimeWindowEnd.

Exemple de quatre arrêts avec informations sur les fenêtres horaires

L’itinéraire peut partir du point a à n’importe quelle heure entre 8 h 00 et 9 h 00. Le point b ne doit toutefois pas être atteint avant 9 h 10. Comme indiqué ci-dessous, l’itinéraire atteint le point b à 9 h 05 et 8 secondes.

Heures de départ et d’arrivée

Le point b pouvant uniquement être visité entre 9 h 10 et 9 h 12, l’itinéraire effectue une pause de 4 minutes et 40 secondes au point b, puis se poursuit à 9 h 10. Ce temps d’attente est stocké dans le champ Wait_TravelTime de l’arrêt b sous la forme de 4,66 minutes, puis ajouté au temps total de l’itinéraire. Le champ Cumul_TraveTime pour un arrêt stocke le temps total nécessaire pour l’atteindre. Le temps de déplacement cumulé au point b est de 10 minutes (5 minutes et 20 secondes de trajet et 4 minutes et 40 secondes d’attente pour tenir compte de la fenêtre horaire de l’arrêt b).

Temps d’attente

L’itinéraire part de l’arrêt b à 9 h 10 et atteint l’arrêt c à 9 h 15 et 20 secondes. Cependant, la fenêtre horaire de l’arrêt c se situe entre 9 h 10 et 9 h 12. Il existe donc une infraction de 3 minutes et 20 secondes, stockée dans le champ Violation_TravelTime sous la forme 3,33 minutes, puisque l’itinéraire est incapable de respecter la fenêtre horaire de l’arrêt c.

Temps d’infraction

L’arrêt c est symbolisé par le symbole d’infraction horaire Symbole d’infraction horaire.

Les fenêtres horaires sont traitées comme une contrainte souple. Cela signifie que bien que le solveur tente de respecter les fenêtres horaires, il violera si nécessaire les fenêtres horaires de quelques arrêts pour les atteindre. Ceci est différent d’une contrainte dure selon laquelle aucun itinéraire vers l’arrêt affichant une infraction de fenêtre horaire n’est possible. Les fenêtres horaires dures ne sont pas prises en charge par la couche d’analyse d’itinéraire. Toutefois, vous pouvez les utiliser pour les fenêtres d’heure de course dans une couche d’analyse de tournée de véhicules en définissant le champ MaxViolationTime correspondant sur zéro.

Un solveur d’itinéraire tente de rechercher l’itinéraire de moindre coût à travers une série d’arrêts tout en respectant les restrictions sélectionnées sur le réseau, ainsi que toutes les fenêtres horaires. Si les infractions de fenêtres horaires sont inévitables, le calculateur essaie de réduire l'infraction horaire totale.