Das Geoverarbeitungswerkzeug Vehicle Routing Problem berechnen gibt die folgenden Tabellen und Feature-Classes aus: Stopps, nicht zugewiesene Stopps, Routen und Wegbeschreibung. In den folgenden Unterabschnitten finden Sie Beschreibungen der Ausgabetabellen und -Feature-Classes sowie der entsprechenden Feldattribute.
Routes-Feature-Class
Die Routes-Line-Feature-Class repräsentiert die Treiber, Vehicles und Vehicle Route-Pfade eines Vehicle Routing Problems. Der Standardname dieser Ausgabe-Feature-Class ist "Routen", Sie können ihn jedoch ändern, indem Sie den Parameter Ausgabe-Routenname (output_routes_name in Python) vor der Berechnung ändern.
ArcGIS weist dasselbe Koordinatensystem zu, das auch vom zugrunde liegenden Netzwerk-Dataset für die Routes-Feature-Class verwendet wird. Dies kann durch die Angabe eines Wertes für den Parameter Ausgabe-Koordinatensystem in den Umgebungseinstellungen gesteuert werden.
Im Folgenden werden die Feldnamen der Routes-Feature-Class aufgeführt und beschrieben.
Feldname | Beschreibung |
---|---|
ObjectID | Das vom System verwaltete ID-Feld. |
Name | Der Name der Route. |
Shape | Das Geometriefeld, das das Shape der Route angibt. Wählen Sie über den Parameter Routenlinien füllen (populate_route_lines in Python), ob dieses Feld gefüllt werden soll. Die Routes-Feature-Class wird immer während der Ausführung von Vehicle Routing Problem berechnen erstellt und mit Daten gefüllt. Der Parameter Routenlinien füllen (populate_route_lines in Python) ermöglicht Ihnen jedoch zu wählen, ob für die Linien-Features Shape-Feldwerte erstellt und gespeichert werden sollen. Indem keine Shape-Feldwerte ausgefüllt werden, wird der Berechnungsvorgang beschleunigt und der Umfang des Server-Client-Datenaustauschs verringert. Häufig wird es jedoch vorgezogen, Routen auf einer Karte darzustellen, wofür das Ausfüllen des Shape-Felds erforderlich wäre. |
ViolatedConstraints | Dieses Feld enthält eine Zusammenfassung von Beschränkungsverletzungen. Es wird nach einem Berechnungsvorgang festgelegt. Wenn eine Route zur Verletzung einer Einschränkung führt, kann dem Feld eine Kombination aus den unten aufgeführten Verletzungen zugewiesen werden: Detailinformationen:Der codierte Wert, der die Textbeschreibung darstellt, wird unten in der Liste in Klammern dargestellt. Beachten Sie, dass die codierten Werte Teil einer geometrischen Sequenz sind, die zunimmt, da der letzte Wert verdoppelt wird. Auf diese Weise können verschiedene Kombinationen von Regel-Verletzungen codiert werden. Zum Beispiel wird die Kombination von "Capacities überschritten" (2) und "Harte Routenzone" (128) als 130 (2 +128) codiert.
|
| Zeigt eine einzelne verletzte Beschränkung pro Feld an. Die Beschreibungen der Verletzungen werden in "ViolationConstraints" angezeigt.
|
OrderCount | Die Anzahl von Aufträgen, die der Route zugewiesen sind. |
TotalCost | Die gesamten Betriebskosten der Route, wobei es sich um die Summe der folgenden Feldwerte handelt:
|
RegularTimeCost | Die Kosten der regulären Arbeitszeit ohne unbezahlte Pausen. |
OvertimeCost | Die Kosten für Überstunden ohne unbezahlte Pausen. |
DistanceCost | Die Entfernungskosten-Komponente als Produkt der Feldwerte TotalDistance und CostPerUnitDistance. Dieser Feldwert wird auf NULL gesetzt, wenn vor der Berechnung kein Entfernungsattribut angegeben ist. |
TotalTime | Die Gesamtroutendauer. Diese umfasst Fahrzeiten sowie Durchführungs- und Wartezeiten bei Aufträgen, Depots und Pausen. Der Wert TotalTime ist die Summe der folgenden Feldwerte:
Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
TotalOrderServiceTime | Die Gesamtdurchführungszeit für alle Aufträge der Route. Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
TotalBreakServiceTime | Die Gesamtdurchführungszeit für alle Pausenzeiten der Route. Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
TotalTravelTime | Die Gesamtfahrzeit für die Route. Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
TotalDistance | Die Gesamtreisestrecke für die Route. Die Einheit für diesen Feldwert wird durch den Parameter Uhrzeitfeldeinheiten(distance_units für Python) angegeben. Dieser Feldwert wird auf NULL gesetzt, wenn vor der Berechnung kein Entfernungsattribut angegeben ist. |
StartTime | Die Anfangszeit für die Route. Die Route kann vor Beginn des Zeitfensters für das Startdepot beginnen. In diesem Fall ist beim Startdepot eine Wartezeit vorhanden. Wenn Verkehrsdaten verwendet werden, die mehrere Zeitzonen umfassen, wird die Zeitzone für diesen Tageszeitwert von dem Netzwerkelement übernommen, auf dem sich das Startdepot befindet. |
EndTime | Die Endzeit für die Route. Die Route endet bei Abschluss des Einsatzes am Enddepot. Wenn Verkehrsdaten verwendet werden, die mehrere Zeitzonen umfassen, wird die Zeitzone für diesen Tageszeitwert von dem Netzwerkelement übernommen, auf dem sich das Enddepot befindet. |
TotalWaitTime | Die Gesamtwartezeit für alle Aufträge, Depots und Pausen der Route. Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
TotalViolationTime | Der Gesamtzeitverstoß für alle Aufträge und Pausen der Route. Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
RenewalCount | Für eine Route mit Lagern zum Be-/Entladen entspricht dies der Anzahl der Stopps an Depots, bei denen ein Fahrzeug be- oder entladen wird. |
TotalRenewalServiceTime | Bei einer Route mit Lagern zum Be-/Entladen ist dies die Gesamtdurchführungszeit für alle Stopps zum Be- und Entladen auf der Route. Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
Directions-Feature-Class
"Directions" ist eine Line-Feature-Class, die schrittweise Anleitungen enthält, um Fahrern die Verfolgung ihrer eingegebenen Routen zu erleichtern. Der Standardname dieser Ausgabe-Feature-Class lautet "Directions". Sie können ihn jedoch ändern, indem Sie den Parameter Ausgabename für Wegbeschreibung (output_directions_name in Python) vor der Berechnung ändern. Im Übrigen erstellt das Werkzeug Vehicle Routing Problem berechnen stets die Directions-Feature-Class. Sie können mithilfe des Parameters Wegbeschreibungen füllen (populate_directions in Python) wählen, ob die Feature-Class während der Berechnung mit Features gefüllt werden soll. Standardmäßig wird sie nicht gefüllt. Wenn Sie keine Wegbeschreibungen benötigen, können Sie die Berechnungszeiten sowie die von Servern auf Clients übertragene Datenmenge erheblich reduzieren.
ArcGIS weist der Directions-Feature-Class dasselbe Koordinatensystem zu, das auch vom zugrunde liegenden Netzwerk-Dataset verwendet wird. Dies kann durch die Angabe eines Wertes für den Parameter Ausgabe-Koordinatensystem in den Umgebungseinstellungen gesteuert werden.
Im Folgenden werden die Feldnamen der Directions-Feature-Class aufgeführt und beschrieben.
Feldname | Beschreibung |
---|---|
ObjectID | Das vom System verwaltete ID-Feld. |
Shape | Das Geometriefeld, das das Shape der Linien angibt. |
RouteName | Der Name der Route, auf die die Fahraktion angewendet wird. |
ArriveTime | Die Uhrzeit, an der die jeweilige Fahraktion initiiert wird. Wenn die Route mehrere Tage umfasst, werden das Datum und die Uhrzeit angezeigt. |
Type | Dieses Feld ist für erfahrene Benutzer, die den Wegbeschreibungstext anpassen möchten. Für die Anforderungen der meisten Benutzer kann dieses Feld ignoriert und stattdessen das Feld Text verwendet werden. "Type" bezieht sich auf eine Konstante in einer von zwei Enumerationen: esriDirectionsManueverType oder esriDirectionsStringType. (Weitere Informationen zu den Enumerationen, auf die sich der Wert für Type bezieht, finden Sie in der Feldbeschreibung zu SubItemType.) |
SubItemType | Dieses Feld ist für erfahrene Benutzer, die den Wegbeschreibungstext anpassen möchten. Für die Anforderungen der meisten Benutzer kann dieses Feld ignoriert und stattdessen das Feld Text verwendet werden. SubItemType wird in Verbindung mit Type verwendet, um die im Feld Text angezeigte Wegbeschreibung zu erstellen. Das Feld SubItemType gibt an, ob sich das Feld Type auf den Wert einer Konstante in der Enumeration esriDirectionsManueverType oder esriDirectionsStringType bezieht.
|
Text | Eine Textbeschreibung der Wegbeschreibung. |
ElapsedTime | Die verstrichene Zeit zwischen dem Beginn der aktuellen Wegbeschreibung und dem Beginn der nächsten bzw. dem Ende der Route für die letzte Wegbeschreibung. Einige Wegbeschreibungen enthalten zusätzliche Datensätze für Durchführungszeit, Zeitverstöße usw. In diesen Fällen wird die verstrichene Zeit für jeden Datensatz repliziert. Um die insgesamt verstrichene Zeit zu berechnen, wählen Sie die Datensätze mit dem Type-Wert 1 aus, und addieren Sie die Datensätze. Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
DriveDistance | Die Entfernung zwischen der Position der aktuellen Wegbeschreibung und der nächsten bzw. dem Ende der Route für die letzte Wegbeschreibung. Dieser Wert ist bei Wegbeschreibungen für Standorte, die mit dem Beginn des nächsten Routenteils identisch sind, 0. |
Tabelle "Stopps"
Die Tabelle "Stopps" bietet Informationen über Stopps bei Depots, Aufträgen und Unterbrechungen. Die Information umfasst die Routen, auf denen die Stopps erfolgen, die Ankunfts- und Abfahrtszeiten sowie die Reihenfolge der Stopps.
Der Standardname dieser Ausgabetabelle ist "Stopps". Sie können sie jedoch umbenennen, indem Sie den Parameter Ausgabe-Stoppname (output_stops_name in Python) vor der Berechnung ändern.
Im Folgenden werden die Feldnamen der Tabelle "Stopps" aufgeführt und beschrieben.
Feldname | Beschreibung |
---|---|
ObjectID | Das vom System verwaltete ID-Feld. |
Name | Der Name des Stopps. Dies ist ein Fremdschlüssel für den Namen des Depots, des Auftrags oder der Unterbrechung in den Eingabe-Feature-Sets und im Recordset. Das Eingabe-Feature- oder -Recordset wird durch das Feld StopType angegeben. |
PickupQuantities | Größe der Fracht oder Anzahl der Personen, die an einem Stopp abgeholt werden sollen. Wenn mehrere Dimensionen an einen Stopp geliefert werden, wird die entsprechende Anzahl jeweils durch ein Leerzeichen getrennt. Die Einheiten für dieses Feld werden nicht gespeichert. Sie sollten die Einheiten gemäß der Eingabe im Feld Quantities der Eingaberouten sowie in den Feldern PickupQuantities und DeliveryQuantities der eingegebenen Aufträge interpretieren. (Alle diese Felder müssen mit denselben Einheiten und den entsprechenden Dimensionen angegeben sein.) |
DeliveryQuantities | Größe der Fracht oder Anzahl der Personen, die an einen Stopp geliefert werden sollen. Wenn mehrere Dimensionen an einen Stopp geliefert werden, wird die entsprechende Anzahl jeweils durch ein Leerzeichen getrennt. Die Einheiten für dieses Feld werden nicht gespeichert. Sie sollten die Einheiten gemäß der Eingabe im Feld Quantities der Eingaberouten sowie in den Feldern PickupQuantities und DeliveryQuantities der eingegebenen Aufträge interpretieren. (Alle diese Felder müssen mit denselben Einheiten und den entsprechenden Dimensionen angegeben sein.) |
StopType | Gibt an, ob der Stopp ein Depot, einen Auftrag oder eine Unterbrechung darstellt. Das Feld speichert einen codierten Wert, der sich wie folgt interpretieren lässt:
|
RouteName | Der Name der Route, auf der der Stopp erfolgt. |
Sequence | Die relative Reihenfolge, in der die zugeteilte Route den Stopp anfährt. Durch Sortierung nach den Feldern RouteName und Sequence wird für jede Route eine geordnete Liste der Stopps erstellt. |
FromPreviousTravelTime | Die verstrichene Fahrtzeit vom vorherigen Stopp der Route zum aktuellen Stopp. Die Einheit für diesen Feldwert wird mithilfe des Parameters Uhrzeitfeldeinheiten (time_units in Python) angegeben. |
FromPreviousDistance | Die Entfernung auf der Route vom vorherigen Stopp der Route zum aktuellen Stopp. Die Einheit für diesen Feldwert wird durch den Parameter Uhrzeitfeldeinheiten(distance_units für Python) angegeben. |
ArriveCurbApproach | Gibt an, auf welcher Seite des Fahrzeugs sich die Bordsteinkante bei der Ankunft am Stopp befindet. |
DepartCurbApproach | Gibt an, auf welcher Seite des Fahrzeugs sich die Bordsteinkante bei der Abfahrt vom Stopp befindet. |
ArriveTime | Uhrzeit für die Ankunft am Stopp auf der Route. Wenn das Netzwerk-Dataset mit Zeitzonen konfiguriert ist, entspricht der Tageszeitwert der Zeitzone, in der sich der Stopp befindet. Andernfalls entspricht er der auf dem Computer konfigurierten Zeitzone, mit dem die Analyse berechnet wird. |
DepartTime | Uhrzeit für die Abfahrt vom Stopp auf der Route. Wenn das Netzwerk-Dataset mit Zeitzonen konfiguriert ist, entspricht der Tageszeitwert der Zeitzone, in der sich der Stopp befindet. Andernfalls entspricht er der auf dem Computer konfigurierten Zeitzone, mit dem die Analyse berechnet wird. |
ArriveTimeUTC | Uhrzeit für die Ankunft am Stopp auf der Route. Dieser Wert wird in koordinierter Weltzeit (Coordinated Universal Time, UTC) angegeben. Dieses Feld ist NULL, wenn keine Zeitzonen für das Netzwerk-Dataset konfiguriert sind. |
DepartTimeUTC | Uhrzeit für die Abfahrt vom Stopp auf der Route. Dieser Wert wird in koordinierter Weltzeit (Coordinated Universal Time, UTC) angegeben. Dieses Feld ist NULL, wenn keine Zeitzonen für das Netzwerk-Dataset konfiguriert sind. |
WaitTime | Die Wartezeit oder der Aufenthalt am Stopp. Beispielsweise fällt eine Wartezeit an, wenn auf einer Route bei einem Auftrag gewartet werden muss, bis sich ein Zeitfenster öffnet. |
ViolationTime | Die vom Ende des Zeitfensters für den Stopp bis zur Ankunft des Fahrzeugs für die Route verstrichene Zeit. |
Visualisieren von Stopps
Die Tabelle "Stopps" ist keine Feature-Class, weshalb Sie die Tabelle nicht einfach einer Karte hinzufügen können, um zu sehen, wo die Stopps liegen. Stattdessen müssen Sie zusätzliche Schritte durchführen, um Stopps auf einer Karte zu visualisieren. (Im Folgenden erhalten Sie entsprechende Anleitungen.) Sie empfinden die Vorgehensweise für die Anzeige von Stopps einer Route auf einer Karte womöglich als umständlich. Bedenken Sie jedoch, dass dieses Werkzeug zur Erstellung von VRP-Web-Services konzipiert ist. Die Ausgabe wird dabei so kurz wie möglich gehalten, um die Verarbeitungszeit durch den Server und die Datenübertragung zu minimieren. Dennoch ist die Ausgabe nicht zu knapp. Sie enthält immer noch die wesentlichen Informationen, die Sie zur Visualisierung von Stopps als Punkt-Features benötigen.
Wenn Sie beispielsweise sehen möchten, wo bei Aufträgen Stopps vorhanden sind, verknüpfen Sie die Tabelle "Stopps" mit dem ursprünglichen Auftrags-Feature-Set, das als Eingabe verwendet wurde. Sie können diese Datasets über die Felder StopType und Name in der Tabelle "Stopps" sowie das Feld Name im Auftrags-Feature-Set auswählen und verbinden. Eine ähnliche Methode können Sie für die Anzeige der Stopps bei Depots verwenden.
Tipp:
Solve Vehicle Routing Problem erstellt mehrere Eingabe-Feature-Sets, einschließlich der Aufträge- und Depots-Feature-Sets. Während das Werkzeug rechnet, werden diese In-Memory-Feature-Sets von ArcMap entfernt. Sie können sie jedoch zurückholen. Führen Sie hierzu die folgenden Schritte aus:
- Öffnen Sie das Fenster Ergebnisse im Menü Geoverarbeitung.
- Navigieren Sie im Fenster Ergebnisse zu den Ergebnissen des Vorgangs, von denen Sie ein Feature-Set wünschen.
- Blenden Sie das entsprechende Ergebnis in Vehicle Routing Problem berechnen ein.
- Blenden Sie Eingaben ein.
- Klicken Sie mit der rechten Maustaste auf das Feature-Set, das Sie ansehen möchten, und wählen Sie Zur Anzeige hinzufügen. Das Feature-Set wird in der Karte und im Inhaltsverzeichnis angezeigt.
- Um zu sehen, wo die Daten gespeichert sind, klicken Sie im Inhaltsverzeichnis auf die Schaltfläche Nach Quelle auflisten.
Im Unterschied zu Aufträgen und Depots werden Pausenzeiten nicht mit einem Eingabe-Feature-Set verknüpft. Daher ist zu deren Visualisierung eine andere Methode erforderlich. Sie können Wegbeschreibungen in der Analyse generieren, die Linien auswählen, die Features darstellen, und sie mithilfe des Werkzeugs Feature-Stützpunkte in Punkte in Punkte umwandeln.
Tabelle "Nicht zugewiesene Stopps"
In der Tabelle "Nicht zugewiesene Stopps" werden die Aufträge aufgelistet, die auf keiner Route besucht werden konnten. Ebenfalls angegeben wird, warum ein Stopp nicht besucht werden konnte, damit Sie das Problem beheben können.
Der Standardname dieser Ausgabetabelle ist "Stopps". Sie können sie jedoch umbenennen, indem Sie den Parameter Name von nicht zugewiesenen Ausgabe-Stopps (output_unassigned_stops_name in Python) vor der Berechnung ändern.
Im Folgenden werden die Feldnamen der Tabelle "Stopps" aufgeführt und beschrieben.
Feldname | Beschreibung |
---|---|
ObjectID | Das vom System verwaltete ID-Feld. |
StopType | Gibt an, ob der Stopp ein Depot, einen Auftrag oder eine Unterbrechung darstellt. Das Feld speichert einen codierten Wert, der sich wie folgt interpretieren lässt:
|
Name | Der Name des Stopps. Dies ist ein Fremdschlüssel für den Namen des Depots, des Auftrags oder der Unterbrechung in den Eingabe-Feature-Sets und im Recordset. Das Eingabe-Feature- oder -Recordset wird durch das Feld StopType angegeben. |
ViolatedConstraints | Dieses Feld enthält eine Zusammenfassung von Beschränkungsverletzungen. Es wird nach einem Berechnungsvorgang festgelegt. Wenn eine Einschränkung verletzt wird, kann dem Feld eine Kombination aus den unten aufgeführten Verstößen zugewiesen werden: Detailinformationen:Der codierte Wert, der die Textbeschreibung darstellt, wird unten in der Liste in Klammern dargestellt. Beachten Sie, dass die codierten Werte Teil einer geometrischen Sequenz sind, die zunimmt, da der letzte Wert verdoppelt wird. Auf diese Weise können verschiedene Kombinationen von Regel-Verletzungen codiert werden. Zum Beispiel wird die Kombination von "Capacities überschritten" (2) und "Harte Routenzone" (128) als 130 (2 +128) codiert.
|
| Zeigt eine einzelne verletzte Beschränkung pro Feld an. Die Beschreibungen der Verletzungen werden in "ViolationConstraints" angezeigt.
|
Status | Dieses Feld wird von einer Domäne von Werten eingeschränkt, die unten aufgeführt ist (ihre codierten Werte werden in Klammern angegeben).
|