Index
RouteOptimization
(Benutzeroberfläche)AggregatedMetrics
(Meldung)BatchOptimizeToursMetadata
(Meldung)BatchOptimizeToursRequest
(Meldung)BatchOptimizeToursRequest.AsyncModelConfig
(Meldung)BatchOptimizeToursResponse
(Meldung)BreakRule
(Meldung)BreakRule.BreakRequest
(Meldung)BreakRule.FrequencyConstraint
(Meldung)DataFormat
(Aufzählung)DistanceLimit
(Meldung)GcsDestination
(Meldung)GcsSource
(Meldung)InjectedSolutionConstraint
(Meldung)InjectedSolutionConstraint.ConstraintRelaxation
(Meldung)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation
(Meldung)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level
(Aufzählung)InputConfig
(Meldung)Location
(Meldung)OptimizeToursRequest
(Meldung)OptimizeToursRequest.SearchMode
(enum)OptimizeToursRequest.SolvingMode
(enum)OptimizeToursResponse
(Meldung)OptimizeToursResponse.Metrics
(Meldung)OptimizeToursValidationError
(Meldung)OptimizeToursValidationError.FieldReference
(Meldung)OutputConfig
(Meldung)Shipment
(Meldung)Shipment.Load
(Meldung)Shipment.VisitRequest
(Meldung)ShipmentModel
(Meldung)ShipmentModel.DurationDistanceMatrix
(Meldung)ShipmentModel.DurationDistanceMatrix.Row
(Meldung)ShipmentModel.PrecedenceRule
(Meldung)ShipmentRoute
(Meldung)ShipmentRoute.Break
(Meldung)ShipmentRoute.EncodedPolyline
(Meldung)ShipmentRoute.Transition
(Meldung)ShipmentRoute.VehicleLoad
(Meldung)ShipmentRoute.Visit
(Meldung)ShipmentTypeIncompatibility
(Meldung)ShipmentTypeIncompatibility.IncompatibilityMode
(Aufzählung)ShipmentTypeRequirement
(Meldung)ShipmentTypeRequirement.RequirementMode
(Aufzählung)SkippedShipment
(Meldung)SkippedShipment.Reason
(Meldung)SkippedShipment.Reason.Code
(Aufzählung)TimeWindow
(Meldung)TransitionAttributes
(Meldung)Vehicle
(Meldung)Vehicle.DurationLimit
(Meldung)Vehicle.LoadLimit
(Meldung)Vehicle.LoadLimit.Interval
(Meldung)Vehicle.TravelMode
(enum)Vehicle.UnloadingPolicy
(enum)Waypoint
(Nachricht)
RouteOptimization
Ein Dienst zur Optimierung von Fahrzeugtouren.
Gültigkeit bestimmter Feldtypen:
google.protobuf.Timestamp
- Die Zeiten werden in Unix-Zeit angegeben: Sekunden seit 1970-01-01T00:00:00+00:00.
- Sekunden muss in [0, 253402300799], d.h. in [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] angegeben werden.
- Nanos müssen nicht festgelegt oder auf „0“ festgelegt sein.
google.protobuf.Duration
- Sekunden muss in [0, 253402300799], d.h. in [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] angegeben werden.
- Nanos müssen nicht festgelegt oder auf „0“ festgelegt sein.
google.type.LatLng
- Breitengrad muss im Bereich [-90.0, 90.0] angegeben werden.
- Längengrad muss im Bereich [-180.0, 180.0] angegeben werden.
- mindestens einer der Werte für Breitengrad und Längengrad darf nicht null sein.
BatchOptimizeTours |
---|
Es werden Fahrzeugtouren für eine oder mehrere Diese Methode ist ein Vorgang mit langer Ausführungszeit. Die Eingaben zur Optimierung (
|
OptimizeTours |
---|
Sendet eine Ein Ziel ist es, eine Zuweisung von
|
AggregatedMetrics
Zusammengefasste Messwerte für ShipmentRoute
(bzw. für OptimizeToursResponse
für alle Transition
- und/oder Visit
-Elemente (bzw. für alle ShipmentRoute
)).
Felder | |
---|---|
performed_shipment_count |
Anzahl der durchgeführten Sendungen. Beachten Sie, dass ein Paket für Abholung und Lieferung nur einmal gezählt wird. |
travel_duration |
Gesamtreisedauer für eine Route oder Lösung. |
wait_duration |
Gesamtwartezeit für eine Route oder Lösung. |
delay_duration |
Gesamtverzögerungszeit für eine Route oder Lösung. |
break_duration |
Gesamtdauer der Unterbrechung für eine Route oder Lösung. |
visit_duration |
Gesamtbesuchsdauer für eine Route oder eine Lösung. |
total_duration |
Die Gesamtdauer sollte der Summe aller obigen Angaben entsprechen. Bei Routen entspricht er außerdem:
|
travel_distance_meters |
Gesamtstrecke für eine Route oder Lösung. |
max_loads |
Maximale Last, die auf der gesamten Route (entsprechend der Lösung) für jede der Mengen auf dieser Route (bzw. Lösung) erreicht wurde, berechnet als Maximalwert über alle |
BatchOptimizeToursMetadata
Dieser Typ hat keine Felder.
Vorgangsmetadaten für BatchOptimizeToursRequest
-Aufrufe.
BatchOptimizeToursRequest
Anfrage zur Batchoptimierung von Touren als asynchronen Vorgang Jede Eingabedatei sollte ein OptimizeToursRequest
enthalten und jede Ausgabedatei enthält ein OptimizeToursResponse
. Die Anfrage enthält Informationen zum Lesen/Schreiben und Parsen der Dateien. Alle Ein- und Ausgabedateien sollten sich im selben Projekt befinden.
Felder | |
---|---|
parent |
Erforderlich. Zielprojekt und Standort zum Anrufen festlegen. Format: * Wenn kein Standort angegeben ist, wird automatisch eine Region ausgewählt. |
model_configs[] |
Erforderlich. Eingabe-/Ausgabeinformationen für jedes Kaufmodell, z. B. Dateipfade und Datenformate. |
AsyncModelConfig
Informationen zur asynchronen Lösung eines Optimierungsmodells.
Felder | |
---|---|
display_name |
Optional. Benutzerdefinierter Modellname, kann von Nutzern als Alias verwendet werden, um Modelle im Blick zu behalten. |
input_config |
Erforderlich. Informationen zum Eingabemodell. |
output_config |
Erforderlich. Die gewünschten Informationen zum Ausgabeort. |
BatchOptimizeToursResponse
Dieser Typ hat keine Felder.
Antwort auf eine BatchOptimizeToursRequest
. Dies wird im lang andauernden Vorgang zurückgegeben, nachdem der Vorgang abgeschlossen ist.
BreakRule
Regeln zum Erstellen von Pausen für ein Fahrzeug (z. B. Mittagspausen) Eine Pause ist ein zusammenhängender Zeitraum, in dem das Fahrzeug in seiner aktuellen Position inaktiv bleibt und keine Besuche durchführen kann. Es kann zu einer Unterbrechung kommen:
- der Fahrt zwischen zwei Besichtigungen (einschließlich der Zeit direkt vor oder direkt nach einem Besuch, aber nicht in der Mitte eines Besuchs). In diesem Fall wird die Laufzeit zwischen den Besuchen verlängert.
- oder vor dem Start des Fahrzeugs (das Fahrzeug darf nicht mitten in einer Pause starten). In diesem Fall hat dies keinen Einfluss auf die Startzeit des Fahrzeugs.
- oder nach dem Ende des Fahrzeugs (Dito, mit der Endzeit des Fahrzeugs).
Felder | |
---|---|
break_requests[] |
Reihenfolge der Pausen Siehe |
frequency_constraints[] |
Möglicherweise gelten mehrere |
BreakRequest
Die Reihenfolge der Pausen, d.h. deren Anzahl und Reihenfolge, für jedes Fahrzeug muss im Voraus bekannt sein. Die wiederholten BreakRequest
s definieren diese Sequenz in der Reihenfolge, in der sie auftreten müssen. Ihre Zeitfenster (earliest_start_time
/ latest_start_time
) können sich überschneiden, müssen aber mit der Bestellung kompatibel sein (es ist aktiviert).
Felder | |
---|---|
earliest_start_time |
Erforderlich. Die Untergrenze (einschließlich) zu Beginn der Unterbrechung. |
latest_start_time |
Erforderlich. Obergrenze (einschließlich) zu Beginn der Unterbrechung. |
min_duration |
Erforderlich. Die Mindestdauer der Unterbrechung. Muss positiv sein. |
FrequencyConstraint
Die Häufigkeit und Dauer der oben angegebenen Pausen kann weiter eingeschränkt werden, indem eine Mindesthäufigkeit für Pausen erzwungen wird, z. B. „Alle 12 Stunden muss eine Pause von mindestens 1 Stunde stattfinden“. Wenn dies so interpretiert werden kann, dass in einem fließenden Zeitfenster von 12 Stunden mindestens eine Pause von mindestens einer Stunde vorhanden ist, würde dieses Beispiel so interpretiert werden: FrequencyConstraint
:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Das Timing und die Dauer der Pausen in der Lösung berücksichtigen alle diese Einschränkungen zusätzlich zu den Zeitfenstern und Mindestdauern, die bereits in BreakRequest
angegeben sind.
Ein FrequencyConstraint
kann in der Praxis auch für nicht aufeinanderfolgende Unterbrechungen gelten. Im folgenden Zeitplan wird beispielsweise das Beispiel „1h alle 12h“ berücksichtigt:
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
Felder | |
---|---|
min_break_duration |
Erforderlich. Minimale Pausendauer für diese Einschränkung. Nicht negativ. Siehe Beschreibung von |
max_inter_break_duration |
Erforderlich. Maximal zulässige Spanne für ein Zeitintervall auf der Route, das nicht zumindest teilweise eine Unterbrechung von |
DataFormat
Datenformate für Eingabe- und Ausgabedateien.
Enums | |
---|---|
DATA_FORMAT_UNSPECIFIED |
Ungültiger Wert. Das Format darf nicht UNSPECIFIED sein. |
JSON |
JavaScript Object Notation. |
PROTO_TEXT |
Textformat „Protokollzwischenspeicher“. Siehe https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
Ein Limit für die maximale Strecke, die zurückgelegt werden kann. Sie kann entweder hart oder weich sein.
Wenn ein „weiches Limit“ definiert ist, müssen sowohl soft_max_meters
als auch cost_per_kilometer_above_soft_max
definiert und nicht negativ sein.
Felder | |
---|---|
max_meters |
Ein hartes Limit, das die Entfernung auf höchstens „max_meters“ beschränkt. Das Limit darf nicht negativ sein. |
soft_max_meters |
Ein weiches Limit erzwingt kein maximales Entfernungslimit. Wenn es jedoch überschritten wird, entstehen Kosten, die zu den im Modell definierten Kosten mit derselben Einheit addiert werden. Wenn definiert, muss „soft_max_meters“ kleiner als „max_meters“ sein und darf nicht negativ sein. |
cost_per_kilometer_above_soft_max |
Es fallen Kosten pro Kilometer an, wenn die Entfernung über dem Limit von
Die Kosten dürfen nicht negativ sein. |
GcsDestination
Der Google Cloud Storage-Speicherort, in den die Ausgabedatei(en) geschrieben wird.
Felder | |
---|---|
uri |
Erforderlich. Google Cloud Storage-URI. |
GcsSource
Der Google Cloud Storage-Speicherort, aus dem die Eingabedatei gelesen wird.
Felder | |
---|---|
uri |
Erforderlich. URI eines Google Cloud Storage-Objekts im Format |
InjectedSolutionConstraint
Eine in die Anfrage eingefügte Lösung, einschließlich Informationen darüber, welche Besuche und wie sie eingeschränkt werden müssen.
Felder | |
---|---|
routes[] |
Routen der einzuführenden Lösung. Einige Routen werden in der ursprünglichen Lösung möglicherweise weggelassen. Die Routen und übersprungenen Sendungen müssen die für |
skipped_shipments[] |
Lieferungen der Injektionslösung übersprungen. Einige davon werden in der ursprünglichen Lösung möglicherweise weggelassen. Siehe Feld |
constraint_relaxations[] |
Gibt für keine oder mehr Fahrzeuggruppen an, wann und wie stark die Einschränkungen gelockert werden sollen. Wenn dieses Feld leer ist, sind alle nicht leeren Fahrzeugrouten vollständig eingeschränkt. |
ConstraintRelaxation
Gibt für eine Gruppe von Fahrzeugen an, bei welchen Schwellenwerten die Einschränkungen für Besuche auf welcher Ebene gelockert werden. Lieferungen im Feld skipped_shipment
können nicht übersprungen werden und können daher nicht ausgeführt werden.
Felder | |
---|---|
relaxations[] |
Alle Lockerungen der Besuchsbeschränkung, die für Besuche auf Routen mit Fahrzeugen in |
vehicle_indices[] |
Gibt die Fahrzeugindexe an, für die die Ein Fahrzeugindex wird genauso wie |
Entspannung
Wenn relaxations
leer ist, sind Startzeit und Reihenfolge aller Besuche am routes
vollständig beschränkt, und in diese Routen können keine neuen Besuche eingefügt oder hinzugefügt werden. Außerdem sind die Start- und Endzeit eines Fahrzeugs in routes
vollständig begrenzt, es sei denn, das Fahrzeug ist leer, d.h. es wurden keine Durchfahrten durchgeführt und used_if_route_is_empty
im Modell auf „false“ gesetzt.
relaxations(i).level
gibt das Entspannungsniveau der Einschränkung an, das auf einen Besuch #j angewendet wird, der folgende Kriterien erfüllt:
route.visits(j).start_time >= relaxations(i).threshold_time
UNDj + 1 >= relaxations(i).threshold_visit_count
Ebenso wird das Starten des Fahrzeugs auf relaxations(i).level
gelockert, wenn folgende Bedingungen erfüllt sind:
vehicle_start_time >= relaxations(i).threshold_time
UNDrelaxations(i).threshold_visit_count == 0
und das Ende des Fahrzeugs wird aufrelaxations(i).level
gelockert, wenn Folgendes erfüllt:vehicle_end_time >= relaxations(i).threshold_time
UNDroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Wenn ein Entspannungsgrad angewendet wird, wenn ein Besuch die threshold_visit_count
ODER die threshold_time
trifft, fügen Sie zwei relaxations
mit derselben level
hinzu: eine mit nur threshold_visit_count
und die andere mit nur threshold_time
. Wenn ein Besuch die Bedingungen mehrerer relaxations
erfüllt, gilt die strengste Stufe. Infolgedessen nimmt der Entspannungsgrad vom Start über die Routenbesichtigungen bis zum Ende der Route weniger ab.
Die Zeitangaben und die Abfolge von Routenbesuchen, die die Schwellenwertbedingungen einer beliebigen relaxations
nicht erfüllen, sind vollständig eingeschränkt. In diese Abfolgen können keine Besuche eingefügt werden. Wenn das Start- oder Ende eines Fahrzeugs die Bedingungen einer Entspannung nicht erfüllt, wird die Zeit festgesetzt, es sei denn, das Fahrzeug ist leer.
Felder | |
---|---|
level |
Die Stufe der Einschränkungslockerung, die gilt, wenn die Bedingungen bei oder nach |
threshold_time |
Der Zeitpunkt, zu dem oder nach dem die |
threshold_visit_count |
Anzahl der Besuche, bei denen oder nach der Wenn der Wert |
Ebene
Drückt die verschiedenen einschränkenden Entspannungsstufen aus, die für einen Besuch angewendet werden und die folgenden, wenn die Schwellenwertbedingungen erfüllt sind.
Die folgende Aufzählung bezieht sich auf die zunehmende Entspannung.
Enums | |
---|---|
LEVEL_UNSPECIFIED |
Implizites Standardentspannungsniveau: Keine Beschränkungen werden gelockert, d.h. alle Besuche sind vollständig eingeschränkt. Dieser Wert darf in |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Startzeiten und Start- und Endzeiten der Fahrzeuge werden gelockert, aber jeder Besuch bleibt an dasselbe Fahrzeug gebunden und die Besuchsabfolge muss beobachtet werden: Zwischen den beiden oder davor kann kein Besuch eingefügt werden. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Wie RELAX_VISIT_TIMES_AFTER_THRESHOLD , aber die Besuchssequenz ist auch gelockert: Besuche bleiben einfach an das Fahrzeug gebunden. |
RELAX_ALL_AFTER_THRESHOLD |
Wie „RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD “, aber das Fahrzeug ist auch entspannt: Besuche sind zum oder nach dem Grenzwert völlig kostenlos und können unter Umständen nicht ausgeführt werden. |
InputConfig
Geben Sie eine Eingabe für [BatchOptimizeTours][google.maps.routeOptimization.v1.RouteOptimizationService.BatchOptimizeTours] an.
Felder | |
---|---|
data_format |
Erforderlich. Das Format der Eingabedaten. |
Union-Feld source . Erforderlich. Für source ist nur einer der folgenden Werte zulässig: |
|
gcs_source |
Ein Google Cloud Storage-Speicherort. Dies muss ein einzelnes Objekt (eine Datei) sein. |
Standort
Zusammenfassung eines Standorts (ein geografischer Punkt und eine optionale Ausrichtung)
Felder | |
---|---|
lat_lng |
Die geografischen Koordinaten des Wegpunkts |
heading |
Die Kompassrichtung, die der Verkehrsrichtung zugeordnet ist. Mit diesem Wert wird die Seite der Straße angegeben, die als Start- und Zielseite verwendet werden soll. Die Richtungswerte können zwischen 0 und 360 liegen, wobei 0 eine Richtung nach Norden, 90 eine Richtung nach Osten usw. angibt. |
OptimizeToursRequest
Anfrage, die an einen Lösungspartner für die Touroptimierung gesendet wird, der das zu lösende Versandmodell sowie Optimierungsparameter definiert.
Felder | |
---|---|
parent |
Erforderlich. Zielprojekt oder -standort für den Anruf. Format: * Wenn kein Standort angegeben ist, wird automatisch eine Region ausgewählt. |
timeout |
Wenn dieses Zeitlimit festgelegt wird, gibt der Server eine Antwort zurück, bevor das Zeitlimit oder das Zeitlimit für synchrone Anfragen des Servers erreicht ist, je nachdem, was früher eintritt. Bei asynchronen Anfragen generiert der Server nach Möglichkeit eine Lösung, bevor das Zeitlimit überschritten wird. |
model |
Zu lösendes Versandmodell. |
solving_mode |
Standardmäßig ist der Lösungsmodus auf |
search_mode |
Suchmodus, der zum Lösen der Anfrage verwendet wurde. |
injected_first_solution_routes[] |
Den Optimierungsalgorithmus dabei unterstützen, eine erste Lösung zu finden, die einer früheren Lösung ähnelt. Das Modell ist eingeschränkt, wenn die erste Lösung erstellt wird. Alle Lieferungen, die nicht auf einer Route ausgeführt werden, werden in der ersten Lösung implizit übersprungen, können jedoch in aufeinanderfolgenden Lösungen ausgeführt werden. Die Lösung muss einige grundlegende Gültigkeitsannahmen erfüllen:
Wenn die injizierte Lösung nicht machbar ist, wird nicht unbedingt ein Validierungsfehler zurückgegeben. Stattdessen wird möglicherweise ein Fehler zurückgegeben, der auf eine Nichtdurchführbarkeit hinweist. |
injected_solution_constraint |
Den Optimierungsalgorithmus einschränken, um eine endgültige Lösung zu finden, die einer früheren Lösung ähnelt. Sie können damit beispielsweise Teile von Routen fixieren, die bereits abgeschlossen wurden oder die noch fertiggestellt werden sollen, aber nicht geändert werden dürfen. Wenn die injizierte Lösung nicht machbar ist, wird nicht unbedingt ein Validierungsfehler zurückgegeben. Stattdessen wird möglicherweise ein Fehler zurückgegeben, der auf eine Nichtdurchführbarkeit hinweist. |
refresh_details_routes[] |
Wenn das Feld nicht leer ist, werden die angegebenen Routen aktualisiert, ohne die zugrunde liegende Abfolge von Besuchen oder Fahrtzeiten zu ändern. Es werden nur andere Details aktualisiert. Damit wird das Modell nicht gelöst. Seit 2020/11 wird damit nur die Polylinien nicht leerer Routen ausgefüllt und Die Dieses Feld darf nicht zusammen mit
|
interpret_injected_solutions_using_labels |
Falls wahr:
Diese Interpretation gilt für die Felder Bei „true“ dürfen Labels in den folgenden Kategorien höchstens einmal in einer Kategorie vorkommen:
Wenn ein Das Entfernen von Routenbesuchen oder ganzen Routen aus einer injizierten Lösung kann sich auf die implizierten Einschränkungen auswirken, was zu Änderungen der Lösung, Validierungsfehlern oder der Undurchführbarkeit führen kann. HINWEIS: Der Aufrufer muss darauf achten, dass jede |
consider_road_traffic |
Berücksichtigen Sie die Traffic-Schätzung bei der Berechnung der |
populate_polylines |
Wenn „true“ festgelegt ist, werden Polylinien in Antwort- |
populate_transition_polylines |
Wenn „true“ festgelegt ist, werden Polylinien in der Antwort |
allow_large_deadline_despite_interruption_risk |
Wenn diese Richtlinie festgelegt ist, kann für die Anfrage eine Frist von bis zu 60 Minuten festgelegt werden (siehe https://grpc.io/blog/deadlines). Andernfalls beträgt die maximale Frist nur 30 Minuten. Beachten Sie, dass langlebige Anfragen ein deutlich größeres, aber dennoch geringes Unterbrechungsrisiko haben. |
use_geodesic_distances |
Ist dies der Fall, werden Entfernungen anhand geodätischer Entfernungen statt anhand von Google Maps-Entfernungen berechnet. Die Reisezeiten werden anhand geodätischer Entfernungen mit einer durch |
label |
Label, das zur Identifizierung dieser Anfrage verwendet werden kann und im |
geodesic_meters_per_second |
Wenn |
max_validation_errors |
Kürzt die Anzahl der zurückgegebenen Validierungsfehler. Diese Fehler werden normalerweise als BadRequest-Fehlerdetail (https://cloud.google.com/apis/design/errors#error_details) an die Nutzlast des Fehlers INVALID_ ARGUMENT angehängt, es sei denn, lösung_mode=VALIDATE_ONLY: siehe Feld |
SearchMode
Modus, der das Suchverhalten definiert und Kompromisse bei der Latenz im Vergleich zur Lösungsqualität eingeht. In allen Modi wird das Zeitlimit für globale Anfragen erzwungen.
Enums | |
---|---|
SEARCH_MODE_UNSPECIFIED |
Nicht angegebener Suchmodus, entspricht RETURN_FAST . |
RETURN_FAST |
Beenden Sie die Suche, nachdem Sie die erste gute Lösung gefunden haben. |
CONSUME_ALL_AVAILABLE_TIME |
Investieren Sie Ihre gesamte verfügbare Zeit in die Suche nach besseren Lösungen. |
SolvingMode
Definiert, wie der Solver die Anfrage verarbeiten soll. Wenn die Anfrage ungültig ist, wird in allen Modi außer VALIDATE_ONLY
der Fehler INVALID_REQUEST
angezeigt. Unter max_validation_errors
können Sie die Anzahl der zurückgegebenen Fehler begrenzen.
Enums | |
---|---|
DEFAULT_SOLVE |
Lösen Sie das Modell. |
VALIDATE_ONLY |
Validiert nur das Modell, ohne es zu lösen: Es werden möglichst viele OptimizeToursResponse.validation_errors ausgefüllt. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Es werden nur Werte für WICHTIG: Hier werden nicht alle nicht durchführbaren Sendungen zurückgeschickt, sondern nur die, die bei der Vorverarbeitung als nicht durchführbar eingestuft wurden. |
OptimizeToursResponse
Reaktion nach Lösung eines Optimierungsproblems für Touren mit den Routen für jedes Fahrzeug, den übersprungenen Lieferungen und den Gesamtkosten der Lösung.
Felder | |
---|---|
routes[] |
Für jedes Fahrzeug berechnete Routen; die i-te Route entspricht dem i-ten Fahrzeug im Modell. |
request_label |
Kopie von |
skipped_shipments[] |
Die Liste aller übersprungenen Sendungen. |
validation_errors[] |
Liste aller Validierungsfehler, die wir unabhängig voneinander ermitteln konnten. Siehe die Erläuterung „MULTIPLE ERRORS“ (MEHRERE FEHLER) für die Nachricht |
metrics |
Messwerte zu Dauer, Entfernung und Nutzung für diese Lösung. |
Messwerte
Gesamtmesswerte, aggregiert über alle Routen.
Felder | |
---|---|
aggregated_route_metrics |
Über die Routen aggregiert. Jeder Messwert ist die Summe (oder der Höchstwert bei Ladevorgängen) über alle |
skipped_mandatory_shipment_count |
Anzahl der übersprungenen obligatorischen Sendungen. |
used_vehicle_count |
Anzahl der verwendeten Fahrzeuge. Hinweis: Wenn eine Fahrzeugroute leer und |
earliest_vehicle_start_time |
Die früheste Startzeit für ein gebrauchtes Fahrzeug, berechnet als Mindestwert für alle gebrauchten Fahrzeuge von |
latest_vehicle_end_time |
Die späteste Endzeit für ein gebrauchtes Fahrzeug, berechnet als Maximalwert für alle gebrauchten Fahrzeuge von |
costs |
Kosten der Lösung, aufgeschlüsselt nach kostenbezogenen Anfragefeldern. Die Schlüssel sind Proto-Pfade, die sich auf die OptimizeToursRequest-Eingabe beziehen, z. B. „model.shipments.pickups.cost“. Die Werte sind die vom entsprechenden Kostenfeld generierten Gesamtkosten, die über die gesamte Lösung aggregiert werden. Mit anderen Worten, cost["model.shipments.pickups.cost"] ist die Summe aller Abholkosten der Lösung. Alle im Modell definierten Kosten sind hier im Detail enthalten. Ausgenommen hiervon sind Kosten für TransitionAttributes, die seit 2022/01 nur in aggregierter Form erfasst werden. |
total_cost |
Gesamtkosten der Lösung. Die Summe aller Werte in der Kostenkarte. |
OptimizeToursValidationError
Beschreibt einen Fehler, der beim Validieren eines OptimizeToursRequest
aufgetreten ist.
Felder | |
---|---|
code |
Ein Validierungsfehler wird durch das Paar ( Die anderen Felder (unten) liefern mehr Kontext zum Fehler. MEHRERE FEHLER: Bei mehreren Fehlern wird bei der Validierung versucht, mehrere Fehler auszugeben. Ähnlich wie ein Compiler ist dies ein nicht perfekter Prozess. Einige Validierungsfehler sind schwerwiegend, was bedeutet, dass die gesamte Validierung abgebrochen wird. Das ist unter anderem bei Stabilität: REFERENZ: Eine Liste aller Paare (Code, Name):
|
display_name |
Der Anzeigename des Fehlers. |
fields[] |
Ein Fehlerkontext kann (meist 0, 1) oder mehr Felder umfassen. Wenn Sie sich beispielsweise auf Fahrzeug Nr. 4 und Lieferung Nr. 2 die erste Abholung beziehen, könnte das folgendermaßen aussehen:
Die Kardinalität von |
error_message |
Für Menschen lesbarer String, der den Fehler beschreibt. Es gibt eine 1:1-Zuordnung zwischen Stabilität: Nicht stabil: Die Fehlermeldung für eine bestimmte |
offending_values |
Kann die Werte des Felds bzw. der Felder enthalten. Diese Funktion ist nicht immer verfügbar. Sie sollten sich nicht darauf verlassen und sie nur für die manuelle Fehlerbehebung von Modellen verwenden. |
FieldReference
Gibt einen Kontext für den Validierungsfehler an. Ein FieldReference
bezieht sich immer auf ein bestimmtes Feld in dieser Datei und folgt derselben hierarchischen Struktur. So können wir beispielsweise Element 2 von start_time_windows
von Fahrzeug 5 mit folgendem Format angeben:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
Entitäten der obersten Ebene wie OptimizeToursRequest
oder ShipmentModel
werden jedoch weggelassen, um eine Überfüllung der Nachricht zu vermeiden.
Felder | |
---|---|
name |
Name des Felds, z.B. „Fahrzeuge“. |
sub_field |
Bei Bedarf rekursiv verschachteltes Unterfeld. |
Union-Feld Für |
|
index |
Index des Felds bei Wiederholung. |
key |
Key, wenn das Feld eine Karte ist. |
OutputConfig
Geben Sie ein Ziel für [BatchOptimizeTours][google.maps.routeOptimization.v1.RouteOptimizationService.BatchOptimizeTours]-Ergebnisse an.
Felder | |
---|---|
data_format |
Erforderlich. Das Ausgabedatenformat. |
Union-Feld destination . Erforderlich. Für destination ist nur einer der folgenden Werte zulässig: |
|
gcs_destination |
Der Google Cloud Storage-Speicherort, in den die Ausgabe geschrieben wird. |
Versand
Die Lieferung eines einzelnen Artikels von einer Abholung bis zu einer Lieferung. Damit eine Sendung als durchgeführt gilt, muss ein bestimmtes Fahrzeug einen seiner Abholorte aufsuchen (und seine Kapazitäten entsprechend verringern) und dann später einen seiner Lieferorte aufsuchen (und dann entsprechend sein freies Fassungsvermögen wieder aufstocken).
Felder | |
---|---|
display_name |
Der benutzerdefinierte Anzeigename der Sendung. Sie kann bis zu 63 Zeichen lang sein und UTF-8-Zeichen enthalten. |
pickups[] |
Satz von Alternativen zur Abholung, die der Sendung zugeordnet sind. Wenn nicht angegeben, muss das Fahrzeug nur einen Ort aufsuchen, der den Lieferungen entspricht. |
deliveries[] |
Die mit der Sendung verbundenen Lieferalternativen. Wenn nicht angegeben, muss das Fahrzeug nur zu einem Standort fahren, der den Abholungen entspricht. |
load_demands |
Belastbarkeit der Sendung (z. B. Gewicht, Volumen, Anzahl der Paletten usw.) Die Schlüssel in der Karte sollten Kennungen sein, die den Typ des entsprechenden Ladevorgangs beschreiben, idealerweise auch die Einheiten. Beispiel: "weight_kg", "volume_gallons", "pallet_count" usw. Wenn ein bestimmter Schlüssel nicht auf der Karte erscheint, wird die entsprechende Ladung als null betrachtet. |
allowed_vehicle_indices[] |
Die Fahrzeuge, die diesen Versand durchführen können. Ist das Feld leer, kann die Funktion von allen Fahrzeugen ausgeführt werden. Fahrzeuge sind über ihren Index in der |
costs_per_vehicle[] |
Gibt die Kosten an, die anfallen, wenn diese Sendung von dem jeweiligen Fahrzeug geliefert wird. Wenn angegeben, muss ENTWEDER:
Diese Kosten müssen in derselben Einheit wie |
costs_per_vehicle_indices[] |
Indexe der Fahrzeuge, für die |
pickup_to_delivery_absolute_detour_limit |
Gibt die maximale absolute Umleitungszeit im Vergleich zum kürzesten Weg von der Abholung zur Lieferung an. Falls angegeben, darf sie nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Lieferung enthalten. Geben Sie beispielsweise die kürzeste Zeit an, die nötig ist, um von der ausgewählten Abholoption direkt zur ausgewählten Lieferoption zu wechseln. Wenn Sie dann
Wenn für dieselbe Sendung sowohl relative als auch absolute Grenzwerte angegeben sind, wird für jedes mögliche Paar aus Abholung und Lieferung die stärker einschränkende Begrenzung verwendet. Seit 2017/10 werden Umleitungen nur noch unterstützt, wenn die Reisedauer nicht von Fahrzeugen abhängt. |
pickup_to_delivery_time_limit |
Gibt die maximale Dauer vom Beginn der Abholung bis zum Beginn der Lieferung einer Sendung an. Falls angegeben, darf sie nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Lieferung enthalten. Dies hängt weder von den Alternativen für Abhol- und Lieferoptionen noch von der Fahrzeuggeschwindigkeit ab. Dies kann zusammen mit den maximalen Umleitungsbeschränkungen angegeben werden: Die Lösung berücksichtigt beide Spezifikationen. |
shipment_type |
Ein nicht leerer String, der einen „Typ“ für diese Sendung angibt. Mit dieser Funktion können Inkompatibilitäten oder Anforderungen zwischen Abweichend von |
label |
Gibt ein Label für diese Sendung an. Dieses Label wird in der Antwort im |
ignore |
Wenn „true“ festgelegt ist, kannst du diese Lieferung überspringen, aber kein Wenn eine Sendung ignoriert wird, tritt ein Validierungsfehler auf, wenn Das Ignorieren einer Sendung, die in |
penalty_cost |
Wenn der Versand nicht abgeschlossen wird, wird die Strafgebühr zu den Gesamtkosten der Routen hinzugefügt. Eine Sendung gilt als abgeschlossen, wenn eine der Optionen für Abholung und Lieferung genutzt wird. Die Kosten können in derselben Einheit ausgedrückt werden, die für alle anderen kostenbezogenen Felder im Modell verwendet wird, und müssen positiv sein. WICHTIG: Wenn Sie keine Angabe machen, gilt der Abzug als unendlich, d.h., der Versand muss abgeschlossen sein. |
pickup_to_delivery_relative_detour_limit |
Gibt die maximale relative Umleitungszeit im Vergleich zum kürzesten Weg von der Abholung zur Lieferung an. Falls angegeben, darf sie nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Lieferung enthalten. Geben Sie beispielsweise die kürzeste Zeit an, die nötig ist, um von der ausgewählten Abholoption direkt zur ausgewählten Lieferoption zu wechseln. Wenn Sie dann
Wenn für dieselbe Sendung sowohl relative als auch absolute Grenzwerte angegeben sind, wird für jedes mögliche Paar aus Abholung und Lieferung die stärker einschränkende Begrenzung verwendet. Seit 2017/10 werden Umleitungen nur noch unterstützt, wenn die Reisedauer nicht von Fahrzeugen abhängt. |
Laden
Bei einem Besuch kann ein vordefinierter Betrag zur Fahrzeugladung hinzugefügt werden, wenn es sich um eine Abholung handelt, oder subtrahiert, wenn es sich um eine Lieferung handelt. In dieser Nachricht wird ein solcher Betrag definiert. load_demands
ansehen.
Felder | |
---|---|
amount |
Die Belastung des Fahrzeugs, das den entsprechenden Besuch durchführt, variiert. Da es sich um eine Ganzzahl handelt, wird den Nutzern empfohlen, eine geeignete Einheit zu wählen, um Genauigkeitsverlust zu vermeiden. Muss ≥ 0 sein. |
VisitRequest
Anfrage für einen Besuch, der von einem Fahrzeug durchgeführt werden kann: Er hat einen geografischen Standort (oder zwei, siehe unten), die Öffnungs- und Schließzeiten, die durch Zeitfenster dargestellt werden, sowie eine Servicedauer, d. h. die Zeit, die das Fahrzeug bei der Abholung oder Abgabe der Ware verbracht hat.
Felder | |
---|---|
arrival_location |
Der Standort, an dem das Fahrzeug bei der Durchführung dieses |
arrival_waypoint |
Der Wegpunkt, an dem das Fahrzeug bei der Durchführung dieses |
departure_location |
Der Standort, an dem das Fahrzeug nach Abschluss dieses |
departure_waypoint |
Der Wegpunkt, an dem das Fahrzeug nach Abschluss dieses |
tags[] |
Gibt Tags an, die an die Besuchsanfrage angehängt sind. Leere oder doppelte Strings sind nicht zulässig. |
time_windows[] |
Zeitfenster, die die Ankunftszeit bei einem Besuch einschränken Beachten Sie, dass ein Fahrzeug möglicherweise außerhalb des Ankunftszeitfensters abfährt, d.h., Ankunftszeit und Dauer müssen nicht innerhalb eines Zeitfensters liegen. Sollte das Fahrzeug vor dem Wenn Zeitfenster müssen disjunkt sein, d. h., sie müssen nicht mit einem anderen Zeitfenster überlappen oder aneinander angrenzen. Außerdem müssen sie in aufsteigender Reihenfolge sein.
|
duration |
Dauer des Besuchs, d.h. die Zeit, die das Fahrzeug zwischen Ankunft und Abfahrt verbracht hat (wird zur möglichen Wartezeit addiert; siehe |
cost |
Kosten für die Bereitstellung dieser Besuchsanfrage auf einer Fahrzeugroute. So können Sie für jede alternative Abholung oder Lieferung einer Sendung unterschiedliche Kosten bezahlen. Diese Kosten müssen in derselben Einheit wie |
load_demands |
Anforderungen dieser Besuchsanfrage laden. Er entspricht dem Feld „ |
visit_types[] |
Gibt die Arten des Besuchs an. Damit lässt sich die zusätzliche Zeit einplanen, die ein Fahrzeug für diesen Besuch benötigt (siehe Ein Typ kann nur einmal angezeigt werden. |
label |
Gibt ein Label für diesen |
ShipmentModel
Ein Versandmodell besteht aus einer Reihe von Sendungen, die von einer Gruppe von Fahrzeugen ausgeführt werden müssen, wobei die Gesamtkosten minimiert werden, die sich aus der Summe aus folgenden Komponenten ergeben:
- die Kosten für die Routenplanung der Fahrzeuge (Summe der Kosten pro Gesamtzeit, Kosten pro Fahrtzeit und Fixkosten für alle Fahrzeuge).
- nicht ausgeführte Versandstrafen.
- die Kosten der globalen Dauer der Lieferungen
Felder | |
---|---|
shipments[] |
Satz von Lieferungen, die im Modell ausgeführt werden müssen. |
vehicles[] |
Gruppe von Fahrzeugen, die für Besuche verwendet werden können. |
global_start_time |
Globale Start- und Endzeit des Modells: Zeiten außerhalb dieses Bereichs können nicht als gültig angesehen werden. Die Zeitspanne des Modells muss kürzer als ein Jahr sein, d. h., Wenn Sie |
global_end_time |
Wenn kein Wert festgelegt ist, wird standardmäßig 00:00:00 UTC, 1. Januar 1971 (Sekunden: 31536000, Nanos: 0) verwendet. |
global_duration_cost_per_hour |
Die „globale Dauer“ des Gesamtplans ist die Differenz zwischen der frühesten effektiven Startzeit und der spätesten effektiven Endzeit aller Fahrzeuge. Nutzer können dieser Menge Kosten pro Stunde zuweisen, um sie beispielsweise im Hinblick auf den frühesten Abschluss eines Jobs zu optimieren. Diese Kosten müssen in derselben Einheit wie |
duration_distance_matrices[] |
Gibt die im Modell verwendeten Dauer- und Distanzmatrizen an. Wenn dieses Feld leer ist, werden stattdessen Google Maps oder geodätische Entfernungen verwendet, abhängig vom Wert des Felds Typische Syntax:
|
duration_distance_matrix_src_tags[] |
Tags, mit denen die Quellen der Dauer- und Entfernungsmatrizen definiert werden; Tags entsprechen |
duration_distance_matrix_dst_tags[] |
Tags, die die Ziele der Dauer- und Distanzmatrizen definieren; Tags entsprechen |
transition_attributes[] |
Übergangsattribute wurden dem Modell hinzugefügt. |
shipment_type_incompatibilities[] |
Gruppen mit inkompatiblen „shipment_types“-Elementen (siehe |
shipment_type_requirements[] |
Gruppen mit |
precedence_rules[] |
Satz von Prioritätsregeln, die im Modell erzwungen werden müssen. |
max_active_vehicles |
Beschränkt die maximale Anzahl aktiver Fahrzeuge. Ein Fahrzeug ist aktiv, wenn auf seiner Route mindestens ein Versand durchgeführt wird. Diese Option kann verwendet werden, um die Anzahl der Routen zu begrenzen, falls es weniger Fahrer als Fahrzeuge gibt und der Fahrzeugflotte heterogen ist. Im Rahmen der Optimierung wird dann die beste Teilmenge von Fahrzeugen ausgewählt. Muss ausschließlich positiv sein. |
DurationDistanceMatrix
Gibt eine Matrix für Dauer und Entfernung von den Start- und Startorten des Besuchs und der Startorte der Fahrzeuge an.
Felder | |
---|---|
rows[] |
Gibt die Zeilen der Dauer- und Distanzmatrix an. Es muss genauso viele Elemente wie |
vehicle_start_tag |
Tag, das definiert, für welche Fahrzeuge diese Dauer- und Distanzmatrix gilt. Wenn das Feld leer ist, gilt das für alle Fahrzeuge und es kann nur eine einzelne Matrix geben. Jeder Start eines Fahrzeugs muss genau mit einer Matrix übereinstimmen, d.h., genau eines der Felder Alle Matrizen müssen eine andere |
Row
Gibt eine Zeile der Matrix für Dauer und Entfernung an.
Felder | |
---|---|
durations[] |
Dauerwerte für eine bestimmte Zeile. Es muss genauso viele Elemente wie |
meters[] |
Entfernungswerte für eine bestimmte Zeile. Wenn sich keine Kosten oder Einschränkungen auf Entfernungen im Modell beziehen, kann dieses Feld leer bleiben. Andernfalls muss es so viele Elemente wie |
PrecedenceRule
Eine Prioritätsregel zwischen zwei Ereignissen (jedes Ereignis ist die Abholung oder Lieferung einer Sendung): Das „zweite“ Ereignis muss mindestens offset_duration
nach Beginn des „ersten“ Ereignisses beginnen.
Mehrere Rangfolgen können sich auf dieselben (oder verwandte) Ereignisse beziehen, z.B. „Abholung B erfolgt nach Lieferung von A“ und „Abholung C erfolgt nach Abholung von B“.
Außerdem gelten Rangfolgen nur dann, wenn beide Lieferungen ausgeführt werden. Andernfalls werden sie ignoriert.
Felder | |
---|---|
first_is_delivery |
Gibt an, ob das „erste“ Ereignis eine Auslieferung ist. |
second_is_delivery |
Gibt an, ob das „zweite“ Ereignis eine Auslieferung ist. |
offset_duration |
Abstand zwischen dem „ersten“ und dem „zweiten“ Ereignis Sie kann negativ sein. |
first_index |
Versandindex des „ersten“ Ereignisses. Dieses Feld muss angegeben werden. |
second_index |
Versandindex des „zweiten“ Ereignisses. Dieses Feld muss angegeben werden. |
ShipmentRoute
Die Route eines Fahrzeugs kann entlang der Zeitachse so zerlegt werden (wir gehen davon aus, dass es n Besuche gibt):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Beachten Sie, dass wir einen Unterschied zwischen Folgendem haben:
- „pünktliche Ereignisse“ wie Start und Ende des Fahrzeugs sowie Beginn und Ende jedes Besuchs (Ankunft und Abfahrt). Sie finden in einer bestimmten Sekunde statt.
- Zeitintervallen wie die Besuche selbst und der Übergang zwischen den Besuchen. Obwohl Zeitintervalle manchmal eine Dauer von null haben, d.h. Beginn und Ende zur selben Sekunde, haben sie häufig eine positive Dauer.
Invarianten:
- Bei n Besuchen gibt es n+1 Übergänge.
- Ein Besuch ist immer von einem vor ihm stattfindenden Übergang (derselbe Index) und einem darauffolgenden Übergang (Index + 1) umgeben.
- Nach dem Starten des Fahrzeugs folgt immer der Übergang Nr. 0.
- Dem Fahrzeugende geht immer der Übergang #n voraus.
Beim Heranzoomen passiert Folgendes bei Transition
und Visit
:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Hier erfährst du, wie REISEN, BRECHEN, VERZÖGERUNG und WARTE bei einer Übergangsphase arrangiert werden können.
- Sie überschneiden sich nicht.
- Die VERZÖGERUNG ist eindeutig und muss ein zusammenhängender Zeitraum direkt vor dem nächsten Besuch (oder dem Ende des Fahrzeugs) sein. Daher reicht es aus, die Verzögerungsdauer zu kennen, um ihre Start- und Endzeit zu kennen.
- Die BREAKS sind zusammenhängende Zeiträume, die sich nicht überschneiden. In der Antwort werden Beginn und Dauer jeder Unterbrechung angegeben.
- TRAVEL und WAIT sind „auf Abruf verfügbar“: Sie können während dieses Übergangs mehrmals unterbrochen werden. Die Kunden können davon ausgehen, dass die Reise „so bald wie möglich“ erfolgt und dass „Warten“ die verbleibende Zeit belegt.
Ein (komplexes) Beispiel:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
Felder | |
---|---|
vehicle_index |
Fahrzeug, das die Route ausführt und anhand seines Index in der Quelle |
vehicle_label |
Label des Fahrzeugs, das diese Route durchführt; entspricht |
vehicle_start_time |
Uhrzeit, zu der das Fahrzeug seine Route beginnt. |
vehicle_end_time |
Uhrzeit, zu der das Fahrzeug seine Route beendet hat. |
visits[] |
Eine geordnete Abfolge von Besuchen, die eine Route darstellen. Visits[i] ist der i-te Besuch der Route. Wenn dieses Feld leer ist, gilt das Fahrzeug als nicht verwendet. |
transitions[] |
Sortierte Liste der Übergänge für die Route. |
has_traffic_infeasibilities |
Wenn
Die Ankunft bei „next_visit“ erfolgt wahrscheinlich später als im aktuellen Zeitfenster, da die geschätzte Reisezeit |
route_polyline |
Die codierte Polyliniendarstellung der Route. Dieses Feld wird nur gefüllt, wenn |
breaks[] |
Für das Fahrzeug, das diese Route durchführt, sind Pausen geplant. Die |
metrics |
Messwerte zu Dauer, Entfernung und Last für diese Route. Die Felder von |
route_costs |
Kosten der Route, aufgeschlüsselt nach kostenbezogenen Anfragefeldern. Die Schlüssel sind Proto-Pfade, die sich auf die OptimizeToursRequest-Eingabe beziehen, z. B. „model.shipments.pickups.cost“. Die Werte sind die vom entsprechenden Kostenfeld generierten Gesamtkosten, die über die gesamte Route aggregiert werden. Mit anderen Worten, cost["model.shipments.pickups.cost"] ist die Summe aller Abholkosten auf der Route. Alle im Modell definierten Kosten sind hier im Detail enthalten. Ausgenommen hiervon sind Kosten für TransitionAttributes, die seit 2022/01 nur in aggregierter Form erfasst werden. |
route_total_cost |
Gesamtkosten der Route. Die Summe aller Kosten in der Kostenübersicht. |
Pause
Daten, die die Ausführung einer Werbeunterbrechung darstellen.
Felder | |
---|---|
start_time |
Beginn einer Pause. |
duration |
Dauer einer Pause. |
EncodedPolyline
Die codierte Darstellung einer Polylinie. Weitere Informationen zur Codierung von Polylinien finden Sie hier: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
Felder | |
---|---|
points |
String, der die codierten Punkte der Polylinie darstellt. |
Übergänge
Übergang zwischen zwei Ereignissen auf der Route. Weitere Informationen finden Sie in der Beschreibung von ShipmentRoute
.
Wenn das Fahrzeug keine start_location
und/oder end_location
hat, sind die entsprechenden Fahrtmesswerte 0.
Felder | |
---|---|
travel_duration |
Reisedauer während dieses Übergangs. |
travel_distance_meters |
Die bei der Umstellung zurückgelegte Strecke. |
traffic_info_unavailable |
Wenn Traffic über |
delay_duration |
Summe der auf diesen Übergang angewendeten Verzögerungsdauern. Falls vorhanden, beginnt die Verspätung genau |
break_duration |
Summe der Dauer der Pausen während dieses Übergangs, falls vorhanden. Details zum Beginn und zur Dauer der einzelnen Pausen sind in |
wait_duration |
Wartezeit während dieses Übergangs. Die Wartezeit entspricht der Inaktivitätszeit und beinhaltet keine Pausenzeit. Beachten Sie auch, dass diese Wartezeit in mehrere nicht aufeinanderfolgende Intervalle aufgeteilt werden kann. |
total_duration |
Gesamtdauer der Umstellung (zur Übersichtlichkeit). Er ist gleich:
|
start_time |
Beginn dieser Umstellung. |
route_polyline |
Die codierte Polyliniendarstellung der Route, der während des Übergangs gefolgt wird. Dieses Feld wird nur gefüllt, wenn |
vehicle_loads |
Fahrzeugladevorgänge während dieses Übergangs für jeden Typ, der entweder in den Die Lasten während des ersten Übergangs sind die Startlasten der Fahrzeugroute. Nach jedem Besuch werden die |
VehicleLoad
Meldet die tatsächliche Auslastung des Fahrzeugs an einem bestimmten Punkt auf der Route für einen bestimmten Typ (siehe Transition.vehicle_loads
).
Felder | |
---|---|
amount |
Die Last des Fahrzeugs für den jeweiligen Typ. Die Lasteinheit wird normalerweise durch den Typ angegeben. |
Aufrufen
Ein Besuch, der während einer Route durchgeführt wurde. Dieser Besuch entspricht einer Abholung oder Lieferung einer Shipment
.
Felder | |
---|---|
shipment_index |
Index des Felds |
is_pickup |
Wenn „true“ festgelegt ist, entspricht der Besuch einer Abholung von |
visit_request_index |
Index von |
start_time |
Startzeit des Besuchs Es kann sein, dass das Fahrzeug früher als erwartet am Zielort ankommt. Die Zeiten entsprechen dem |
load_demands |
Die gesamte Nachfrage nach Besuchen in Form der Summe der Sendung und der |
detour |
Zusätzliche Umleitungszeit aufgrund der Lieferungen auf der Route vor dem Besuch und der potenziellen Wartezeit infolge der Zeitfenster. Wenn es sich bei dem Besuch um eine Lieferung handelt, wird die Umleitung aus dem entsprechenden Abholtermin berechnet und ist gleich:
Andernfalls wird er aus dem Fahrzeug
|
shipment_label |
Kopie des entsprechenden |
visit_label |
Kopie des entsprechenden |
ShipmentTypeIncompatibility
Gibt Inkompatibilitäten zwischen Sendungen abhängig von ihrem „shipment_type“-Attribut an. Inkompatible Sendungen auf derselben Route können aufgrund des Inkompatibilitätsmodus nur eingeschränkt angezeigt werden.
Felder | |
---|---|
types[] |
Liste der inkompatiblen Typen. Zwei Sendungen mit unterschiedlichen |
incompatibility_mode |
Modus, der auf die Inkompatibilität angewendet wurde. |
IncompatibilityMode
Modi, mit denen festgelegt wird, wie inkompatible Sendungen auf derselben Route erscheinen können.
Enums | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Nicht angegebener Inkompatibilitätsmodus. Dieser Wert sollte niemals verwendet werden. |
NOT_PERFORMED_BY_SAME_VEHICLE |
In diesem Modus können sich zwei Sendungen mit inkompatiblen Typen nie auf dasselbe Fahrzeug teilen. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Bei zwei Sendungen mit inkompatiblen Typen mit dem Inkompatibilitätsmodus „
|
ShipmentTypeRequirement
Gibt die Anforderungen zwischen Sendungen basierend auf dem Versandtyp „shipment_type“ an. Die Einzelheiten der Anforderung werden durch den Anforderungsmodus definiert.
Felder | |
---|---|
required_shipment_type_alternatives[] |
Liste alternativer Versandarten, die für die |
dependent_shipment_types[] |
Für alle Sendungen mit einem Typ im Feld „ HINWEIS: Anforderungsketten, bei denen ein |
requirement_mode |
Der Modus wurde auf die Anforderung angewendet. |
RequirementMode
Modi, die die Darstellung abhängiger Lieferungen auf einer Route definieren.
Enums | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Nicht angegebener Anforderungsmodus. Dieser Wert sollte niemals verwendet werden. |
PERFORMED_BY_SAME_VEHICLE |
In diesem Modus müssen sich alle „abhängigen“ Sendungen im selben Fahrzeug wie mindestens eine ihrer „erforderlichen“ Sendungen befinden. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Im Bei einer „abhängigen“ Abholung muss daher eines der folgenden Kriterien erfüllt sein:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Wie zuvor, mit der Ausnahme, dass die „abhängigen“ Sendungen zum Zeitpunkt der Lieferung eine „erforderliche“ Sendung im Fahrzeug haben müssen. |
SkippedShipment
Gibt Details zu nicht ausgeführten Sendungen in einer Lösung an. Bei einfachen Fällen und/oder wenn wir die Ursache für das Überspringen ermitteln können, geben wir hier den Grund an.
Felder | |
---|---|
index |
Der Index entspricht dem Index der Sendung in der Quelle |
label |
Kopie des entsprechenden |
reasons[] |
Eine Liste mit Gründen, warum die Sendung übersprungen wurde. Siehe Kommentar oben: |
Grund
Wenn wir erklären können, warum die Lieferung übersprungen wurde, werden hier die Gründe aufgeführt. Wenn der Grund nicht für alle Fahrzeuge gleich ist, hat reason
mehr als 1 Element. Für eine übersprungene Lieferung darf es keine doppelten Gründe geben, d.h. alle Felder mit Ausnahme von example_vehicle_index
sind identisch. Beispiel:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
Die übersprungene Sendung ist nicht mit allen Fahrzeugen kompatibel. Die Gründe können für alle Fahrzeuge unterschiedlich sein, aber mindestens für ein Fahrzeug wird die Kapazität für „Äpfel“ überschritten (einschließlich Fahrzeug 1), die Kapazität für „Pears“ bei mindestens einem Fahrzeug würde überschritten (einschließlich Fahrzeug 3) und mindestens eines Fahrzeugs (einschließlich Fahrzeug 1) wird überschritten.
Felder | |
---|---|
code |
Weitere Informationen finden Sie in den Kommentaren zum Code. |
example_exceeded_capacity_type |
Wenn der Ursachencode |
example_vehicle_index |
Wenn der Grund mit einer Inkompatibilität eines Versandfahrzeugs zusammenhängt, enthält dieses Feld den Index eines relevanten Fahrzeugs. |
Code
Code zur Identifizierung des Grundtyps. Die Reihenfolge hier ist bedeutungslos. Insbesondere gibt sie keinen Hinweis darauf, ob ein bestimmter Grund in der Lösung vor einem anderen angezeigt wird, sofern beide Gründe zutreffen.
Enums | |
---|---|
CODE_UNSPECIFIED |
Dies sollte niemals verwendet werden. Wenn wir nicht nachvollziehen können, warum eine Sendung übersprungen wurde, senden wir einfach eine leere Begründungsanfrage zurück. |
NO_VEHICLE |
Das Modell hat kein Fahrzeug, das alle Lieferungen unmöglich macht. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
Die Nachfrage nach der Sendung überschreitet die Kapazität eines Fahrzeugs bei einigen Kapazitätstypen. Einer davon ist example_exceeded_capacity_type . |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
Die Mindestentfernung, die für diesen Versand erforderlich ist, d.h. vom Beachten Sie, dass wir für diese Berechnung die geodätischen Entfernungen verwenden. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
Die für diesen Versand erforderliche Mindestzeit, einschließlich Fahrt-, Wartezeit und Servicezeit, überschreitet die Hinweis: Die Reisezeit wird im Best-Case-Szenario berechnet, nämlich als geodätische Entfernung × 36 m/s (ungefähr 130 km/Stunde). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
Wie oben, aber es wird nur die minimale Fahrtzeit und die travel_duration_limit des Fahrzeugs verglichen. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
Das Fahrzeug kann diese Sendung im Best-Case-Szenario nicht ausführen (siehe CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT für Zeitberechnung), wenn es zum frühesten Startzeitpunkt beginnt: Die Gesamtzeit würde dazu führen, dass das Fahrzeug nach seiner spätesten Endzeit endet. |
VEHICLE_NOT_ALLOWED |
Das Feld „allowed_vehicle_indices “ der Sendung ist nicht leer und dieses Fahrzeug gehört nicht dazu. |
TimeWindow
Zeitfenster beschränken die Zeit eines Ereignisses, z. B. die Ankunftszeit bei einem Besuch oder die Start- und Endzeit eines Fahrzeugs.
Feste Zeitfenstergrenzen, start_time
und end_time
, erzwingen die früheste und späteste Zeit des Ereignisses, z. B. start_time <= event_time <=
end_time
. Die Untergrenze des weichen Zeitfensters (soft_start_time
) drückt aus, dass das Ereignis am oder nach soft_start_time
eintritt, wobei Kosten proportional dazu anfallen, wie lange vor soft_start_time das Ereignis eintritt. Die Obergrenze für das weiche Zeitfenster (soft_end_time
) drückt aus, dass das Ereignis am oder vor soft_end_time
eintritt. Dabei fallen Kosten proportional zur Dauer nach soft_end_time
nach dem Eintreten des Ereignisses an. start_time
, end_time
, soft_start_time
und soft_end_time
müssen innerhalb der globalen Zeitlimits (siehe ShipmentModel.global_start_time
und ShipmentModel.global_end_time
) liegen und Folgendes berücksichtigen:
0 <= `start_time` <= `soft_start_time` <= `end_time` and
0 <= `start_time` <= `soft_end_time` <= `end_time`.
Felder | |
---|---|
start_time |
Der Beginn des harten Zeitfensters. Wenn keine Vorgabe erfolgt, wird er auf |
end_time |
Das Ende des festen Zeitfensters. Wenn keine Vorgabe erfolgt, wird er auf |
soft_start_time |
Die Softstartzeit des Zeitfensters. |
soft_end_time |
Das weiche Ende des Zeitfensters. |
cost_per_hour_before_soft_start_time |
Kosten pro Stunde, die zu den anderen Kosten im Modell hinzugefügt werden, wenn das Ereignis vor soft_start_time eintritt. Sie werden wie folgt berechnet:
Diese Kosten müssen positiv sein und das Feld kann nur festgelegt werden, wenn soft_start_time festgelegt wurde. |
cost_per_hour_after_soft_end_time |
Kosten pro Stunde, die zu den anderen Kosten im Modell hinzugefügt werden, wenn das Ereignis nach dem
Diese Kosten müssen positiv sein und das Feld kann nur festgelegt werden, wenn |
TransitionAttributes
Gibt Attribute für Übergänge zwischen zwei aufeinanderfolgenden Besuchen einer Route an. Mehrere TransitionAttributes
können für denselben Übergang gelten: In diesem Fall addieren sich alle zusätzlichen Kosten und es gilt die strengste Beschränkung oder das strengste Limit (gemäß der natürlichen UND-Semantik).
Felder | |
---|---|
src_tag |
Tags, die die Übergänge (src->dst) definieren, für die diese Attribute gelten. Ein Besuch oder Start eines Fahrzeugs stimmt überein, wenn |
excluded_src_tag |
|
dst_tag |
Ein Zielbesuch oder Fahrzeugende stimmt überein, wenn |
excluded_dst_tag |
|
cost |
Gibt die Kosten für die Durchführung dieses Übergangs an. Dies ist dieselbe Einheit wie alle anderen Kosten im Modell und darf nicht negativ sein. Sie wird auf alle anderen bestehenden Kosten angewendet. |
cost_per_kilometer |
Gibt die Kosten pro Kilometer an, die auf die bei diesem Übergang zurückgelegte Strecke angewendet werden. Er addiert alle |
distance_limit |
Gibt einen Grenzwert für die Strecke an, die bei diesem Übergang zurückgelegt wird. Ab dem 06.06.2021 werden nur weiche Limits unterstützt. |
delay |
Gibt eine Verzögerung an, die bei der Durchführung dieser Umstellung auftritt. Diese Verzögerung tritt immer nach dem Abschluss des Quellbesuchs und vor dem Start des Zielbesuchs auf. |
Fahrzeug
Modelliert ein Fahrzeug in einem Versandproblem. Zur Lösung eines Versandproblems wird eine Route für dieses Fahrzeug erstellt, die zwischen start_location
beginnt und um end_location
endet. Eine Route ist eine Folge von Durchfahrten (siehe ShipmentRoute
).
Felder | |
---|---|
display_name |
Der benutzerdefinierte Anzeigename des Fahrzeugs. Sie kann bis zu 63 Zeichen lang sein und UTF-8-Zeichen enthalten. |
travel_mode |
Die Mobilitätsform, die sich auf die vom Fahrzeug genutzten Straßen und die Geschwindigkeit auswirkt. Siehe auch |
start_location |
Geografischer Standort, an dem das Fahrzeug startet, bevor Sendungen abgeholt werden. Wenn nicht angegeben, startet das Fahrzeug bei der ersten Abholung. Wenn das Versandmodell Matrizen für Dauer und Entfernung hat, darf |
start_waypoint |
Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug startet, bevor Sendungen abgeholt werden. Wenn weder |
end_location |
Geografischer Standort, an dem das Fahrzeug endet, nachdem die letzten |
end_waypoint |
Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug endet, nachdem die letzte |
start_tags[] |
Gibt Tags an, die am Start der Route des Fahrzeugs angehängt sind. Leere oder doppelte Strings sind nicht zulässig. |
end_tags[] |
Gibt Tags an, die am Ende der Route des Fahrzeugs angehängt sind. Leere oder doppelte Strings sind nicht zulässig. |
start_time_windows[] |
Zeitfenster, in denen das Fahrzeug von seinem Startort abfährt. Sie müssen innerhalb der globalen Zeitlimits liegen (siehe Zeitfenster, die zu demselben wiederkehrenden Feld gehören, müssen getrennt sein, d. h. es darf sich kein Zeitfenster mit einem anderen überschneiden oder aneinandergrenzen. Sie müssen in chronologischer Reihenfolge angegeben werden.
|
end_time_windows[] |
Zeitfenster, in denen das Fahrzeug seinen Zielort erreichen kann. Sie müssen innerhalb der globalen Zeitlimits liegen (siehe Zeitfenster, die zu demselben wiederkehrenden Feld gehören, müssen getrennt sein, d. h. es darf sich kein Zeitfenster mit einem anderen überschneiden oder aneinandergrenzen. Sie müssen in chronologischer Reihenfolge angegeben werden.
|
unloading_policy |
Ausstiegsrichtlinie für das Fahrzeug erzwungen. |
load_limits |
Die Kapazität des Fahrzeugs (z. B. Gewicht, Volumen, Anzahl der Paletten) Die Schlüssel in der Zuordnung sind die Kennungen des Ladetyps, die mit den Schlüsseln des Feldes |
cost_per_hour |
Fahrzeugkosten: Alle Kosten addieren sich und müssen in derselben Einheit wie Kosten pro Stunde der Route des Fahrzeugs. Diese Kosten werden auf die Gesamtzeit der Route angerechnet und umfassen Fahrt-, Wartezeit und Besuchszeit. Die Verwendung von |
cost_per_traveled_hour |
Kosten pro Fahrtstunde auf der Route des Fahrzeugs. Diese Kosten werden nur auf die Fahrtzeit auf der Route (d. h. die in |
cost_per_kilometer |
Kosten pro Kilometer der Fahrzeugroute. Diese Kosten werden auf die im |
fixed_cost |
Wenn dieses Fahrzeug zur Abwicklung einer Sendung verwendet wird, fallen Festpreise an. |
used_if_route_is_empty |
Dieses Feld gilt nur für Fahrzeuge, auf deren Route keine Sendungen möglich sind. Sie gibt an, ob das Fahrzeug in diesem Fall als gebraucht gelten soll. Wenn der Wert „true“ ist, fährt das Fahrzeug vom Start- zum Zielort, auch wenn keine Lieferungen anstehen. Außerdem werden die Zeit- und Entfernungskosten berücksichtigt, die sich aus der Start- -> Endfahrt ergeben. Andernfalls fährt er nicht von seinem Start- zum Zielort und es sind keine |
route_duration_limit |
Der Grenzwert wird auf die Gesamtdauer der Route des Fahrzeugs angewendet. In einer bestimmten |
travel_duration_limit |
Der Grenzwert wird auf die Reisedauer auf der Route des Fahrzeugs angewendet. In einer gegebenen |
route_distance_limit |
Der Grenzwert wird auf die Gesamtstrecke auf der Route des Fahrzeugs angewendet. In einer gegebenen |
extra_visit_duration_for_visit_type |
Gibt eine Karte von „visit_types“-Strings zu „durations“-Werten an. Die Dauer ist die Zeit, die zusätzlich zu Wenn eine Besuchsanfrage mehrere Typen umfasst, wird für jeden Typ in der Karte eine Dauer hinzugefügt. |
break_rule |
Beschreibt den Pausenplan, der für dieses Fahrzeug erzwungen werden soll. Wenn das Feld leer ist, werden für dieses Fahrzeug keine Pausen geplant. |
label |
Gibt ein Label für dieses Fahrzeug an. Dieses Label wird in der Antwort als |
ignore |
Wenn „true“ festgelegt ist, muss Wenn eine Sendung von einem ignorierten Fahrzeug in Wenn eine Sendung von einem ignorierten Fahrzeug in |
travel_duration_multiple |
Gibt einen multiplikativen Faktor an, mit dem die Fahrtzeiten dieses Fahrzeugs verlängert oder verkürzt werden können. Wenn Sie diesen Wert beispielsweise auf 2,0 setzen, ist dieses Fahrzeug langsamer und hat doppelt so lange Fahrtzeiten wie für Standardfahrzeuge. Dieser Faktor wirkt sich nicht auf die Besuchsdauer aus. Wenn WARNUNG: Fahrtzeiten werden auf die nächste Sekunde gerundet, nachdem dieses Vielfache angewendet wurde, aber bevor numerische Operationen ausgeführt werden. Daher kann ein kleiner Vielfaches zu einem Genauigkeitsverlust führen. Siehe auch |
DurationLimit
Limit für die maximale Dauer der Route eines Fahrzeugs. Sie kann entweder hart oder weich sein.
Wenn ein Feld für ein weiches Limit definiert ist, müssen sowohl der Grenzwert für den weichen als auch die zugehörigen Kosten zusammen definiert werden.
Felder | |
---|---|
max_duration |
Ein hartes Limit, das die Dauer auf höchstens „max_duration“ beschränkt. |
soft_max_duration |
Ein weiches Limit, das kein maximales Dauerlimit erzwingt, aber wenn es verletzt wird, verursacht Kosten für die Route. Diese Kosten summieren sich zu den anderen im Modell definierten Kosten mit derselben Einheit. Wenn definiert, darf |
quadratic_soft_max_duration |
Ein weiches Limit, das kein maximales Dauerlimit erzwingt, aber wenn es verletzt wird, verursacht eine quadratische Dauer für die Route. Diese Kosten summieren sich zu den anderen im Modell definierten Kosten mit derselben Einheit. Wenn definiert, darf
|
cost_per_hour_after_soft_max |
Kosten pro Stunde, wenn der Grenzwert von
Die Kosten dürfen nicht negativ sein. |
cost_per_square_hour_after_quadratic_soft_max |
Es fallen Kosten pro Quadratstunde an, wenn der Grenzwert von Die zusätzlichen Kosten sind 0, wenn die Dauer unter dem Grenzwert liegt. Andernfalls hängen die Kosten wie folgt von der Dauer ab:
Die Kosten dürfen nicht negativ sein. |
LoadLimit
Definiert eine Belastungsgrenze für ein Fahrzeug, z. B. „Dieser Lkw darf nur bis zu 3.500 kg tragen“. load_limits
ansehen.
Felder | |
---|---|
soft_max_load |
Ein weiches Limit der Last. |
cost_per_unit_above_soft_max |
Wenn die Ladung auf der Route dieses Fahrzeugs |
start_load_interval |
Das akzeptable Ladeintervall des Fahrzeugs zu Beginn der Route. |
end_load_interval |
Das akzeptable Lastintervall des Fahrzeugs am Ende der Route. |
max_load |
Die maximal akzeptable Last. |
Intervall
Intervall akzeptabler Lastbeträge.
Felder | |
---|---|
min |
Eine akzeptable Mindestlast. Muss ≥ 0 sein. Wenn beide angegeben werden, muss |
max |
Eine maximal akzeptable Last. Muss ≥ 0 sein. Wenn keine Angabe gemacht wird, wird die maximale Last durch diese Nachricht nicht eingeschränkt. Wenn beide angegeben werden, muss |
TravelMode
Mobilitätsformen, die von Fahrzeugen genutzt werden können.
Dabei sollte es sich um eine Teilmenge der „Routes Preferred API“-Mobilitätsformen der Google Maps Platform handeln. Weitere Informationen finden Sie unter https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
Enums | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
Nicht angegebene Mobilitätsform, entspricht DRIVING . |
DRIVING |
Mobilitätsform, die der Route entspricht (Auto, ...). |
WALKING |
Mobilitätsform für Fußgängerroute. |
UnloadingPolicy
Richtlinie zum Entladen eines Fahrzeugs. Gilt nur für Sendungen mit Abhol- und Lieferservice.
Andere Lieferungen können unabhängig von unloading_policy
überall auf der Route kostenlos erfolgen.
Enums | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
Nicht angegebene Entladerichtlinien. Lieferungen müssen erst nach der entsprechenden Abholung erfolgen. |
LAST_IN_FIRST_OUT |
Lieferungen müssen in umgekehrter Reihenfolge der Abholung erfolgen |
FIRST_IN_FIRST_OUT |
Lieferungen müssen in der gleichen Bestellung erfolgen wie Abholungen |
Zwischenstopp
Verkapselt einen Wegpunkt. Mit Wegpunkten werden der Ankunfts- und Abfahrtsort von VisitRequests sowie der Start- und Endpunkt von Fahrzeugen markiert.
Felder | |
---|---|
side_of_road |
Optional. Gibt an, dass das Fahrzeug an der Position dieses Wegpunkts bevorzugt an einer bestimmten Straßenseite halten soll. Wenn Sie diesen Wert festlegen, verläuft die Route so durch den Ort, dass das Fahrzeug an der Straßenseite anhalten kann, die zur Mitte der Straße hin geneigt ist. Diese Option funktioniert nicht bei der Mobilitätsform "Fußweg". |
Union-Feld location_type . Verschiedene Möglichkeiten zur Darstellung eines Standorts. Für location_type ist nur einer der folgenden Werte zulässig: |
|
location |
Ein Punkt, der mithilfe geografischer Koordinaten angegeben wird, einschließlich einer optionalen Ausrichtung. |
place_id |
Die mit dem Wegpunkt verknüpfte Orts-ID des POI. |