Zusammenfassung
Dieser ArcGIS Online-Service findet die Lösung für ein Vehicle Routing Problem (VRP) zur Ermittlung der besten Route für eine Fahrzeugflotte. EditVehicleRoutingProblem ähnelt dem SolveVehicleRoutingProblem, es ist jedoch vorrangig für die Vornahme einzelner geringfügiger Änderungen an den Ergebnissen eines VRP oder für die Lösung oder Wiederholung kleiner VRP-Analysen von lediglich zwei Routen vorgesehen.
Ein Dispatcher, der eine Fahrzeugflotte verwaltet, muss häufig Entscheidungen zur Streckenführung der Fahrzeuge treffen. Hierzu gehören die optimale Zuweisung einer Gruppe von Kunden zu einer Fahrzeugflotte sowie das Festlegen der Reihenfolge und der Zeiten von Besuchen bei Kunden. Durch das Lösen dieser VRPs soll ein hohes Maß an Kundenzufriedenheit erreicht werden. Dies erfolgt durch die Beachtung von Zeitfenstern, während gleichzeitig die Gesamtbetriebskosten und Investitionskosten für jede Route möglichst gering gehalten werden. Die Einschränkungen bestehen im Durchführen der Routen mit den verfügbaren Ressourcen und innerhalb der zeitlichen Grenzen, die durch Arbeitsschichten der Fahrer, Fahrgeschwindigkeit und Zusagen an Kunden bedingt sind.
Mit diesem Service können Lösungen für diese komplexen Tasks der Fahrzeugflottenverwaltung ermittelt werden.
Betrachten Sie folgendes Beispiel: Waren müssen von einem zentralen Lager an Lebensmittelgeschäfte geliefert werden. Am Lager ist eine Flotte von drei Lkw verfügbar. Das Lager ist nur innerhalb eines bestimmten Zeitfensters (von 8 bis 17 Uhr) geöffnet,und innerhalb dieser Zeit müssen alle Lkw zum Lager zurückkehren. Die Kapazität jedes Lkw beträgt 7.500 kg, wodurch die Menge der vom Lkw zu transportierenden Waren begrenzt ist. Jedes Geschäft hat einen Bedarf an einer bestimmten Menge an Waren (in Kilogramm), die geliefert werden müssen, und für jedes Geschäft gelten Zeitfenster, die den Zeitraum für Lieferungen begrenzen. Außerdem darf der Fahrer nur acht Stunden pro Tag arbeiten, er benötigt eine Mittagspause, und wird für die Zeit zum Fahren und Beliefern der Geschäfte bezahlt. Das Ziel ist das Ermitteln eines Routenplans für jeden Fahrer, bei der die Lieferungen so durchgeführt werden können, dass alle Anforderungen für die Durchführung der Lieferungen erfüllt werden und die vom Fahrer für eine Route aufgebrachte Zeit minimiert wird. In der Abbildung unten werden drei Routen dargestellt, die durch das Lösen des oben beschriebenen Vehicle Routing Problem ermittelt wurden.
Weitere Informationen zur Ausgabe des Werkzeugs "Vehicle Routing Problem bearbeiten"
Abbildung
Verwendung
-
Die Werkzeuge EditVehicleRoutingProblem und SolveVehicleRoutingProblem erstellen Routen für Flottenfahrzeuge, die viele Ausliefer-, Abhol- oder Service-Aufträge abwickeln müssen. Dieses Werkzeug wird im Synchronmodus ausgeführt und ist für schnelle Analysen (unter 10 Sekunden) hervorragend geeignet, nämlich für kleinere Vehicle Routing Probleme oder die Bearbeitung größerer Probleme. Für die Lösung größerer Probleme, für die höhere Grenzwerte als die unten aufgeführten gelten, ist SolveVehicleRoutingProblem besser geeignet.
-
EditVehicleRoutingProblem verwenden Sie am besten für die Verarbeitung von bis zu 100 Aufträgen und 2 Routen. Für eine höhere Zahl von Aufträgen oder Routen hält die VehicleRoutingProblem-Toolbox das Werkzeug SolveVehicleRoutingProblem bereit.
Sie können bis zu 250 Punkt-Barrieren hinzufügen. Sie können beliebig viele Linien- oder Polygon-Barrieren hinzufügen, wobei die Linien-Barrieren nicht mehr als 500 Straßen-Features und die Polygon-Barrieren nicht mehr als 2.000 Features schneiden dürfen.
Zur Beschleunigung der Berechnung können Sie zwar die Straßenhierarchie verwenden, doch das Ergebnis dürfte dann eher suboptimal sein.
-
Unabhängig davon, ob der Parameter "use_hierarchy_in_analysis" aktiviert ist (d. h. auf "True" gesetzt), wird die Hierarchie immer verwendet, wenn die geradlinige Entfernung zwischen Aufträgen oder Depots bzw. zwischen Aufträgen und Depots 50 Meilen (80,46 km) überschreitet.
-
Die geradlinige Entfernung zwischen Aufträgen oder Depots darf nicht größer sein als 50 Meilen (80,46 Kilometer), wenn für travel_mode die Option Gehen oder wenn die Option Benutzerdefiniert ausgewählt wurde und die Einschränkung Gehen verwendet wird.
Ist ein Eingabepunkt von der nächsten passierbaren Straße weiter als 12,42 Meilen (20 Kilometer) entfernt, wird der Punkt aus der Analyse ausgeschlossen.
Dieses Werkzeug ist zur Ausführung in ArcGIS Pro, ArcMap, ArcGlobe und ArcScene vorgesehen, nicht jedoch in ArcCatalog.
Syntax
EditVehicleRoutingProblem_naagol (orders, depots, routes, breaks, time_units, distance_units, {analysis_region}, {default_date}, {uturn_policy}, {time_window_factor}, {spatially_cluster_routes}, {route_zones}, {route_renewals}, {order_pairs}, {excess_transit_factor}, {point_barriers}, {line_barriers}, {polygon_barriers}, {use_hierarchy_in_analysis}, {restrictions}, {attribute_parameter_values}, {populate_route_lines}, {route_line_simplification_tolerance}, {populate_directions}, {directions_language}, {directions_style_name}, {travel_mode}, {impedance}, {time_zone_usage_for_time_fields}, {save_output_layer}, {overrides}, {save_route_data})
Parameter | Erläuterung | Datentyp |
orders | Geben Sie einen oder mehrere Aufträge an (bis zu 100). Das sind die Positionen, die bei der Vehicle Routing Problem-Analyse (VRP) für die Routenerstellung berücksichtigt werden sollen. Ein Auftrag kann eine Lieferung (z. B. eine Möbellieferung), eine Abholung (z. B. die Abholung eines Passagiers durch einen Airport Shuttle-Bus) oder eine Art von Service oder Prüfung (z. B. das Zurückschneiden eines Baumes oder die Prüfung eines Gebäudes) repräsentieren. Bei der Angabe von Aufträgen können Sie mithilfe von Attributen deren jeweilige Eigenschaften, darunter Name oder Durchführungszeit, festlegen. Für die Aufträge können folgende Attribute angegeben werden: ObjectID: Das vom System verwaltete ID-Feld. Name: Der Name des Auftrags. Der Name muss eindeutig sein. Wenn kein Name angegeben wird, wird zum Zeitpunkt der Berechnung automatisch ein Name erstellt. ServiceTime: Diese Eigenschaft gibt an, wie viel Zeit am Netzwerkstandort verbracht wird, wenn die Route zu ihm führt. Das heißt, in ihr wird der Wert für die Impedanz des Netzwerkstandorts gespeichert. Ein 0 oder NULL-Wert weist darauf hin, dass der Netzwerkstandort keine Durchführungszeit erfordert. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. TimeWindowStart1: Die Anfangszeit des ersten Zeitfensters für den Netzwerkstandort. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass keine Anfangszeit vorhanden ist. Ein Zeitfenster gibt nur an, wann ein Fahrzeug bei einer Lieferung ankommen kann. Es gibt nicht an, wann die Durchführungszeit abgeschlossen sein muss. Wenn die Durchführungszeit und das Abfahren des Fahrzeugs vor Ablauf des Zeitfensters berücksichtigt werden sollen, subtrahieren Sie "ServiceTime" vom Feld "TimeWindowEnd1". Die Zeitfensterfelder können einen reinen Uhrzeitwert oder einen Wert für Datum und Uhrzeit enthalten. Wenn ein Zeitfeld, z. B. TimeWindowStart1, einen reinen Uhrzeitwert enthält (z. B. 8:00 Uhr), wird vorausgesetzt, dass als Datum das vom Parameter "Default Date" angegebene Datum verwendet wird. Wenn Sie Datums- und Uhrzeitwerte verwenden (z. B. 7/11/2010 8:00 Uhr), können Sie Zeitfenster über mehrere Tage festlegen. Werden bei der Lösung eines Problems mehrere Zeitzonen erfasst, so beziehen sich die in den Zeitfenstern jedes Auftrags angegebenen Werte auf die Zeitzone, in der sich der Auftrag befindet. TimeWindowEnd1: Die Endzeit des ersten Zeitfensters für den Netzwerkstandort. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass keine Endzeit vorhanden ist. TimeWindowStart2: Die Anfangszeit des zweiten Zeitfensters für den Netzwerkstandort. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass kein zweites Zeitfenster vorhanden ist. Wenn das erste Zeitfenster gemäß den Feldern "TimeWindowStart1" und "TimeWindowEnd1" NULL ist, muss das zweite Zeitfenster ebenfalls NULL sein. Wenn es sich bei beiden Fenstern um Nicht-NULL-Fenster handelt, können sie nicht überlappen. Außerdem muss das zweite Zeitfenster auf das erste folgen. TimeWindowEnd2: Die Endzeit des zweiten Zeitfensters für den Netzwerkstandort. Dieses Feld kann einen NULL-Wert enthalten. Wenn "TimeWindowStart2" und "TimeWindowEnd2" beide NULL sind, gibt es kein zweites Zeitfenster. Wenn "TimeWindowStart2" nicht NULL ist, aber "TimeWindowEnd2" NULL ist, gibt es ein zweites Zeitfenster, das eine Startzeit, aber keine Endzeit hat. Dies ist zulässig. MaxViolationTime1: Eine Zeitfensterverletzung liegt vor, wenn die Ankunftszeit nach dem Ende eines Zeitfensters liegt. Dieses Feld gibt den maximal zulässigen Zeitverstoß für das erste Zeitfenster des Auftrags an. Es darf den Wert 0, jedoch keinen negativen Wert enthalten. Der Wert 0 gibt an, dass kein Verstoß gegen das erste Zeitfenster des Auftrags zulässig ist, d. h. das erste Zeitfenster ist ein sog. "hartes" Zeitfenster. Ein NULL-Wert bedeutet jedoch auch, dass der zulässige Zeitverstoß unbegrenzt ist. Ein Wert ungleich 0 gibt die maximale Verspätung an. Beispielsweise kann ein Fahrzeug bis zu 30 Minuten nach dem Ende des ersten Zeitfensters bei einem Auftrag ankommen. Die Einheit für diesen Feldwert wird mithilfe des Parameters "Uhrzeitfeldeinheiten" angegeben. Zeitfensterverletzungen können vom Solver verfolgt und gewichtet werden. Daher können Sie für den VRP-Solver eine von drei Strategien festlegen:
Wenn Sie für den Parameter "Time Window Violation Importance" eine Gewichtung zuweisen, wählen Sie letztendlich eine dieser drei Strategien aus. Der Solver gibt jedoch in jedem Fall einen Fehler zurück, wenn der für "MaxViolationTime1" festgelegte Wert überschritten wird. MaxViolationTime2: Der maximal zulässige Zeitverstoß für das zweite Zeitfenster des Auftrags. Dieses Feld entspricht dem Feld "MaxViolationTime1". InboundArriveTime: Legt fest, wann der am Ort des Auftrags abzuliefernde Gegenstand am Startdepot bereit ist. Der Auftrag kann einer Route nur dann zugewiesen werden, wenn die eingehende Ankunftszeit dem letzten Startzeitwert der Route vorausgeht. Auf diese Weise kann die Route das Depot nicht verlassen, bevor der Liefergegenstand bereit ist, in das Depot geladen zu werden. Mit diesem Feld können Szenarien mit Umladungen eingehender Lieferungen modelliert werden. Beispiel: Für einen Auftrag sind spezielle Materialien erforderlich, die derzeit nicht im Depot verfügbar sind. Die Materialien werden von einem anderen Standort versendet und erreichen das Depot um 11:00 Uhr. Um sicherzustellen, dass eine Route, die den Ort vor dem Eintreffen der Lieferung verlässt, dem Auftrag nicht zugewiesen wird, wird die eingehende Ankunftszeit des Auftrags auf 11:00 Uhr festgelegt. Die speziellen Materialien treffen um 11:00 Uhr ein, werden auf das Fahrzeug geladen und das Fahrzeug verlässt das Depot, um die ihm zugewiesenen Orte des Auftrags anzufahren. Anmerkungen:
OutboundDepartTime: Legt fest, wann der am Ort des Auftrags abzuholende Liefergegenstand das End-Depot erreichen muss. Der Auftrag kann einer Route nur dann zugewiesen werden, wenn die Route den Ort des Auftrags anfahren kann und dessen End-Depot vor der angegebenen ausgehenden Abfahrtzeit erreicht. Mit diesem Feld können Szenarien mit Umladungen ausgehender Lieferungen modelliert werden. Beispiel: Eine Transportfirma schickt Lieferwagen los, um Pakete von Aufträgen abzuholen und sie zu einem Depot zu bringen. Von dort aus werden sie auf dem Weg zu ihrem Endziel zu anderen Einrichtungen weitertransportiert. Täglich um 15:00 Uhr stoppt ein Sattelschlepper am Depot, um die Pakete mit hoher Priorität abzuholen und sie direkt zu einer zentralen Verarbeitungsstation zu bringen. Um eine Verzögerung der Pakete mit hoher Priorität bis zur 15:00 Uhr-Fahrt des folgenden Tages zu vermeiden, lässt die Transportfirma die Pakete mit hoher Priorität an den Auftragsorten von Lieferwagen abholen und vor Ablauf der 15:00 Uhr-Frist zum Depot bringen. Dies erfolgt durch Einstellen der ausgehenden Abfahrtzeit auf 15:00 Uhr. Anmerkungen:
DeliveryQuantities: Die Größe der Lieferung. Sie können die Größe in jeder beliebigen Dimension, wie Gewicht, Volumen oder Menge, angeben. Sie können sogar mehrere Dimensionen, wie beispielsweise Gewicht und Volumen, angeben. Geben Sie Liefermengen ohne die Angabe von Einheiten ein. Beispiel: Wenn ein 135 Kilogramm schwerer Artikel geliefert werden muss, geben Sie 135 ein. Sie müssen daran denken, dass der Wert in Tonnen angegeben ist. Wenn Sie mehrere Maße angeben, trennen Sie die numerischen Werte mit Leerzeichen. Wenn Sie beispielsweise das Gewicht und Volumen einer Lieferung mit einem Gewicht von 900 Kilogramm und einem Volumen von 3 Kubikmetern erfassen, geben Sie 900 3 ein. Sie müssen sich erneut die Einheiten merken, in diesem Fall Kilogramm und Kubikmeter. Sie müssen sich ferner merken, in welcher Abfolge die Werte und ihre entsprechenden Einheiten eingegeben werden. Stellen Sie sicher, dass Kapazitäten für Routen und DeliveryQuantities sowie PickupQuantities für Aufträge auf die gleiche Weise angegeben werden. Das bedeutet, dass die Werte sich in denselben Einheiten befinden müssen, und dass die Dimensionen für alle Parameter in derselben Reihenfolge aufgelistet werden müssen, wenn Sie mehrere Dimensionen verwenden. Wenn Sie Gewicht in Kilogramm gefolgt von einem Volumen in Kubikmeter für DeliveryQuantities angeben, müssen die Kapazität der Routen und die PickupQuantities der Aufträge auf die gleiche Weise angegeben werden: Gewicht in Kilogramm, gefolgt von Volumen in Kubikmeter. Wenn unterschiedliche Einheiten verwendet werden oder die Reihenfolge geändert wird, erhalten Sie unerwünschte Ergebnisse, ohne dass eine Warnmeldung ausgegeben wird. Eine leere Zeichenfolge oder ein NULL-Wert gibt an, dass alle Dimensionen null sind. Wenn die Anzahl der Werte in der Zeichenfolge geringer als die Kapazitätszahl oder die Anzahl der verfolgten Dimensionen ist, werden die restlichen Werte als Nullen behandelt. Für "DeliveryQuantities" sind negative Werte nicht zulässig. PickupQuantities: Die Größe der Abholung. Sie können die Größe in jeder beliebigen Dimension, wie Gewicht, Volumen oder Menge, angeben. Sie können sogar mehrere Dimensionen, wie beispielsweise Gewicht und Volumen, angeben. Sie können jedoch keine negativen Werte verwenden. Dieses Feld entspricht dem Feld "DeliveryQuantities" für Aufträge. Bei einem Austauschbesuch kann ein Auftrag Werte für "DeliveryQuantities" und "PickupQuantities" aufweisen. Revenue: Die generierten Einnahmen, wenn der Auftrag in einer Lösung enthalten ist. Dieses Feld darf einen NULL-Wert (ein NULL-Wert steht für Einnahmen in Höhe von 0), jedoch keinen negativen Wert enthalten. "Revenue" wird beim Optimieren des Zielfunktionswertes einbezogen, ist jedoch nicht Bestandteil der Betriebskosten für die Lösung. Das bedeutet, dass das Feld "TotalCost" in der Klasse "Routen" niemals "Revenue" enthält. Jedoch wird für "Revenue" die relative Gewichtung der Ausführung von Aufträgen berücksichtigt. SpecialtyNames: Eine durch Leerzeichen getrennte Zeichenfolge mit den Namen der für den Auftrag erforderlichen Besonderheiten. Ein NULL-Wert gibt an, dass der Auftrag keine Besonderheiten erfordert. Die Schreibweise der Besonderheiten in den Klassen "Orders" und "Routes" muss exakt übereinstimmen, sodass der VRP-Solver sie verknüpfen kann. Um die Bedeutung und Funktionsweise von Besonderheiten zu veranschaulichen, nehmen Sie an, dass eine Firma, die Grünanlagen pflegt und Baumschnittarbeiten durchführt, für einige Aufträge ein Fahrzeug mit einem Hubsteiger benötigt, um große Bäume zu beschneiden. Das Unternehmen gibt für diese Aufträge Hubsteiger in das Feld "SpecialtyNames" ein, um auf diese besondere Anforderung hinzuweisen. Für die anderen Aufträge bleibt der Wert des Feldes "SpecialtyNames " NULL. Entsprechend gibt die Firma Hubsteiger auch in das Feld "SpecialtyNames" von Routen ein, die von Fahrzeugen mit hydraulischen Auslegern befahren werden. Für die anderen Routen bleibt der Wert des Feldes NULL. Zum Zeitpunkt der Berechnung weist der VRP-Solver jeder Route Aufträge ohne besondere Anforderungen zu, er weist jedoch Aufträge, die Fahrzeuge mit Hubsteiger erfordern, nur den Routen zu, die darüber verfügen. AssignmentRule: Dieses Feld gibt die Regel zum Zuweisen des Auftrags zu einer Route an. Sie ist durch eine Domäne von Werten eingeschränkt, die unten aufgeführt sind. (Verwenden Sie nicht den Namen in Klammern, sondern den numerischen Code.)
Dieses Feld darf keinen NULL-Wert enthalten. CurbApproach: Gibt die Richtung an, in der ein Fahrzeug beim Auftrag ankommt bzw. von ihm wegfährt. Der Feldwert wird als eine der nachfolgenden, in Klammern genannten Ganzzahlen angegeben (verwenden Sie nicht den Namen in Klammern, sondern den numerischen Code):
Die Eigenschaft "CurbApproach" ist für die Verwendung sowohl in Ländern mit Rechtsverkehr (Deutschland) als auch in Ländern mit Linksverkehr (Großbritannien) konzipiert. Stellen Sie sich zunächst einen Auftrag auf der linken Seite eines Fahrzeugs vor. Es befindet sich stets auf der linken Seite, egal ob das Fahrzeug auf der linken oder rechten Seite der Straße fährt. Was sich abhängig von den nationalen Verkehrsregeln ändern kann, ist Ihre Entscheidung, aus welcher Richtung Sie sich dem Auftrag nähern, sodass er sich entweder links oder rechts vom Fahrzeug befindet. Wenn sich beispielsweise am Auftragsort keine Fahrspur zwischen Fahrzeug und Auftrag befinden soll, wählen Sie in Deutschland die rechte Seite des Fahrzeugs (1), in Großbritannien hingegen die linke Seite des Fahrzeugs (2) aus. RouteName: Der Name der Route, der der Auftrag zugewiesen wird. Als Eingabefeld dient dieses Feld zum Vorabzuweisen eines Auftrags zu einer bestimmten Route. Es kann einen NULL-Wert enthalten, um anzugeben, dass der Auftrag keiner Route vorab zugewiesen ist. In diesem Fall erfolgt die Zuweisung der bestmöglichen Route für den Auftrag durch den Solver. Wenn das Feld auf NULL festgelegt ist, muss das Feld "Sequence" ebenfalls auf NULL festgelegt werden. Wenn der Auftrag einer Route zugewiesen wurde, enthält das Feld "RouteName" nach einem Berechnungsvorgang den Namen der Route, der der Auftrag zugewiesen ist. Sequence: Gibt die Sequenz des Auftrags auf der zugewiesenen Route an. Als Eingabefeld dient dieses Feld zum Angeben der relativen Sequenz eines Auftrags auf der Route. Das Feld kann einen NULL-Wert enthalten, um anzugeben, dass der Auftrag an einer beliebigen Position auf der Route eingefügt werden kann. Ein NULL-Wert ist nur gemeinsam mit einem NULL-Wert für "RouteName" zulässig. Die Eingabesequenzwerte sind positiv und für jede Route eindeutig (gültig für Depotstopps zum Be-/Entladen, Aufträge und Pausenzeiten), müssen jedoch nicht bei 1 beginnen und nicht zusammenhängend sein. Nach einem Berechnungsvorgang enthält das Feld "Sequence" den Sequenzwert des Auftrags für die zugewiesene Route. Ausgabesequenzwerte für eine Route gelten für Depotstopps, Aufträge und Pausenzeiten, sie beginnen bei 1 (beim Startdepot) und sind aufeinander folgende Werte. Daher ist der kleinstmögliche Ausgabesequenzwert für einen einer Route zugewiesenen Auftrag 2, weil eine Route immer bei einem Depot beginnt. | Feature Set |
depots | Geben Sie für das betreffende VRP ein oder mehrere Depots an. Ein Depot ist ein Standort, den ein Fahrzeug am Anfang des Arbeitstages verlässt und zu dem es am Ende des Arbeitstages zurückkehrt. Fahrzeuge werden zu Beginn der Route in Depots beladen (für Lieferungen) oder entladen (für Abholungen). In einigen Fällen kann ein Depot auch als Lager fungieren, an dem das Fahrzeug Artikel entladen oder laden kann, um weitere Lieferungen oder Abholungen durchzuführen. Ein Depot weist Öffnungs- und Schließzeiten auf, die durch ein hartes Zeitfenster angegeben werden. Fahrzeuge dürfen nicht außerhalb dieses Zeitfensters bei einem Depot eintreffen. Bei der Angabe von Aufträgen können Sie mithilfe von Attributen deren jeweilige Eigenschaften, darunter Name oder Durchführungszeit, festlegen. Für die Aufträge können folgende Attribute angegeben werden: ObjectID: Das vom System verwaltete ID-Feld. Name: Der Name des Depots. Die Felder "StartDepotName" und "EndDepotName" des Routen-Record-Set referenzieren die Namen, die Sie hier angeben. Es wird auch vom Lager (Be-/Entladen)-Record-Set referenziert, wenn dieses verwendet wird. Bei Depotnamen muss nicht zwischen Groß- und Kleinschreibung unterschieden werden, sie müssen angegeben werden und eindeutig sein. TimeWindowStart1: Die Anfangszeit des ersten Zeitfensters für den Netzwerkstandort. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass keine Anfangszeit vorhanden ist. Die Zeitfensterfelder können einen reinen Uhrzeitwert oder einen Wert für Datum und Uhrzeit enthalten. Wenn ein Zeitfeld einen reinen Uhrzeitwert enthält (z. B. 8:00 Uhr), wird vorausgesetzt, dass als Datum das vom Parameter "Default Date" des Analyse-Layers angegebene Datum verwendet wird. Wenn Sie Datums- und Uhrzeitwerte verwenden (z. B. 7/11/2010 8:00 Uhr), können Sie Zeitfenster über mehrere Tage festlegen. Werden bei der Lösung eines Problems mehrere Zeitzonen erfasst, so beziehen sich die in den Zeitfenstern jedes Depots angegebenen Werte auf die Zeitzone, in der sich das Depot befindet. TimeWindowEnd1: Die Endzeit des ersten Zeitfensters für den Netzwerkstandort. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass keine Endzeit vorhanden ist. TimeWindowStart2: Die Anfangszeit des zweiten Zeitfensters für den Netzwerkstandort. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass kein zweites Zeitfenster vorhanden ist. Wenn das erste Zeitfenster gemäß den Feldern "TimeWindowStart1" und "TimeWindowEnd1" NULL ist, muss das zweite Zeitfenster ebenfalls NULL sein. Wenn es sich bei beiden Fenstern um Nicht-NULL-Fenster handelt, können sie nicht überlappen. Außerdem muss das zweite Zeitfenster auf das erste folgen. TimeWindowEnd2: Die Endzeit des zweiten Zeitfensters für den Netzwerkstandort. Dieses Feld kann einen NULL-Wert enthalten. Wenn "TimeWindowStart2" und "TimeWindowEnd2" beide NULL sind, gibt es kein zweites Zeitfenster. Wenn "TimeWindowStart2" nicht NULL ist, aber "TimeWindowEnd2" NULL ist, gibt es ein zweites Zeitfenster, das eine Startzeit, aber keine Endzeit hat. Dies ist zulässig. CurbApproach: Gibt die Richtung an, in der ein Fahrzeug beim Depot ankommt bzw. von ihm wegfährt. Der Feldwert wird als eine der nachfolgenden, in Klammern genannten Ganzzahlen angegeben (verwenden Sie nicht den Namen in Klammern, sondern den numerischen Code):
Die Eigenschaft "CurbApproach" ist für die Verwendung sowohl in Ländern mit Rechtsverkehr (Deutschland) als auch in Ländern mit Linksverkehr (Großbritannien) konzipiert. Stellen Sie sich zunächst ein Depot auf der linken Seite eines Fahrzeugs vor. Es befindet sich stets auf der linken Seite, egal ob das Fahrzeug auf der linken oder rechten Seite der Straße fährt. Was sich abhängig von den nationalen Verkehrsregeln ändern kann, ist Ihre Entscheidung, aus welcher Richtung Sie sich dem Depot nähern, so dass es sich entweder links oder rechts vom Fahrzeug befindet. Wenn sich beispielsweise am Depot keine Fahrspur zwischen Fahrzeug und Depot befinden soll, wählen Sie in Deutschland die rechte Seite des Fahrzeugs (1), in Großbritannien hingegen die linke Seite des Fahrzeugs (2) aus. Bearing: Die Richtung, in die sich ein Punkt bewegt. Die Einheit ist Grad und wird im Uhrzeigersinn von geographisch Nord gemessen. Dieses Feld wird in Verbindung mit dem Feld "BearingTol" verwendet. Peilungsdaten werden normalerweise automatisch von einem mobilen Gerät gesendet, das mit einem GPS-Empfänger ausgestattet ist. Versuchen Sie Peilungsdaten einzubeziehen, wenn Sie einen sich bewegenden Auftrag laden, beispielsweise einen Fußgänger oder ein Fahrzeug. Durch die Verwendung dieses Feldes kann verhindert werden, dass Positionen falschen Kanten zugewiesen werden, was auftreten kann, wenn er sich zufällig in der Nähe einer Kreuzung oder einer Überführung befindet. Mithilfe der Peilung kann das Werkzeug einfacher ermitteln, auf welcher Straßenseite sich der Punkt befindet. Weitere Informationen können Sie dem Hilfethema "Peilung und Peilungstoleranz" (http://links.esri.com/bearing-and-bearing-tolerance) entnehmen. BearingTol: Anhand des Peilungstoleranzwertes wird ein Bereich mit zulässigen Peilungswerten erstellt, um sich bewegende Punkte über das Feld "Bearing" auf einer Kante zu verorten. Wenn sich der Wert des Feldes "Bearing" innerhalb des Bereichs der zulässigen Werte befindet, die über die Peilungstoleranz auf einer Kante generiert werden, kann der Punkt dort als Netzwerkstandort hinzugefügt werden. Andernfalls wird der nächstgelegene Punkt an der übernächsten Kante ausgewertet. Die Einheiten sind in Grad und der Standardwert ist 30. Der Wert muss größer als 0 und kleiner als 180 sein. Der Wert 30 bedeutet, dass bei dem Versuch von ArcGIS Network Analyst, einer Kante einen Netzwerkstandort hinzuzufügen, ein zulässiger Peilungswertebereich in einem Winkel von 15 Grad auf beiden Seiten der Kante (links und rechts) und in beiden digitalisierenden Richtungen der Kante generiert wird. Weitere Informationen können Sie dem Thema zu Peilung und Peilungstoleranz in der ArcGIS-Hilfe (http://links.esri.com/bearing-and-bearing-tolerance) entnehmen. NavLatency: Dieses Feld wird nur dann im Berechnungsprozess verwendet, wenn "Bearing" und "BearingTol" ebenfalls Werte aufweisen. Die Eingabe eines "NavLatency"-Wertes ist jedoch optional, selbst wenn bei "Bearing" und "BearingTol" Werte vorhanden sind. "NavLatency" gibt an, wie viel Zeit voraussichtlich zwischen dem Senden von GPS-Informationen von einem sich bewegenden Fahrzeug zu einem Server und dem Empfang der verarbeiteten Route durch das Navigationsgerät des Fahrzeugs vergeht. Die Zeiteinheiten von "NavLatency" entsprechen den Einheiten des Kostenattributs, das durch den Parameter "Time Attribute" angegeben wird. | Feature Set |
routes | Geben Sie ein bis zwei Routen an (bis zu 2). Eine Route gibt die Fahrzeug- und Fahrereigenschaften an. Nach der Berechnung stellt sie außerdem den Pfad zwischen Depots und Aufträgen dar. Eine Route kann Start- und Enddurchführungszeiten (Depot), eine feste oder flexible Anfangszeit, zeitbasierte Betriebskosten, entfernungsbasierte Betriebskosten, mehrere Kapazitäten, verschiedene Einschränkungen hinsichtlich des Arbeitstags eines Fahrers usw. aufweisen. Bei der Angabe von Routen können Sie mithilfe von Attributen deren jeweilige Eigenschaften festlegen. Für die Routen können folgende Attribute angegeben werden: Name: Der Name der Route. Der Name muss eindeutig sein. Wenn der Feldwert NULL ist, erstellt das Werkzeug zum Zeitpunkt der Berechnung einen eindeutigen Namen. Daher ist die Eingabe eines Wertes in den meisten Fällen optional. Sie müssen jedoch einen Namen eingeben, wenn Ihre Analyse Unterbrechungen, Lager (Be-/Entladen), Routenzonen oder Aufträge umfasst, die einer Route vorab zugewiesen sind, da der Routenname in diesen Fällen als Fremdschlüssel verwendet wird. Bei Routennamen wird die Groß-/Kleinschreibung nicht beachtet. StartDepotName: Der Name des Startdepots für die Route. Dieses Feld dient als Fremdschlüssel für das Feld "Name" in der Klasse "Depots". Wenn der Wert für "StartDepotName" NULL ist, beginnt die Route mit dem ersten zugewiesenen Auftrag. Wenn die Startposition des Fahrzeuges unbekannt oder für das Problem irrelevant ist, empfiehlt es sich, das Startdepot nicht anzugeben. Wenn StartDepotName jedoch NULL ist, darf EndDepotName nicht ebenfalls NULL sein. Virtuelle Startdepots sind nicht zulässig, wenn Aufträge oder Depots in mehreren Zeitzonen vorliegen. Wenn über die Route Lieferungen erfolgen und "StartDepotName" NULL ist, wird davon ausgegangen, dass das Fahrzeug vor Routenbeginn in einem virtuellen Depot beladen wird. Für eine Route ohne Stopps zum Be-/Entladen werden die zugehörigen Lieferaufträge (mit Werten für "DeliveryQuantities" ungleich 0 in der Klasse "Aufträge") am Startdepot oder virtuellen Depot geladen. Für eine Route mit Stopps zum Be-/Entladen werden nur die Lieferaufträge vor dem ersten Stopp zum Be-/Entladen am Startdepot oder virtuellen Depot geladen. EndDepotName: Der Name des Enddepots für die Route. Dieses Feld dient als Fremdschlüssel für das Feld "Name" in der Klasse "Depots". StartDepotServiceTime: Die Durchführungszeit am Startdepot. Mit dieser kann die Zeit zum Beladen des Fahrzeugs modelliert werden. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass keine Durchführungszeit vorhanden ist. Die Einheit für diesen Feldwert wird mithilfe des Parameters "Uhrzeitfeldeinheiten" angegeben. Bei der Durchführungszeit am Start- und Enddepot handelt es sich um feste Werte (von den Werten der Felder "StartDepotServiceTime" und "EndDepotServiceTime" angegeben), bei der das tatsächliche Beladen für eine Route nicht berücksichtigt wird. Beispielsweise kann die Zeit zum Beladen eines Fahrzeugs am Startdepot von der Größe der Aufträge abhängen. Als Durchführungszeiten für Depots können Werte festgelegt werden, die einer vollständigen Lkw-Ladung oder einer durchschnittlichen Lkw-Ladung entsprechen, oder Sie können einen eigenen Schätzwert festlegen. EndDepotServiceTime: Die Durchführungszeit am Enddepot. Mit dieser kann die Zeit zum Entladen des Fahrzeugs modelliert werden. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass keine Durchführungszeit vorhanden ist. Die Einheit für diesen Feldwert wird mithilfe des Parameters "Uhrzeitfeldeinheiten" angegeben. Bei der Durchführungszeit am Start- und Enddepot handelt es sich um feste Werte (von den Werten der Felder "StartDepotServiceTime" und "EndDepotServiceTime" angegeben), bei der das tatsächliche Beladen für eine Route nicht berücksichtigt wird. Beispielsweise kann die Zeit zum Beladen eines Fahrzeugs am Startdepot von der Größe der Aufträge abhängen. Als Durchführungszeiten für Depots können Werte festgelegt werden, die einer vollständigen Lkw-Ladung oder einer durchschnittlichen Lkw-Ladung entsprechen, oder Sie können einen eigenen Schätzwert festlegen. EarliestStartTime: Die früheste zulässige Startzeit für die Route. Diese wird vom Solver in Verbindung mit dem Zeitfenster des Startdepots verwendet, um realistische Routenstartzeiten zu bestimmen. Dieses Feld darf keine NULL-Werte enthalten und sein Standardwert für die reine Uhrzeit ist 8:00 Uhr. Der Standardwert wird als 8:00 Uhr an dem vom Parameter "Default Date" angegebenen Datum interpretiert. Werden bei der Lösung eines Problems mehrere Zeitzonen erfasst, so entspricht die in EarliestStartTime angegebene Zeitzone derjenigen Zone, in der sich das Startdepot befindet. LatestStartTime: Die späteste zulässige Startzeit für die Route. Dieses Feld darf keine NULL-Werte enthalten, und sein Standardwert für die reine Uhrzeit ist 10:00 Uhr. Der Standardwert wird als 10:00 Uhr an dem von der Eigenschaft "Standarddatum" des Analyse-Layers angegebenen Datum interpretiert. Werden bei der Lösung eines Problems mehrere Zeitzonen erfasst, so entspricht die in LatestStartTime angegebene Zeitzone derjenigen Zone, in der sich das Startdepot befindet. ArriveDepartDelay: In diesem Feld wird die Fahrzeitdauer gespeichert, die erforderlich ist, um das Fahrzeug auf normale Reisegeschwindigkeiten zu beschleunigen, bis zu einem Stopp zu verlangsamen und in das bzw. aus dem Netzwerk zu bewegen (z. B. in die Parkposition und aus der Parkposition). Indem ein Wert für "ArriveDepartDelay" verwendet wird, wird der VRP-Solver davon abgehalten, viele Routen zum Abarbeiten von Aufträgen mit physischer Lagegleichheit zu senden. Die Kosten für diese Eigenschaft treten zwischen Besuchen bei nicht lagegleichen Aufträgen, Depots und Lagern zum Be-/Entladen auf. Wenn eine Route beispielsweise an einem Depot startet und zum Besuch des ersten Auftrags führt, wird die Gesamtverzögerung bei der Ankunft und Abfahrt der Fahrzeit hinzugefügt. Dasselbe gilt für die Fahrt vom ersten Auftrag zum zweiten Auftrag. Wenn der zweite und dritte Auftrag lagegleich sind, wird der Wert unter "ArriveDepartDelay" dazwischen nicht hinzugefügt, da sich das Fahrzeug nicht bewegen muss. Wenn die Route dann zu einem Lager zum Be-/Entladen führt, wird der Wert der Fahrzeit wieder hinzugefügt. Obwohl ein Fahrzeug bei einer Pause die Fahrt verlangsamen und unterbrechen und danach wieder beschleunigen muss, kann der VRP-Solver den Wert unter "ArriveDepartDelay" für Pausen nicht hinzufügen. Dies bedeutet, dass die Verzögerung bei der Ankunft und Abfahrt nur einmal hinzugefügt wird (und nicht zweimal), wenn ein Fahrzeug auf einer Route den Ort eines Auftrags verlässt, für eine Pause anhält und dann weiter zum nächsten Auftrag fährt. Zur Veranschaulichung nehmen Sie an, dass für ein Hochhaus fünf lagegleiche Aufträge vorliegen, die mit drei verschiedenen Routen abgearbeitet werden sollen. Dies bedeutet, dass drei Verzögerungen bei der Ankunft und Abfahrt anfallen. Drei Fahrer müssen separat einen Parkplatz finden und dasselbe Gebäude betreten. Wenn die Aufträge jedoch von nur einer Route abgearbeitet werden können, muss nur ein Fahrer einen Parkplatz finden und das Gebäude betreten. Somit fällt nur eine Verzögerung bei der Ankunft und Abfahrt an. Da das Ziel des VRP-Solvers die Kostenreduzierung ist, versucht er, die Verzögerungen bei der Ankunft und Abfahrt zu beschränken, wählt also die Option mit nur einer Route. (Beachten Sie, dass ggf. mehrere Routen verwendet werden müssen, wenn andere Einschränkungen – z. B. Besonderheiten, Zeitfenster oder Kapazitäten – dies erfordern.) Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. Capacities: Die maximale Kapazität des Fahrzeugs. Sie können die Kapazität in jeder beliebigen Bemaßung angeben, wie Gewicht, Volumen oder Menge. Sie können sogar mehrere Dimensionen, wie beispielsweise Gewicht und Volumen, angeben. Geben Sie Kapazitäten ohne die Angabe von Einheiten ein. Wenn Ihr Fahrzeug maximal 18.000 kg transportieren kann, geben Sie 18000 ein. Sie müssen daran denken, dass der Wert in Kilogramm angegeben ist. Wenn Sie mehrere Maße angeben, trennen Sie die numerischen Werte mit Leerzeichen. Wenn beispielsweise Gewicht und Volumen erfasst werden und Ihr Fahrzeug ein Gewicht von max. 18.000 kg und ein Volumen von max. 56 Kubikmeter transportieren kann, sollten die Kapazitäten wie folgt eingegeben werden: 18000 56. Sie müssen sich wieder die Einheiten merken. Sie müssen sich ferner merken, in welcher Abfolge die Werte und ihre entsprechenden Einheiten eingegeben werden (in diesem Fall Kilogramm gefolgt von Kubikmetern). Die Einheiten und die Einheitensequenz sind aus verschiedenen Gründen wichtig: Erstens können Sie die Informationen später neu deuten und zweitens können Sie angemessene Werte für die Felder "DeliveryQuantities" und "PickupQuantities" der Aufträge eingeben. Beachten Sie hinsichtlich des zweiten Punktes, dass der VRP-Solver gleichzeitig "Capacities", "DeliveryQuantities" und "PickupQuantities" referenziert, um sicherzustellen, dass eine Route nicht überlastet wird. Da im Feld keine Einheiten eingegeben werden können, kann das VRP-Werkzeug Einheiten nicht konvertieren. Das heißt, Sie müssen die Werte für die drei Felder in denselben Einheiten und derselben Einheitensequenz eingeben, um sicherzustellen, dass die Werte korrekt interpretiert werden. Wenn unterschiedliche Einheiten verwendet werden oder die Reihenfolge in einem der drei Felder geändert wird, erhalten Sie unerwünschte Ergebnisse, ohne dass eine Warnmeldung ausgegeben wird. Daher wird empfohlen, vorher einen Einheiten- und Einheitensequenzstandard einzurichten und diesen bei der Eingabe von Werten für diese drei Felder einzuhalten. Eine leere Zeichenfolge oder ein NULL-Wert gibt an, dass alle Werte Null sind. Kapazitätswerte dürfen nicht negativ sein. Wenn die Anzahl der Werte in der Zeichenfolge "Capacities" im Verhältnis zu den Feldern "DeliveryQuantities" oder "PickupQuantities" bei "Orders" nicht ausreichend ist, werden die restlichen Werte als 0 behandelt. Der VRP-Solver führt lediglich einen einfachen booleschen Test durch, um festzustellen, ob die Kapazitäten überschritten werden. Wenn der Kapazitätswert einer Route größer als oder gleich der gesamten transportierten Menge ist, geht der VRP-Solver davon aus, dass die Fracht in das Fahrzeug passt. Abhängig von der tatsächlichen Form der Fracht und des Fahrzeugs kann diese Annahme jedoch falsch sein. Der VRP-Solver lässt beispielsweise zu, dass eine Kugel mit 1.000 Kubikfuß in einen Lkw mit 1.000 Kubikfuß und einer Breite von 8 Fuß verladen wird. Tatsächlich hat die Kugel jedoch einen Durchmesser von 12,6 Fuß und passt nicht in den Lkw mit einer Breite von 8 Fuß. FixedCost: Ein fester Geldbetrag, der nur anfällt, wenn die Route in einer Lösung verwendet wird (d. h., der Route sind Aufträge zugewiesen). Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass keine festen Kosten vorhanden sind. Diese Kosten sind Bestandteil der Gesamtbetriebskosten für die Route. CostPerUnitTime: Der – pro Arbeitszeiteinheit – für die Gesamtroutendauer, einschließlich Reisezeiten, Durchführungszeiten und Wartezeiten bei Aufträgen, Depots und Pausen, anfallende Geldbetrag. Dieses Feld darf keinen NULL-Wert enthalten und der Standardwert ist 1,0. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. CostPerUnitDistance: Der – pro Einheit gefahrener Strecke – für die Routenlänge (gesamte Reisestrecke) anfallende Betrag. Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass keine Kosten vorhanden sind. Die Einheit für diesen Feldwert wird mithilfe des Parameters "distance_units" angegeben. OvertimeStartTime: Die Dauer der regulären Arbeitszeit, bevor die Berechnung der Überstunden beginnt. Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass keine Überstunden angewendet werden. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. Wenn beispielsweise bei Überschreiten einer Gesamtroutendauer von 8 Stunden für den Fahrer Überstunden bezahlt werden müssen und der Parameter time_units auf Minuten festgelegt ist, wird "OvertimeStartTime" als 480 (8 Stunden * 60 Minuten/Stunde) angegeben. CostPerUnitOvertime: Der pro Zeiteinheit von Überstunden anfallende Geldbetrag. Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass der Wert von "CostPerUnitOvertime" mit dem Wert von "CostPerUnitTime" identisch ist. MaxOrderCount: Die maximal zulässige Anzahl von Aufträgen für die Route. Dieses Feld darf keine NULL-Werte enthalten und der Standardwert beträgt 30. MaxTotalTime: Die maximal zulässige Routendauer. Die Routendauer umfasst Fahrzeiten sowie Durchführungs- und Wartezeiten bei Aufträgen, Depots und Pausen. Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass für die Routendauer keine Einschränkung gilt. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. MaxTotalTravelTime: Die maximal zulässige Reisezeit für die Route. Die Fahrzeit umfasst nur die Zeit für Fahrten im Netzwerk, ohne Durchführungs- oder Wartezeit. Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass für die maximal zulässige Fahrzeit keine Einschränkung gilt. Dieser Feldwert darf nicht größer als der Wert des Feldes "MaxTotalTime" sein. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. MaxTotalDistance: Die maximal zulässige Reisestrecke für die Route. Die Einheit für diesen Feldwert wird mithilfe des Parameters "distance_units" angegeben. Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass für die maximal zulässige Reisestrecke keine Einschränkung gilt. SpecialtyNames: Eine durch Leerzeichen getrennte Zeichenfolge mit den Namen der von der Route unterstützten Besonderheiten. Ein NULL-Wert gibt an, dass die Route keine Besonderheiten unterstützt. Dieses Feld dient als Fremdschlüssel für das Feld "SpecialtyNames" in der Klasse "Orders". Um die Bedeutung und Funktionsweise von Besonderheiten zu veranschaulichen, nehmen Sie an, dass eine Firma, die Grünanlagen pflegt und Baumschnittarbeiten durchführt, für einige Aufträge ein Fahrzeug mit einem Hubsteiger benötigt, um große Bäume zu beschneiden. Das Unternehmen gibt für diese Aufträge Hubsteiger in das Feld "SpecialtyNames" ein, um auf diese besondere Anforderung hinzuweisen. Für die anderen Aufträge bleibt der Wert des Feldes "SpecialtyNames " NULL. Entsprechend gibt die Firma Hubsteiger auch in das Feld "SpecialtyNames" von Routen ein, die von Fahrzeugen mit hydraulischen Auslegern befahren werden. Für die anderen Routen bleibt der Wert des Feldes NULL. Zum Zeitpunkt der Berechnung weist der VRP-Solver jeder Route Aufträge ohne besondere Anforderungen zu, er weist jedoch Aufträge, die Fahrzeuge mit Hubsteiger erfordern, nur den Routen zu, die darüber verfügen. AssignmentRule: Gibt an, ob die Route beim Lösen des Problems verwendet werden kann. Dieses Feld ist durch eine Domäne von Werten eingeschränkt, die unten aufgeführt sind (verwenden Sie nicht den Namen in Klammern, sondern den numerischen Code).
| Record Set |
breaks | Das sind die Unterbrechungszeiten bzw. Pausenzeiten für Routen in einem VRP. Eine Pausenzeit ist mit genau einer Route verknüpft und kann nach Abschluss eines Auftrags, auf dem Weg zu einem Auftrag oder vor dem Abarbeiten eines Auftrags eingelegt werden. Sie verfügt über eine Startzeit und eine Dauer, für die der Fahrer entweder bezahlt oder nicht bezahlt wird. Sie können drei Optionen verwenden, um den Beginn einer Pausenzeit festzulegen: Sie können ein Zeitfenster, eine maximale Fahrzeit oder eine maximale Arbeitszeit eingeben. Bei der Angabe von Pausen können Sie mithilfe von Attributen deren jeweilige Eigenschaften, darunter Name oder Durchführungszeit, festlegen. Für die Aufträge können folgende Attribute angegeben werden: ObjectID: Das vom System verwaltete ID-Feld. RouteName: Der Name der Route, auf die die Pausenzeit angewendet wird. Eine Pausenzeit wird nur einer Route zugewiesen, aber einer Route können mehrere Pausenzeiten zugewiesen werden. Dieses Feld ist ein Fremdschlüssel für das Feld "Name" im Parameter "Routen" und darf keinen NULL-Wert enthalten. Precedence: Mithilfe von Vorrangswerten wird die Abfolge von Pausenzeiten einer Route festgelegt. Pausenzeiten mit einem Vorrangswert von 1 treten vor Pausenzeiten mit einem Vorrangswert von 2 ein usw. Alle Pausenzeiten müssen unabhängig davon, ob es sich um Zeitfenster-Pausenzeiten, Pausenzeiten wegen maximaler Fahrzeit oder Pausenzeiten wegen maximaler Arbeitszeit handelt, einen Vorrangswert aufweisen. ServiceTime: Die Dauer der Pause. Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass keine Durchführungszeit vorhanden ist. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. TimeWindowStart: Die Anfangszeit des Zeitfensters für die Pause. Wenn dieses Feld NULL ist und "TimeWindowEnd" über einen gültigen Tageszeitwert verfügt, kann die Pausenzeit jederzeit vor dem TimeWindowEnd-Wert starten. Wenn dieses Feld über einen Wert verfügt, müssen die Feldwerte für "MaxTravelTimeBetweenBreaks" und "MaxCumulWorkTime" NULL sein. Außerdem müssen alle anderen Pausenzeiten im Analyse-Layer NULL-Werte für "MaxTravelTimeBetweenBreaks" und "MaxCumulWorkTime" aufweisen. Zur Berechnungszeit tritt ein Fehler auf, falls eine Route über mehrere Pausenzeiten mit überlappenden Zeitfenstern verfügt. Die Zeitfensterfelder für Pausen können einen reinen Uhrzeitwert oder einen Wert für Datum und Uhrzeit enthalten. Wenn ein Zeitfeld, z. B. TimeWindowStart1, einen reinen Uhrzeitwert enthält (z. B. 12:00 Uhr), wird vorausgesetzt, dass als Datum das vom Parameter "default_date" angegebene Datum verwendet wird. Wenn Sie Datums- und Uhrzeitwerte verwenden (z. B. 7/11/2012 00:00 Uhr), können Sie Zeitfenster über mehrere Tage angeben. Dies empfiehlt sich besonders, wenn eine Pause kurz vor oder nach Mitternacht eingelegt werden soll. Werden bei der Lösung eines Problems mehrere Zeitzonen erfasst, so beziehen sich die in den Zeitfenstern jeder Pause angegebenen Werte auf die Zeitzone der im Feld RouteName angegebenen zugeordneten Route. TimeWindowEnd: Die Endzeit des Zeitfensters für die Pause. Wenn dieses Feld NULL ist und "TimeWindowStart" über einen gültigen Tageszeitwert verfügt, kann die Pausenzeit jederzeit nach dem TimeWindowStart-Wert starten. Wenn dieses Feld über einen Wert verfügt, müssen "MaxTravelTimeBetweenBreaks" und "MaxCumulWorkTime" NULL sein. Außerdem müssen alle anderen Pausenzeiten im Analyse-Layer NULL-Werte für "MaxTravelTimeBetweenBreaks" und "MaxCumulWorkTime" aufweisen. MaxViolationTime: Dieses Feld gibt den maximal zulässigen Zeitverstoß für eine Zeitfenster-Pausenzeit an. Eine Zeitfensterverletzung liegt vor, wenn die Ankunftszeit außerhalb der Zeitspanne liegt. Der Wert 0 gibt an, dass keine Zeitfensterverletzung zulässig ist. Das heißt, es handelt sich um ein hartes Zeitfenster. Ein Wert ungleich 0 gibt die maximale Verspätung an. Beispielsweise kann die Pause 30 Minuten nach dem Ende des zugehörigen Zeitfensters beginnen, jedoch wird die Verspätung entsprechend der Eigenschaft "Gewichtung der Zeitfensterverletzung" sanktioniert. Diese Eigenschaft kann NULL sein. Ein NULL-Wert mit TimeWindowStart- und TimeWindowEnd-Werten gibt an, dass für den zulässigen Zeitverstoß kein Grenzwert gilt. Wenn "MaxTravelTimeBetweenBreaks" oder "MaxCumulWorkTime" über einen Wert verfügt, muss "MaxViolationTime" NULL sein. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. MaxTravelTimeBetweenBreaks: Die maximale Fahrzeit, die akkumuliert werden kann, bevor die Pausenzeit genommen wird. Die Fahrzeit wird entweder ab dem Ende der vorherigen Pause oder, falls noch keine Pause eingelegt wurde, ab dem Start der Route akkumuliert. Wenn es sich um die letzte Pausenzeit der Route handelt, gibt "MaxTravelTimeBetweenBreaks" auch die maximale Fahrzeit an, die von der letzten Pause bis zum Enddepot akkumuliert werden kann. Mithilfe dieses Feldes kann der Zeitraum beschränkt werden, wie lange eine Person fahren darf, bis eine Pausenzeit erforderlich ist. Wenn der Parameter Time Field Units der Analyse auf "Minuten" festgelegt ist (time_units für Python) und "MaxTravelTimeBetweenBreaks" den Wert 120 enthält, kann der Fahrer nach zwei Stunden Fahrt eine Pause einlegen. Um eine Pause nach zwei weiteren Stunden Fahrt zuzuweisen, muss die Eigenschaft "MaxTravelTimeBetweenBreaks" der zweiten Pause auf den Wert 120 festgelegt werden. Wenn dieses Feld über einen Wert verfügt, müssen "TimeWindowStart", "TimeWindowEnd", "MaxViolationTime" und "MaxCumulWorkTime" NULL sein, damit eine Analyse erfolgreich berechnet werden kann. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. MaxCumulWorkTime: Die maximale Arbeitszeit, die akkumuliert werden kann, bevor die Pausenzeit genommen wird. Arbeitszeit wird immer ab dem Anfang der Route akkumuliert. Die Arbeitszeit ist die Summe der Fahrzeit und Durchführungszeiten für Aufträge, Depots und Pausenzeiten. Beachten Sie jedoch, dass die Wartezeit darin nicht enthalten ist. Dies ist die Zeit, die eine Route (bzw. ein Fahrer) am Ort eines Auftrags oder an einem Depot mit dem Warten auf das Beginn des Zeitfensters verbringt. Mithilfe dieses Feldes kann der Zeitraum beschränkt werden, wie lange eine Person arbeiten darf, bis eine Pausenzeit erforderlich ist. Wenn der Parameter time_units auf "Minuten" festgelegt ist, "MaxCumulWorkTime" den Wert 120 enthält und "ServiceTime" den Wert 15 aufweist, kann der Fahrer nach zwei Stunden Arbeit eine Pause von 15 Minuten einlegen. Angenommen, für das letzte Beispiel ist nach weiteren drei Stunden Arbeit eine zweite Pause erforderlich. Um diese Pause anzugeben, geben Sie 315 (fünf Stunden und fünfzehn Minuten) als MaxCumulWorkTime-Wert der zweiten Pause ein. In dieser Zahl sind die MaxCumulWorkTime- und ServiceTime-Werte der vorherigen Pausenzeit sowie die drei zusätzlichen Stunden Arbeitszeit vor dem Gewähren der zweiten Pause enthalten. Bedenken Sie dabei Folgendes: Um zu vermeiden, dass Pausen wegen maximaler Arbeitszeit vorzeitig eingelegt werden, wird die Arbeitszeit ab dem Anfang der Route akkumuliert. Außerdem enthält die Arbeitszeit die Durchführungszeiten von vorher besuchten Depots, Aufträgen und Pausenzeiten. Wenn dieses Feld über einen Wert verfügt, müssen "TimeWindowStart", "TimeWindowEnd", "MaxViolationTime" und "MaxTravelTimeBetweenBreaks" NULL sein, damit eine Analyse erfolgreich berechnet werden kann. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. IsPaid: Ein boolescher Wert, der angibt, ob die Pausenzeit bezahlt wird. Der Wert "True" gibt an, dass die Pausenzeit in die Berechnung der Routenkosten sowie die Bestimmung der Überstunden einbezogen wird. Der Wert "False" gibt das Gegenteil an. Der Standardwert ist "True". Sequence: Gibt als Eingabefeld die Sequenz der Pause auf der zugehörigen Route an. Dieses Feld kann NULL-Werte enthalten. Die Eingabesequenzwerte sind positiv und für jede Route eindeutig (gültig für Depotstopps zum Be-/Entladen, Aufträge und Pausenzeiten), müssen jedoch nicht bei 1 beginnen und nicht zusammenhängend sein. Der Solver ändert das Sequenzfeld. Nach dem Berechnungsvorgang enthält dieses Feld den Sequenzwert der Pausenzeit auf der zugehörigen Route. Ausgabesequenzwerte für eine Route gelten für Depotstopps, Aufträge und Pausenzeiten, sie beginnen bei 1 (beim Startdepot) und sind aufeinander folgende Werte. | Record Set |
time_units | Die Zeiteinheiten für alle zeitbasierten Feldwerte in der Analyse. Viele Features und Datensätze in einer VRP-Analyse weisen Felder zum Speichern von Zeitwerten auf, wie "ServiceTime" für Aufträge und "CostPerUnitTime" für Routen. Um Dateneingabeanforderungen zu minimieren, umfassen diese Feldwerte keine Einheiten. Stattdessen müssen alle entfernungsbasierten Feldwerte in den gleichen Einheiten eingegeben werden. Mit diesem Parameter werden die Einheiten dieser Werte angegeben. Zeitbasierte Ausgabefelder verwenden dieselben durch diesen Parameter angegebenen Einheiten. | String |
distance_units | Die Entfernungseinheiten für alle entfernungsbasierten Feldwerte in der Analyse. Viele Features und Datensätze in einer VRP-Analyse weisen Felder zum Speichern von Entfernungswerten auf, wie "MaxTotalDistance" und "CostPerUnitDistance" für Routen. Um Dateneingabeanforderungen zu minimieren, umfassen diese Feldwerte keine Einheiten. Stattdessen müssen alle entfernungsbasierten Feldwerte in den gleichen Einheiten eingegeben werden. Mit diesem Parameter werden die Einheiten dieser Werte angegeben. Entfernungsbasierte Ausgabefelder verwenden dieselben durch diesen Parameter angegebenen Einheiten. | String |
analysis_region (optional) | Geben Sie die zu analysierende Region an. Wird für diesen Parameter kein Wert angegeben, ermittelt das Werkzeug anhand der Position der Eingabepunkte den Namen der Region automatisch. Es wird jedoch empfohlen, den Namen der Region anzugeben, um die Werkzeugausführung zu beschleunigen. Geben Sie zur Angabe der Region einen der folgenden Werte an:
| String |
default_date (optional) | Das Standarddatum für Zeitfeldwerte, die eine Uhrzeit, jedoch kein Datum angeben. Sie können diese Zeitfelder in verschiedenen Eingabeparametern antreffen, z. B. die Attribute "ServiceTime" in den Auftrags- und Pausenparametern. | Date |
uturn_policy (optional) | Mit diesem Parameter können Sie im Einzugsgebiet festlegen, ob Wenden an Kreuzungen erlaubt oder verboten ist. Zum besseren Verständnis der Parameterwerte sollten Sie sich kurz mit der folgenden Terminologie vertraut machen: ein Knoten ist ein Punkt, an dem ein Straßenabschnitt endet und potenziell mit einem oder mehreren anderen Segmenten verbunden ist; ein Pseudo-Knoten ist ein Punkt, an dem genau zwei Straßen miteinander verbunden sind; ein Schnittpunkt ist ein Punkt, an dem drei oder mehr Straßen zusammentreffen; und eine Sackgasse ist ein Punkt, an dem ein Straßenabschnitt endet, ohne mit einem weiteren verbunden zu sein. Basierend auf diesen Informationen können die Parameter folgende Werte annehmen:
Der von Ihnen für diesen Parameter eingegebene Wert wird ignoriert, es sei denn, Reisemodus ist auf Benutzerdefiniert festgelegt, was dem Standardwert entspricht. | String |
time_window_factor (optional) | Bewertet die Bedeutung der Einhaltung von Zeitfenstern. Nachstehend werden drei Möglichkeiten beschrieben.
| String |
spatially_cluster_routes (optional) |
| Boolean |
route_zones (optional) | Weist Arbeitsgebiete für bestimmte Routen aus. Eine Routenzone ist ein Polygon-Feature. Mit ihr werden Routen eingeschränkt, um nur die Aufträge durchzuführen, die im angegebenen Gebiet oder in dessen Nähe liegen. Einige Beispiele für Fälle, in denen Routenzonen sinnvoll sein können:
Bei der Angabe von Routenzonen müssen Sie mithilfe von Attributen deren jeweilige Eigenschaften, z. B. ihre zugeordnete Route, festlegen. Für die Routenzonen können folgende Attribute angegeben werden: ObjectID: Das vom System verwaltete ID-Feld. RouteName: Der Name der Route, auf die diese Zone angewendet wird. Einer Routenzone kann maximal eine Route zugeordnet sein. Dieses Feld darf keine NULL-Werte enthalten und es fungiert als Fremdschlüssel für das Feld "Name" des Features im Parameter "Routen". IsHardZone: Ein boolescher Wert, der eine harte oder weiche Routenzone angibt. Der Wert "True" gibt an, dass es sich um eine harte Routenzone handelt. Dies bedeutet, dass ein Auftrag, der sich außerhalb des Routenzonenpolygons befindet, der Route nicht zugewiesen werden kann. Der Standardwert ist 1 (True). Der Wert "False"(0) gibt an, dass Aufträge außerhalb des Routenzonenpolygons dennoch zugewiesen werden können, die Kosten für die Durchführung des Auftrags jedoch mit einer Funktion gewichtet werden, die auf der euklidischen Entfernung von der Routenzone basiert. Im Grunde bedeutet dies, dass die Wahrscheinlichkeit einer Zuweisung des Auftrags zu der Route umso geringer ist, je größer die direkte Entfernung der weichen Zone vom Auftrag ist. | Feature Set |
route_renewals (optional) | Gibt die Zwischendepots an, über die die Routen führen können, um die Fracht für Auslieferungs- oder Abholungsaufträge zu laden oder zu entladen. Über "Lager (Be-/Entladen)" wird eine Route mit einem Depot verknüpft. Die Beziehung gibt an, dass für die Route das Be- oder Entladen am zugeordneten Depot möglich ist. Lager zum Be-/Entladen können zum Modellieren von Szenarien verwendet werden, in denen ein Fahrzeug am Startdepot eine vollständige Ladung von Lieferungen abholt, die Aufträge durchführt, zum Depot zurückkehrt, um neue Lieferungen zu laden, und weitere Aufträge durchführt. Beispielsweise kann bei der Lieferung von Propangas das Fahrzeug mehrere Lieferungen durchführen, bis der Tank nahezu oder vollständig leer ist, einen Stützpunkt zum Nachfüllen aufsuchen und dann weitere Lieferungen durchführen. Beim Arbeiten mit Routenschwerpunkten sind folgende Regeln und Optionen zu beachten:
Bei der Angabe von Lagern zum Be-/Entladen müssen Sie mithilfe von Attributen deren jeweilige Eigenschaften, z. B. den Namen des Depots, in dem das Lagern zum Be-/Entladen erfolgen kann, festlegen. Für die Lager zum Be-Entladen können folgende Attribute angegeben werden: ObjectID: Das vom System verwaltete ID-Feld. DepotName: Der Name des Depots, bei dem das Be-/Entladen erfolgt. Dieses Feld darf keinen NULL-Wert enthalten und es fungiert als Fremdschlüssel für das Feld "Name" im Parameter "Depots". RouteName: Der Name der Route, auf die dieses Lager zum Be-/Entladen angewendet wird. Dieses Feld darf keinen NULL-Wert enthalten und es fungiert als Fremdschlüssel für das Feld "Name" im Parameter "Routen". ServiceTime: Die Durchführungszeit für das Be-/Entladen. Dieses Feld kann einen NULL-Wert enthalten. Ein NULL-Wert gibt an, dass keine Durchführungszeit vorhanden ist. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. Die Zeit zum Beladen eines Fahrzeugs an einem Depot zum Be-/Entladen kann von der Größe des Fahrzeugs und seinem Beladungszustand abhängen. Die Durchführungszeit für das Be-/Entladen an einem Lager ist ein fester Wert, bei dem das tatsächliche Beladen nicht berücksichtigt wird. Für die Durchführungszeit zum Be-/Entladen sollte daher ein Wert festgelegt werden, der einer vollständigen Lkw-Ladung oder einer durchschnittlichen Lkw-Ladung entspricht, oder Sie können einen eigenen Schätzwert für die Zeit festlegen. | Record Set |
order_pairs (optional) | Dieser Parameter kombiniert Abholungs- und Lieferaufträge, sodass sie über dieselbe Route abgearbeitet werden. Zuweilen müssen Abholung und Lieferung für Aufträge paarweise zusammengefasst werden. Beispiel: Eine Kurierfirma benötigt eine Route, auf der ein wichtiges Paket abgeholt und ohne Rückkehr zum Depot oder zur Sortierstation geliefert wird, um die Lieferzeit zu minimieren. Diese zusammengehörigen Aufträge können durch die Verwendung von Auftragspaaren mit der entsprechenden Sequenz derselben Route zugewiesen werden. Es können ferner Einschränkungen für die Dauer zugewiesen werden, für die ein Paket im Fahrzeug bleiben darf. Beispiel: Eine Blutprobe muss innerhalb von zwei Stunden von der Arztpraxis in das Labor gebracht werden. Bei der Angabe von Auftragspaaren müssen Sie mithilfe von Attributen deren jeweilige Eigenschaften, darunter die Namen der beiden Aufträge, festlegen. Für die Auftragspaare können folgende Attribute angegeben werden: ObjectID: Das vom System verwaltete ID-Feld. FirstOrderName: Der Name für den ersten Auftrag des Paares. Dieses Feld dient als Fremdschlüssel für das Feld "Name" im Parameter "Aufträge". SecondOrderName: Der Name für den zweiten Auftrag des Paares. Dieses Feld dient als Fremdschlüssel für das Feld "Name" im Parameter "Aufträge". Der erste Auftrag des Paares muss ein Abholungsauftrag sein, d. h., der Wert für das zugehörige Feld "DeliveryQuantities" ist NULL. Der zweite Auftrag des Paares muss ein Lieferauftrag sein, d. h., der Wert für das zugehörige Feld "PickupQuantities" ist NULL. Die Menge, die mit dem ersten Auftrag abgeholt wird, muss mit der Menge übereinstimmen, die mit dem zweiten Auftrag geliefert wird. Als Sonderfall können in Szenarien, in denen keine Kapazitäten verwendet werden, beide Aufträge die Menge 0 aufweisen. Die Auftragsmengen werden nicht an Depots geladen oder entladen. MaxTransitTime: Die maximale Fahrzeit für das Auftragspaar. Die Fahrzeit ist die Dauer von der Abfahrtszeit des ersten Auftrags bis zur Ankunftszeit des zweiten Auftrags. Diese Einschränkung begrenzt die tatsächlich mit Fahren verbrachte Zeit zwischen den beiden Aufträgen. Wenn ein Fahrzeug Menschen oder verderbliche Waren transportiert, ist die Fahrzeit i. d. R. kürzer als bei einem Fahrzeug, das Pakete oder nicht verderbliche Waren transportiert. Dieses Feld kann NULL-Werte enthalten. Ein NULL-Wert gibt an, dass für die Fahrzeit keine Einschränkung gilt. Die Einheit für diesen Feldwert wird mithilfe des Parameters "time_units" angegeben. Vom Solver können Fahrzeitüberschreitungen (in Bezug auf die direkte Fahrzeit zwischen Auftragspaaren gemessen) verfolgt und gewichtet werden. Daher können Sie für den VRP-Solver eine von drei Strategien festlegen:
Wenn Sie für die Einstellung des Parameters "excess_transit_factor" eine Gewichtung zuweisen, wählen Sie letztendlich eine dieser drei Strategien aus. Unabhängig von der Gewichtung gibt der Solver jedoch in jedem Fall einen Fehler zurück, wenn der Wert für "MaxTransitTime" überschritten wird. | Record Set |
excess_transit_factor (optional) | Bewertet, wie wichtig die Reduzierung von Fahrzeitüberschreitungen von Auftragspaaren ist. Die Fahrzeitüberschreitung entspricht der Zeit, um die die direkte Fahrzeit zwischen den Auftragspaaren überschritten wird. Eine Überschreitung kann durch Fahrerpausen oder Fahrten zu Zwischenaufträgen und Depots verursacht werden. Unten sind die drei Werte aufgelistet, die zur Wahl stehen.
| String |
point_barriers (optional) | Geben Sie einen oder mehrere Punkte an, die als Zeitbeschränkungen dienen bzw. die die für das Passieren der betreffenden Straßen zusätzlich veranschlagte Zeit oder Entfernung anzeigen. Mit einer Punkt-Barriere kann beispielsweise ein umgestürzter Baum auf einer Straße oder eine Zeitverzögerung wegen des Halts an einem Bahnübergang angezeigt werden. Mit dem Werkzeug können maximal 250 Punkte als Barrieren hinzugefügt werden. Bei der Angabe von Punkt-Barrieren können Sie mithilfe von Attributen deren jeweilige Eigenschaften, darunter Name oder Barrierentyp, festlegen. Für die Punkt-Barrieren können folgende Attribute angegeben werden: Name: Der Name der Barriere. BarrierType: Gibt an, ob die Punkt-Barriere den Verkehr vollständig beschränkt oder ob beim Überschreiten der Barriere ein Mehraufwand an Zeit oder Entfernung entsteht. Der Wert für dieses Attribut wird als eine der nachfolgenden Ganzzahlen angegeben (verwenden Sie nicht den Namen in Klammern, sondern den numerischen Code):
Additional_Time: Gibt die zusätzliche Fahrzeit an, die durch das Passieren der Barriere entsteht. Dieses Feld gilt nur für Barrieren vom Typ "Zusatzkosten" und ausschließlich für zeitbasierte Maßeinheiten. Dieser Feldwert muss größer oder gleich Null sein, und seine Einheiten werden vom Parameter "Maßeinheiten" vorgegeben. Additional_Distance: Gibt an, wie viel Entfernung durch das Passieren der Barriere hinzugefügt wird. Dieses Feld gilt nur für Barrieren vom Typ "Zusatzkosten" und ausschließlich für entfernungsbasierte Maßeinheiten. Dieser Feldwert muss größer oder gleich Null sein, und seine Einheiten werden vom Parameter "Maßeinheiten" vorgegeben. | Feature Set |
line_barriers (optional) | Geben Sie eine oder mehr Linien an, die das Überfahren von Linien, die Straßen überschneiden, verbieten. Mit einer Linien-Barriere kann beispielsweise eine Parade oder Demonstration modelliert werden, die den Verkehr über mehrere Straßenzüge hinweg blockiert. Mit einer Linien-Barriere können außerdem schnell mehrere Straßen abgeriegelt werden, um unerwünschte Teile des Straßennetzes aus den möglichen Routen auszuschließen. Die Anzahl der Straßen, die mithilfe des Werkzeugparameters "Linien-Barrieren" beschränkt werden können, ist begrenzt. Es wird zwar keine Begrenzung für die Anzahl der Linien genannt, die Sie als Linien-Barrieren angeben können, doch die Gesamtzahl der Straßen, die von allen Linien überschnitten werden, darf 500 nicht überschreiten. Bei der Angabe von Linien-Barrieren können Sie mithilfe des folgenden Attributs für jede eine Eigenschaft "Name" festlegen: Name: Der Name der Barriere. | Feature Set |
polygon_barriers (optional) | Geben Sie Polygone an, die entweder den Verkehr vollständig beschränken oder für die mehr Zeit oder eine längere Strecke für das Durchfahren der von den Polygonen überschnittenen Straßen veranschlagt wird. Der Service begrenzt die Anzahl der Straßen, die Sie mithilfe des Parameters "Polygon-Barrieren" beschränken können. Es wird zwar keine Begrenzung für die Anzahl der Polygone genannt, die Sie als Polygon-Barrieren angeben können, doch die Gesamtzahl der Straßen, die von allen Polygonen überschnitten werden, darf 2.000 nicht überschreiten. Bei der Angabe von Polygon-Barrieren können Sie mithilfe von Attributen deren jeweilige Eigenschaften, darunter Name oder Barrierentyp, festlegen. Für die Polygon-Barrieren können folgende Attribute angegeben werden: Name: Der Name der Barriere. BarrierType: Gibt an, ob die Barriere den Verkehr vollständig beschränkt oder ob beim Durchfahren der Barriere ein Mehraufwand an Zeit oder Entfernung entsteht. Der Feldwert wird als eine der nachfolgenden Ganzzahlen angegeben (verwenden Sie nicht den Namen in Klammern, sondern den numerischen Code):
ScaledTimeFactor: Um diesen Faktor erhöht sich die Fahrzeit durch die Straßen, die von der Barriere überschnitten werden. Dieses Feld gilt nur für Barrieren vom Typ "Kostenfaktor" und ausschließlich für zeitbasierte Maßeinheiten. Der Feldwert muss größer 0 sein. ScaledDistanceFactor: Um diesen Faktor erhöht sich die zurückgelegte Entfernung durch die Straßen, die von der Barriere überschnitten werden. Dieses Attribut gilt nur für Barrieren vom Typ "Kostenfaktor" und ausschließlich für entfernungsbasierte Maßeinheiten. Der Attributwert muss größer als null sein. | Feature Set |
use_hierarchy_in_analysis (optional) | Geben Sie an, ob beim Suchen der besten Route die Hierarchie verwendet werden soll.
Das Werkzeug verwendet die Hierarchie automatisch, wenn die geradlinige Entfernung zwischen Aufträgen oder Depots bzw. zwischen Aufträgen und Depots 80 km überschreitet, selbst dann, selbst wenn Sie eingestellt haben, dass die Hierarchie von diesem Parameter nicht verwendet werden soll. Der von Ihnen für diesen Parameter eingegebene Wert wird ignoriert, es sei denn, Reisemodus ist auf Benutzerdefiniert festgelegt, was dem Standardwert entspricht. | Boolean |
restrictions (optional) | Geben Sie an, welche Einschränkungen von dem Werkzeug bei der Ermittlung der besten Routen berücksichtigt werden sollen. Der von Ihnen für diesen Parameter eingegebene Wert wird ignoriert, es sei denn, Reisemodus ist auf Benutzerdefiniert festgelegt, was dem Standardwert entspricht. Einschränkungen sind Präferenzen oder Anforderungen eines Fahrers. In den meisten Fällen führen Einschränkungen dazu, dass Straßen unzulässig werden. Wird beispielsweise die Beschränkung "Mautstraßen vermeiden" verwendet, enthält die berechnete Route Mautstraßen nur dann, wenn das Befahren solcher Straßen zum Erreichen eines Ereignisses oder einer Einrichtung absolut notwendig ist. Mit Höheneinschränkung können sämtliche Abstände unterhalb der Fahrzeughöhe vermieden werden. Wenn Sie korrosive Materialien mit dem Fahrzeug transportieren, wird mit der Einschränkung "Gefahrgut verboten" vermieden, dass diese Materialien auf Straßen transportiert werden, die für solche Transporte als unzulässig markiert sind. Nachfolgend finden Sie eine Liste der verfügbaren Einschränkungen und eine kurze Beschreibung. Das Werkzeug unterstützt die folgenden Einschränkungen:
| String |
attribute_parameter_values (optional) | Geben Sie zusätzliche erforderliche Werte für Einschränkungen an, z. B. das Gewicht eines Fahrzeugs für die Gewichtseinschränkung. Außerdem können Sie mit dem Attributparameter angeben, ob aufgrund von Einschränkungen das Fahren auf Straßen, auf denen die Einschränkung gilt, unzulässig ist bzw. vermieden oder bevorzugt wird. Wenn aufgrund der Einschränkung Straßen vermieden oder bevorzugt werden sollen, können Sie den Grad der Vermeidung bzw. Bevorzugung mit diesem Parameter genauer angeben. Sie können beispielsweise auswählen, mautpflichtige Straßen grundsätzlich nicht zu verwenden, soweit als möglich zu meiden oder sogar sehr zu bevorzugen. Der von Ihnen für diesen Parameter eingegebene Wert wird ignoriert, es sei denn, Reisemodus ist auf Benutzerdefiniert festgelegt, was dem Standardwert entspricht. Wenn Sie den Parameter Attributparameterwerte aus einer Feature-Class angeben, müssen die Feldnamen in der Feature-Class mit den nachfolgend beschriebenen Feldern übereinstimmen: AttributeName: Listet den Namen der Einschränkung auf. ParameterName: Listet den Namen des mit der Einschränkung verknüpften Parameters auf. Eine Einschränkung kann abhängig von der geplanten Verwendung einen oder mehrere ParameterName-Feldwerte enthalten. ParameterValue: Der Wert für den vom Werkzeug verwendeten "ParameterName" bei der Auswertung der Beschränkung. "Attributparameterwerte" hängt vom Parameter "Einschränkungen" ab. Das Feld "ParameterValue" ist nur zutreffend, wenn als Name der Einschränkung der Wert für den Parameter "Einschränkungen" angegeben wird. In "Attributparameterwerte" verfügt jede Einschränkung (als "AttributeName" aufgelistet) über einen Wert für das Feld "ParameterName", eine Verwendung von Einschränkungen, mit der angegeben wird, ob von der Einschränkung das Fahren auf Straßen, die mit der Einschränkung verknüpft sind, nicht zugelassen, vermieden oder bevorzugt wird, und der Grad, in dem diese Straßen vermieden oder bevorzugt werden sollen. "ParameterName" der Verwendung von Einschränkungen kann einer der folgenden Zeichenfolgenwerte oder der ihm entsprechende numerische Wert in Klammern zugewiesen werden:
In den meisten Fällen können Sie für "Verwendung von Beschränkungen" den Standardwert ("PROHIBITED") verwenden, wenn die Einschränkung von einer Fahrzeugeigenschaft, wie z. B. der Höhe, abhängig ist. In einigen Fällen hängt der Wert für die Verwendung der Einschränkung jedoch von den bevorzugten Verbindungen ab. Für die Einschränkung "Mautstraßen vermeiden " etwa ist der Standardwert für den Parameter "Verwendung von Einschränkungen" die Einstellung AVOID_MEDIUM. Dies bedeutet, dass das Werkzeug bei Verwendung dieser Einschränkung versucht, Mautstraßen nach Möglichkeit zu meiden. AVOID_MEDIUM weist außerdem darauf hin, wie wichtig es ist, Mautstraßen bei der Ermittlung der optimalen Route zu meiden. Dies hat eine mittlere Priorität. Durch Auswahl von AVOID_LOW wird der Vermeidung von Mautstraßen geringere Bedeutung zugeordnet; durch Auswahl von AVOID_HIGH hingegen wird der Vermeidung eine höhere Bedeutung zugeordnet, wodurch die Erstellung einer längeren Route zur Vermeidung von Mautstraßen für den Service akzeptabler wird. Bei der Auswahl von PROHIBITED ist das Befahren von Mautstraßen völlig unzulässig, wobei eine Route keinesfalls einen Teil einer Mautstraße enthalten kann. Beachten Sie, dass für einige Personen das Ziel darin besteht, Mautstraßen zu vermeiden bzw. zu verhindern und damit auch die Bezahlung von Mautgebühren zu vermeiden, und dass andere hingegen Mautstraßen bevorzugen, da sie der Vermeidung von hohem Verkehrsaufkommen mehr Bedeutung beimessen als der Bezahlung von Mautgebühren. Im letzteren Fall würden Sie PREFER_LOW, PREFER_MEDIUM oder PREFER_HIGH als Wert für "Verwendung der Einschränkung" auswählen. Je höher die Prioritätseinstellung, desto mehr versucht das Werkzeug, das Fahren auf Straßen, die dieser Einschränkung zugeordnet sind, zu meiden. | Record Set |
populate_route_lines (optional) |
Wenn für den Parameter "Routen-Shape" die Einstellung "Echtes Shape" festgelegt wurde, kann die Generalisierung des Routen-Shape mit den geeigneten Werten für die Parameter "Vereinfachungstoleranz für Routenlinien" weiter gesteuert werden. Unabhängig von dem für den Parameter "Routen-Shape" gewählten Wert wird die beste Route nie durch die geradlinige Strecke, sondern stets mittels Minimierung der Fahrstrecke durch die Straßen ermittelt. Dies bedeutet, dass sich nur die Routen-Shapes und nicht die zugrunde liegenden Straßen, die beim Ermitteln der Route berücksichtigt werden, unterscheiden. | Boolean |
route_line_simplification_tolerance (optional) | Geben Sie an, wie stark Sie die Routengeometrie vereinfachen möchten. Der von Ihnen für diesen Parameter eingegebene Wert wird ignoriert, es sei denn, Reisemodus ist auf Benutzerdefiniert festgelegt, was dem Standardwert entspricht. Dieser Parameter wird auch vom Werkzeug ignoriert, wenn der Parameter populate_route_lines deaktiviert (False) ist. Bei der Vereinfachung werden kritische Punkte auf einer Route beibehalten, wie Übergänge an Kreuzungen, um das wesentliche Shape der Route zu definieren, und andere Punkte entfernt. Die angegebene Vereinfachungsentfernung stellt den maximal zulässigen Versatz dar, den die vereinfachte Linie von der ursprünglichen Linie abweichen kann. Durch die Vereinfachung einer Linie wird die Anzahl der Stützpunkte in der Routengeometrie reduziert. Dadurch wird die Ausführungszeit des Werkzeugs verbessert. | Linear Unit |
populate_directions (optional) | Geben Sie an, ob vom Werkzeug Wegbeschreibungen für die einzelnen Routen generiert werden sollen.
| Boolean |
directions_language (optional) | Geben Sie an, in welcher Sprache Wegbeschreibungen generiert werden sollen. Dieser Parameter wird nur verwendet, wenn der Parameter populate_directions aktiviert oder auf "True" gesetzt wurde. Bei der Angabe des Parameterwertes ist einer der folgenden aus zwei oder fünf Zeichen bestehenden Sprachcodes zu verwenden:
Wenn ein nicht unterstützter Sprachcode angegeben wird, werden die Wegbeschreibungen in der Standardsprache Englisch ausgegeben. | String |
directions_style_name (optional) | Geben Sie den Namen des Formatierungsstils für die Wegbeschreibung an. Dieser Parameter wird nur verwendet, wenn der Parameter Wegbeschreibungen füllen aktiviert oder auf True gesetzt wurde. Der Parameter kann mit den folgenden Werten angegeben werden:
| String |
travel_mode (optional) | Legen Sie die Transportmethode für die Modellierung in der Analyse fest. Reisemodi werden in ArcGIS Online verwaltet und können vom Administrator Ihrer Organisation konfiguriert werden, um die Workflows Ihrer Organisation widerzuspiegeln. Sie müssen den Namen eines Reisemodus angeben, der von Ihrer Organisation unterstützt wird. Um eine Liste der unterstützten Namen für Reisemodi abzurufen, verwenden Sie dieselbe GIS-Serververbindung wie für den Zugriff auf das Werkzeug, und führen Sie GetTravelModes über die Toolbox Dienstprogramme aus. Das Werkzeug "GetTravelModes" fügt der Anwendung die Tabelle "Unterstützte Reisemodi" hinzu. Jeder Wert im Feld "Name des Reisemodus" aus der Tabelle "Unterstützte Reisemodi" kann als Eingabe angegeben werden. Sie können auch den Wert aus dem Feld für die Reisemodi-Einstellungen als Eingabe festlegen. Dadurch wird die Ausführung des Werkzeugs beschleunigt, da das Werkzeug die Einstellungen nicht basierend auf dem Namen des Reisemodus suchen muss. Der Standardwert Benutzerdefiniert ermöglicht Ihnen das Konfigurieren eines eigenen Reisemodus mithilfe der benutzerdefinierten Reisemodusparameter (Wenden an Kreuzungen, Hierarchie verwenden, Beschränkungen, Attributparameterwerte und Impedanz). Die Standardwerte des benutzerdefinierten Reisemodusparameters modellieren die Fahrt mit dem Auto. Sie können Benutzerdefiniert auswählen und die oben aufgeführten benutzerdefinierten Reisemodusparameter festlegen, um einen Fußgänger mit schneller Gehgeschwindigkeit zu modellieren oder einen Lkw, der eine bestimmte Höhe, ein bestimmtes Gewicht oder eine bestimmte Gefahrgutfracht hat. Auf diese Weise können Sie verschiedene Einstellungen ausprobieren, um die gewünschten Analyseergebnisse zu erhalten. Nachdem Sie die Analyseeinstellungen identifiziert haben, sollten Sie mit dem Administrator Ihrer Organisation zusammenarbeiten und diese Einstellungen als Teil eines neuen oder vorhandenen Reisemodus speichern, damit alle Benutzer in Ihrer Organisation die Analyse erneut mit denselben Einstellungen ausführen können. | String |
impedance (optional) | Legen Sie die Impedanz fest. Das ist ein Wert, der den Aufwand bzw. die Kosten des Reisens entlang von Straßensegmenten oder anderen Teilen des Verkehrsnetzes repräsentiert. Die Fahrzeit ist eine Impedanz. Ein Auto, das auf einer leeren Straße nur eine Minute für einen Kilometer benötigt, ist ein Beispiel für Impedanz. Die Fahrzeiten können sich je nach Reisemodus ändern (ein Fußgänger kann für einen Kilometer mehr als 10 Minuten benötigen), weshalb es wichtig ist, die richtige Impedanz für den von Ihnen modellierten Reisemodus zu wählen. Ihnen stehen folgende Impedanzwerte zur Auswahl:
Der von Ihnen für diesen Parameter eingegebene Wert wird ignoriert, es sei denn, Reisemodus ist auf Benutzerdefiniert festgelegt, was dem Standardwert entspricht. | String |
time_zone_usage_for_time_fields (optional) | Gibt die Zeitzone für die Datums-/Zeit-Eingabefelder an, die vom Werkzeug unterstützt werden. Mit diesem Parameter wird die Zeitzone für die folgenden Felder angegeben: TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2, TimeWindowEnd2, InboundArriveTime und OutboundDepartTime für Aufträge. TimeWindowStart1, TimeWindowEnd1, TimeWindowStart2 und TimeWindowEnd2 für Depots. EarliestStartTime und LatestStartTime für Routen. TimeWindowStart und TimeWindowEnd für Pausen.
Es ist hilfreich, die Werte für Datum/Uhrzeit in UTC anzugeben, wenn Sie die Zeitzone nicht kennen, in der sich die Aufträge oder Depots befinden, oder wenn Sie über Aufträge und Depots in mehreren Zeitzonen verfügen und alle Werte für Datum/Uhrzeit gleichzeitig gestartet werden sollen. Die UTC-Option kann nur angewendet werden, wenn Ihr Netzwerk-Dataset ein Zeitzonenattribut definiert. Anderenfalls werden alle Werte für Datum/Zeit immer als GEO_LOCAL behandelt. | string |
save_output_layer (optional) | Legen Sie fest, ob das Werkzeug die Analyseeinstellungen als Netzwerkanalyse-Layer-Datei speichern soll. Auch wenn Sie diese Datei in einer ArcGIS Desktop-Anwendung wie ArcMap öffnen, können Sie nicht direkt mit dieser Datei arbeiten. Sie wird vielmehr an den technischen Support von Esri gesandt, wo die Qualität der vom Werkzeug zurückgelieferten Ergebnisse beurteilt wird.
| Boolean |
overrides (optional) | Legen Sie zusätzliche Einstellungen fest, die das Verhalten des Solvers beim Suchen von Lösungen für die Netzwerkanalyseprobleme beeinflussen können. Der Wert dieses Parameters muss in JavaScript Object Notation (JSON) angegeben werden. Ein gültiger Wert hat beispielsweise das Format {"overrideSetting1" : "value1", "overrideSetting2" : "value2"}. Der Name der Override-Einstellung wird immer in doppelten Anführungszeichen angegeben. Die Werte können eine Zahl, ein boolescher Wert oder eine Zeichenfolge sein. Der Standardwert für diesen Parameter ist kein Wert, was darauf hinweist, dass keine Solver-Einstellungen überschrieben werden. Overrides sind erweiterte Einstellungen, die nur nach sorgfältiger Analyse der abgerufenen Ergebnisse vor und nach Anwendung der Einstellungen verwendet werden sollten. Eine Liste der unterstützten Override-Einstellungen und ihrer akzeptierten Werte erhalten Sie beim technischen Support von Esri. | String |
save_route_data (optional) | Legen Sie fest, ob die Ausgabe eine ZIP-Datei mit einer File-Geodatabase enthalten soll, in der die Eingaben und Ausgaben der Analyse in einem Format vorliegen, das zum Freigeben von Routen-Layern mit ArcGIS Online oder Portal for ArcGIS verwendet werden kann.
| Boolean |
Codebeispiel
Mit dem folgenden Python-Skript wird veranschaulicht, wie Sie das Werkzeug "EditVehicleRoutingProblem" in einem Skript verwenden.
'''
The script shows how to use the EditVehicleRoutingProblem tool in a script. It demonstrates how to obtain the schema for
the inputs, populate the inputs, excute the tool and save the results.
'''
import sys
import arcpy
#Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"
vrp_service = "https://logistics.arcgis.com/arcgis/services;World/VehicleRoutingProblemSync;{0};{1}".format(username, password)
#Add the geoprocessing service as a toolbox. The alias will be the service name
arcpy.ImportToolbox(vrp_service)
vrp_tool_name = "EditVehicleRoutingProblem_VehicleRoutingProblemSync"
#Set the variables to store results from the tool. Overwrite the results if they already exist.
arcpy.env.overwriteOutput = True
output_routes = "C:/data/Results.gdb/Routes"
assigned_orders = "C:/data/Results.gdb/AssignedOrders"
unassigned_orders = "C:/data/Results.gdb/UnassignedOrders"
#Get the schema for input orders, depots and routes
input_orders = arcpy.GetParameterValue(vrp_tool_name, 0)
input_depots = arcpy.GetParameterValue(vrp_tool_name, 1)
input_routes = arcpy.GetParameterValue(vrp_tool_name, 2)
#Create two orders as input. The coordinate values are in WGS84 spatial reference.
#AssignmentRule for orders is 3 which specifies that the tool should assign a new
#sequence and route for every order.
orders = [(-122.51, 37.7724), (-122.4889, 37.7538)]
sr = arcpy.SpatialReference(4326)
with arcpy.da.InsertCursor(input_orders, ("SHAPE@", "Name", "AssignmentRule")) as cursor:
for i, order in enumerate(orders):
order_shape = arcpy.PointGeometry(arcpy.Point(order[0], order[1]), sr)
row = (order_shape, "O{}".format(i + 1), 3)
cursor.insertRow(row)
#Create one depot as input. The coordinate values are in WGS84 spatial reference
depots = [(-122.3943, 37.7967)]
with arcpy.da.InsertCursor(input_depots, ("SHAPE@", "Name")) as cursor:
for i, depot in enumerate(depots):
depot_shape = arcpy.PointGeometry(arcpy.Point(depot[0], depot[1]), sr)
row = (depot_shape, "D{}".format(i + 1))
cursor.insertRow(row)
#Create one route as input. Ensure that the StartDepotName and EndDepotName fields on routes has same
#value as the Name field on input depots. AssignmentRule for routes is 1 which specifies that the tool
#must include the route. CostPerUnitTime and MaxOrderCount are fields that cannot have null values if
#the route is to be considered as a valid route.
with arcpy.da.InsertCursor(input_routes, ("Name", "StartDepotName", "EndDepotName", "AssignmentRule", "CostPerUnitTime", "MaxOrderCount")) as cursor:
row = ("R1", "D1", "D1", 1, 1, 10)
cursor.insertRow(row)
#Call the tool
arcpy.AddMessage("Running the analysis")
result = arcpy.EditVehicleRoutingProblem_VehicleRoutingProblemSync(input_orders, input_depots, input_routes)
#Print any warning or error messages returned from the tool
result_severity = arcpy.GetMaxSeverity()
if result_severity == 2:
arcpy.AddMessage("An error occured when running the tool")
arcpy.AddMessage(arcpy.GetMessages(2))
sys.exit(2)
elif result_severity == 1:
arcpy.AddMessage("Warnings were returned when running the tool")
arcpy.AddMessage(arcpy.GetMessages(1))
#Get the output routes and orders and save to a local geodatabase
result.getOutput(0).save(unassigned_orders)
result.getOutput(1).save(assigned_orders)
result.getOutput(2).save(output_routes)
Umgebungen
Dieses Werkzeug verwendet keine Geoverarbeitungsumgebungen.