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. Vous pouvez également spécifier le fuseau horaire des champs de fenêtre horaire à l’aide de la liste déroulante Reference Time Zone (Fuseau horaire de référence) du ruban Route (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 la couche Dépôts et ordres est renseigné. Le fuseau horaire des champs de fenêtre horaire peut être spécifié lors de la création d’une couche d’optimisation des tournées de véhicules à 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. Vous pouvez également spécifier le fuseau horaire des champs de fenêtre horaire à l’aide de la liste déroulante Reference Time Zone (Fuseau horaire de référence) du ruban VRP. 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

Pour calculer une couche d’analyse d’itinéraires pour « Today" », les champs de fenêtre horaire et le paramètre Time of Day (Heure du jour) doivent être définis sur la valeur Today—12/30/1899 (Aujourd’hui - 30/12/1899). De même, pour calculer une couche d’optimisation des tournées de véhicules pour « Today », le paramètre Default Date (Date par défaut) doit être défini que la valeur Today—12/30/1899 (Aujourd’hui - 30/12/1899).

Si vous préférez effectuer le calcul pour un jour de la semaine, les champs de fenêtre horaire continuent à utiliser la valeur « Today » mais le paramètre Time of Day (Heure du jour) d’une couche d’analyse d’itinéraires et le paramètre Default Date (Date par défaut) d’une couche d’optimisation des tournées de véhicules doivent spécifier la date correspondante pour le jour de la semaine.

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 fournie par ses champs TimeWindowStart et TimeWindowEnd.

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

L’itinéraire peut commencer au point a à tout moment 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 52 secondes au point b, puis se poursuit à 9 h 10. Ce temps d’attente est stocké dans la propriété 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 8 secondes de trajet et 4 minutes et 52 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

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.