- JSON-Darstellung
- Versand
- VisitRequest
- LatLng
- Waypoint
- Ort
- TimeWindow
- Fahrzeug
- TravelMode
- RouteModifiers
- VehicleInfo
- TrailerInfo
- HazardousGoodsType
- UnloadingPolicy
- LoadLimit
- Intervall
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- Zeile
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement (Anforderungen an den Versandtyp)
- RequirementMode
- PrecedenceRule
Ein Versandmodell enthält eine Reihe von Sendungen, die von einer Reihe von Fahrzeugen ausgeführt werden müssen, wobei die Gesamtkosten minimiert werden, die sich aus der Summe der folgenden Kosten zusammensetzen:
- die Kosten für die Routenplanung der Fahrzeuge (Summe der Kosten pro Gesamtzeit, Kosten pro Fahrtzeit und Fixkosten für alle Fahrzeuge).
- die nicht erfüllten Versandstrafen.
- die Kosten für die gesamte Dauer der Sendungen
| JSON-Darstellung |
|---|
{ "shipments": [ { object ( |
| Felder | |
|---|---|
shipments[] |
Sendungen, die im Modell ausgeführt werden müssen. |
vehicles[] |
Fahrzeuge, die für Besuche verwendet werden können. |
globalStartTime |
Globale Start- und Endzeit des Modells: Zeiten außerhalb dieses Bereichs können nicht als gültig angesehen werden. Der Zeitraum des Modells darf nicht länger als ein Jahr sein. Das heißt, der Wenn Sie Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
globalEndTime |
Wenn kein Wert festgelegt ist, wird als Standardwert 00:00:00 UTC, 1. Januar 1971 (d. h. Sekunden: 31536000, Nanosekunden: 0) verwendet. Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
globalDurationCostPerHour |
Die „globale Dauer“ des gesamten Plans ist die Differenz zwischen der frühesten effektiven Startzeit und der spätesten effektiven Endzeit aller Fahrzeuge. Nutzende können dieser Menge Kosten pro Stunde zuweisen, um beispielsweise den frühesten Abschluss eines Auftrags zu optimieren. Diese Kosten müssen in derselben Einheit wie |
durationDistanceMatrices[] |
Gibt die im Modell verwendeten Zeit- und Entfernungsmatrizen an. Wenn dieses Feld leer ist, werden je nach Wert des Felds Typische Syntax:
|
durationDistanceMatrixSrcTags[] |
Tags, die die Quellen der Zeit- und Entfernungsmatrizen definieren; Tags entsprechen |
durationDistanceMatrixDstTags[] |
Tags, die die Ziele der Zeit- und Entfernungsmatrizen definieren; Tags entsprechen |
transitionAttributes[] |
Dem Modell wurden Übergangsattribute hinzugefügt. |
shipmentTypeIncompatibilities[] |
Sets inkompatibler „shipment_types“ (siehe |
shipmentTypeRequirements[] |
|
precedenceRules[] |
Eine Reihe von Vorrangregeln, die im Modell erzwungen werden müssen. |
maxActiveVehicles |
Beschränkt die maximale Anzahl aktiver Fahrzeuge. Ein Fahrzeug ist aktiv, wenn auf seiner Route mindestens eine Sendung ausgeführt wird. Dies kann verwendet werden, um die Anzahl der Routen für den Fall zu begrenzen, dass es weniger Fahrer als Fahrzeuge gibt und der Fuhrpark heterogen ist. Bei der Optimierung wird dann die beste Teilmenge von Fahrzeugen ausgewählt. Muss strikt positiv sein. |
Versand
Der Versand eines einzelnen Artikels von einer Abholstelle zu einer Lieferstelle. Damit die Sendung als ausgeführt gilt, muss ein einzelnes Fahrzeug einen Abholort anfahren (und die freien Kapazitäten entsprechend reduzieren) und dann später einen der Lieferorte aufsuchen (und die freien Kapazitäten entsprechend erhöhen).
| JSON-Darstellung |
|---|
{ "displayName": string, "pickups": [ { object ( |
| Felder | |
|---|---|
displayName |
Der benutzerdefinierte Anzeigename der Sendung. Er kann bis zu 63 Zeichen lang sein und UTF-8-Zeichen enthalten. |
pickups[] |
Eine Reihe von Alternativen für die Abholung, die der Sendung zugeordnet sind. Wenn nicht angegeben, muss das Fahrzeug nur einen Lieferort aufsuchen. |
deliveries[] |
Gruppe von Lieferalternativen für die Lieferung. Wenn nicht angegeben, muss das Fahrzeug nur zu einem Ort aufsuchen, an dem die Abholung stattfindet. |
loadDemands |
Anforderungen an die Ladung der Sendung (z. B. Gewicht, Volumen, Anzahl der Paletten usw.) Die Schlüssel in der Zuordnung sollten IDs sein, die den Typ der entsprechenden Ladung beschreiben, idealerweise auch mit den Einheiten. Beispiele: „weight_kg“, „volume_gallons“, „pallet_count“ usw. Wenn ein bestimmter Schlüssel nicht in der Zuordnung enthalten ist, wird die entsprechende Ladung als null betrachtet. Ein Objekt, das eine Liste von |
allowedVehicleIndices[] |
Die Fahrzeuge, die diese Lieferung durchführen können. Ist es leer, kann es von allen Fahrzeugen ausgeführt werden. Fahrzeuge werden in der |
costsPerVehicle[] |
Gibt die Kosten an, die anfallen, wenn diese Sendung von jedem Fahrzeug zugestellt wird. Wenn angegeben, muss es ENTWEDER:
Diese Kosten müssen in derselben Einheit wie |
costsPerVehicleIndices[] |
Indizes der Fahrzeuge, für die |
pickupToDeliveryAbsoluteDetourLimit |
Gibt die maximale absolute Umwegzeit im Vergleich zum kürzesten Weg von der Abholung zur Zustellung an. Wenn angegeben, muss er ein positiver Wert sein und die Sendung muss mindestens eine Abholung und eine Lieferung enthalten. Es sollte beispielsweise die kürzeste Zeit sein, die von der ausgewählten Abholoption direkt zur ausgewählten Lieferalternative benötigt wird. Dann wird durch das Festlegen von Wenn für dieselbe Sendung sowohl relative als auch absolute Limits angegeben sind, wird für jedes mögliche Abhol-/Lieferpaar das strengere Limit verwendet. Seit Oktober 2017 werden Umwege nur unterstützt, wenn die Reisedauer nicht vom Fahrzeug abhängt. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
pickupToDeliveryTimeLimit |
Gibt die maximale Dauer vom Beginn der Abholung bis zum Beginn der Zustellung einer Sendung an. Wenn angegeben, muss der Wert nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Zustellung enthalten. Das hängt nicht davon ab, welche Alternativen für die Abholung und Lieferung ausgewählt werden, und auch nicht von der Fahrzeuggeschwindigkeit. Dies kann neben maximalen Umwegbeschränkungen angegeben werden: Die Lösung berücksichtigt beide Spezifikationen. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
shipmentType |
Der String zur Angabe eines Typs für diese Sendung ist nicht leer. Mit dieser Funktion können Sie Inkompatibilitäten oder Anforderungen zwischen Unterscheidet sich von |
label |
Gibt ein Label für diese Sendung an. Dieses Label wird in der Antwort im |
ignore |
Wenn wahr, überspringe diese Sendung, wende aber keine Wenn eine Sendung ignoriert wird, tritt ein Validierungsfehler auf, wenn Es ist zulässig, eine Lieferung zu ignorieren, die in |
penaltyCost |
Wenn die Lieferung nicht abgeschlossen wird, wird diese Strafe auf die Gesamtkosten der Routen angerechnet. Eine Sendung gilt als abgeschlossen, wenn eine ihrer Abhol- und Lieferoptionen aufgerufen wird. Die Kosten können in derselben Einheit angegeben werden, die für alle anderen kostenbezogenen Felder im Modell verwendet wird. Sie müssen positiv sein. WICHTIG: Wenn diese Strafe nicht angegeben ist, gilt sie als unendlich, d. h. die Sendung muss abgeschlossen werden. |
pickupToDeliveryRelativeDetourLimit |
Gibt die maximale relative Umleitungszeit im Vergleich zum kürzesten Weg von Abholung bis Lieferung an. Wenn angegeben, muss der Wert nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Zustellung enthalten. Es sollte beispielsweise die kürzeste Zeit sein, die von der ausgewählten Abholoption direkt zur ausgewählten Lieferalternative benötigt wird. Wenn Sie dann Wenn für dieselbe Sendung sowohl relative als auch absolute Limits angegeben sind, wird für jedes mögliche Abhol-/Lieferpaar das strengere Limit verwendet. Seit dem 10. Oktober 2017 werden Umleitungen nur noch unterstützt, wenn die Fahrtdauer nicht von den Fahrzeugen abhängig ist. |
VisitRequest
Anfrage für einen Besuch, der von einem Fahrzeug ausgeführt werden kann: Es hat einen geografischen Standort (oder zwei, siehe unten), Öffnungs- und Schließzeiten in Form von Zeitfenstern sowie eine Servicedauer (Zeit, die das Fahrzeug nach Ankunft zum Abholen oder Abgeben der Waren verbracht hat).
| JSON-Darstellung |
|---|
{ "arrivalLocation": { object ( |
| Felder | |
|---|---|
arrivalLocation |
Der geografisch Standort, an dem das Fahrzeug bei dieser |
arrivalWaypoint |
Der Wegpunkt, an dem das Fahrzeug ankommt, wenn es diese |
departureLocation |
Der geografische Standort, an dem das Fahrzeug nach Abschluss dieser |
departureWaypoint |
Der Wegpunkt, an dem das Fahrzeug nach Abschluss dieser |
tags[] |
Gibt Tags an, die an die Besuchsanfrage angehängt sind. Leere oder doppelte Strings sind nicht zulässig. |
timeWindows[] |
Zeitfenster, die die Ankunftszeit bei einem Besuch einschränken. Beachten Sie, dass ein Fahrzeug möglicherweise außerhalb der Ankunftszeit abfahren kann, d.h. Ankunftszeit und Dauer müssen nicht innerhalb eines Zeitfensters liegen. Dies kann zu Wartezeiten führen, wenn das Fahrzeug vor Wenn Zeitfenster müssen disjunkt sein, d. h., es darf sich kein Zeitfenster mit einem anderen überschneiden oder aneinander liegen. Außerdem müssen die Zeitfenster in aufsteigender Reihenfolge angeordnet sein.
|
duration |
Dauer des Besuchs, d. h. die Zeit, die das Fahrzeug zwischen Ankunft und Abfahrt verbringt (wird zur möglichen Wartezeit addiert, siehe Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
cost |
Kosten für die Erledigung dieser Besuchsanfrage auf einer Fahrzeugroute. Damit können unterschiedliche Kosten für jede alternative Abholung oder Lieferung einer Sendung bezahlt werden. Diese Kosten müssen in derselben Einheit wie |
loadDemands |
Ladeanforderungen für diese Besuchsanfrage. Dies entspricht dem Feld Ein Objekt, das eine Liste von |
visitTypes[] |
Gibt die Arten des Besuchs an. So kann zusätzliche Zeit für ein Fahrzeug für diesen Besuch eingeplant werden (siehe Ein Typ kann nur einmal vorkommen. |
label |
Gibt ein Label für dieses |
LatLng
Ein Objekt, das ein Paar aus Breiten- und Längengrad darstellt. Es wird als Paar von Double-Werten ausgedrückt, die für den Breitengrad und den Längengrad stehen. Sofern nicht anders angegeben, muss dieses Objekt dem WGS84-Standard entsprechen. Die Werte müssen innerhalb normalisierter Bereiche liegen.
| JSON-Darstellung |
|---|
{ "latitude": number, "longitude": number } |
| Felder | |
|---|---|
latitude |
Der Breitengrad in Grad. Er muss im Bereich [-90,0, +90,0] liegen. |
longitude |
Der Längengrad in Grad. Er muss im Bereich [-180,0, +180,0] liegen. |
Zwischenstopp
Schließt einen Wegpunkt ein. Wegpunkte markieren die Ankunfts- und Abfahrtsorte von Besuchsanfragen sowie die Start- und Endpunkte von Fahrzeugen.
| JSON-Darstellung |
|---|
{ "sideOfRoad": boolean, // Union field |
| Felder | |
|---|---|
sideOfRoad |
Optional. Gibt an, dass das Fahrzeug am Standort dieses Wegpunkts an einer bestimmten Straßenseite halten soll. Wenn Sie diesen Wert festlegen, verläuft die Route durch den Standort, sodass das Fahrzeug an der Straßenseite anhalten kann, zu der der Standort gewichtet ist. Diese Option funktioniert nicht für den Mobilitätsmodus „ZU FUSS“. |
Union-Feld location_type. Verschiedene Möglichkeiten, einen Standort darzustellen. Für location_type ist nur einer der folgenden Werte zulässig: |
|
location |
Ein Punkt, der anhand von geografischen Koordinaten angegeben ist, einschließlich einer optionalen Richtung. |
placeId |
Die POI-Orts-ID, die mit dem Wegpunkt verknüpft ist. |
Standort
Umfasst einen Standort (einen geografischen Punkt und eine optionale Überschrift).
| JSON-Darstellung |
|---|
{
"latLng": {
object ( |
| Felder | |
|---|---|
latLng |
Die geografischen Koordinaten des Wegpunkts. |
heading |
Die Kompassrichtung, die der Verkehrsflussrichtung entspricht. Mit diesem Wert wird die Straßenseite angegeben, die für die Abholung und Rückgabe verwendet werden soll. Die Werte für die Richtung können zwischen 0 und 360 liegen. 0 gibt dabei die Richtung „Nördlich“ an, 90 die Richtung „Osten“ usw. |
TimeWindow
Zeitfenster beschränken die Uhrzeit eines Ereignisses, z. B. die Ankunftszeit bei einem Besuch oder die Start- und Endzeit eines Fahrzeugs.
Die Grenzen des festen Zeitfensters (startTime und endTime) erzwingen die früheste und letzte Zeit des Ereignisses, z. B. startTime <= event_time <=
endTime. Die Untergrenze des weichen Zeitfensters (softStartTime) drückt eine Präferenz für das Ereignis aus, das am oder nach dem softStartTime eintritt, indem Kosten proportional zur Dauer vor dem Ereignis „softStartTime“ anfallen. Die Obergrenze des weichen Zeitfensters softEndTime gibt an, dass das Ereignis am oder vor dem softEndTime eintreten soll, indem Kosten proportional zur Zeit nach dem Ereignis softEndTime anfallen. startTime, endTime, softStartTime und softEndTime müssen innerhalb der globalen Zeitbeschränkungen liegen (siehe ShipmentModel.global_start_time und ShipmentModel.global_end_time) und Folgendes berücksichtigen:
0 <= `startTime` <= `softStartTime` <= `endTime` and
0 <= `startTime` <= `softEndTime` <= `endTime`.
| JSON-Darstellung |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| Felder | |
|---|---|
startTime |
Die Startzeit des schweren Zeitfensters. Wenn nicht angegeben, wird Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
endTime |
Das Ende des Zeitfensters. Wenn nicht angegeben, wird Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
softStartTime |
Die Softstartzeit des Zeitfensters. Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
softEndTime |
Die weiche Endzeit des Zeitfensters. Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
costPerHourBeforeSoftStartTime |
Dieser Betrag wird den anderen Kosten im Modell hinzugefügt, wenn das Ereignis vor dem „softStartTime“ eintritt. Die Berechnung erfolgt so: Diese Kosten müssen positiv sein. Das Feld kann nur festgelegt werden, wenn „softStartTime“ festgelegt wurde. |
costPerHourAfterSoftEndTime |
Diese Kosten pro Stunde werden den anderen Kosten im Modell hinzugefügt, wenn das Ereignis nach Diese Kosten müssen positiv sein. Das Feld kann nur festgelegt werden, wenn |
Fahrzeug
Modelliert ein Fahrzeug bei einem Versandproblem. Wenn ein Versandproblem gelöst wird, wird für dieses Fahrzeug eine Route erstellt, die bei startLocation beginnt und um endLocation endet. Eine Route besteht aus einer Abfolge von Besuchen (siehe ShipmentRoute).
| JSON-Darstellung |
|---|
{ "displayName": string, "travelMode": enum ( |
| Felder | |
|---|---|
displayName |
Der benutzerdefinierte Anzeigename des Fahrzeugs. Sie kann bis zu 63 Zeichen lang sein und UTF-8-Zeichen enthalten. |
travelMode |
Die Mobilitätsform, die sich auf die vom Fahrzeug nutzbaren Straßen und seine Geschwindigkeit auswirkt. Siehe auch |
routeModifiers |
Eine Reihe von Bedingungen, die erfüllt werden müssen und sich darauf auswirken, wie Routen für das jeweilige Fahrzeug berechnet werden. |
startLocation |
Geografische Position, an der das Fahrzeug startet, bevor es Sendungen abholt. Wenn nicht angegeben, beginnt das Fahrzeug bei der ersten Abholung. Wenn das Versandmodell Matrizen für Dauer und Entfernung enthält, darf |
startWaypoint |
Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug startet, bevor eine Sendung abgeholt wird. Wenn weder |
endLocation |
Geografische Position, an der das Fahrzeug endet, nachdem es seine letzte |
endWaypoint |
Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug endet, nachdem es seine letzte |
startTags[] |
Gibt Tags an, die am Anfang der Route des Fahrzeugs angehängt sind. Leere oder doppelte Strings sind nicht zulässig. |
endTags[] |
Gibt Tags an, die am Ende der Route des Fahrzeugs angehängt sind. Leere oder doppelte Strings sind nicht zulässig. |
startTimeWindows[] |
Zeitfenster, in denen das Fahrzeug den Startort verlassen kann. Sie müssen innerhalb der globalen Zeitbeschränkungen liegen (siehe Felder „ Zeitfenster, die zum selben wiederholten Feld gehören, müssen disjunkt sein, d. h., kein Zeitfenster darf sich mit einem anderen überschneiden oder aneinander liegen. Außerdem müssen sie in chronologischer Reihenfolge angegeben sein.
|
endTimeWindows[] |
Zeitfenster, in denen das Fahrzeug am Endstandort ankommt. Sie müssen innerhalb der globalen Zeitbeschränkungen liegen (siehe Felder „ Zeitfenster, die zum selben wiederholten Feld gehören, müssen disjunkt sein, d. h., kein Zeitfenster darf sich mit einem anderen überschneiden oder aneinander liegen. Außerdem müssen sie in chronologischer Reihenfolge angegeben sein.
|
unloadingPolicy |
Die Richtlinie zum Entladen wird für das Fahrzeug erzwungen. |
loadLimits |
Kapazität des Fahrzeugs (z. B. Gewicht, Volumen, Anzahl der Paletten). Die Schlüssel in der Zuordnung sind die IDs des Ladetyps, die mit den Schlüsseln im Feld Ein Objekt, das eine Liste von |
costPerHour |
Fahrzeugkosten: Alle Kosten werden addiert und müssen in derselben Einheit wie Kosten pro Stunde der Fahrzeugroute. Diese Kosten werden auf die Gesamtdauer der Route angerechnet, einschließlich Reise-, Wartezeit und Besuchszeit. Die Verwendung von |
costPerTraveledHour |
Kosten pro Stunde der Fahrt mit dem Fahrzeug. Diese Kosten werden nur auf die Fahrzeit der Route angewendet (d. h. die in |
costPerKilometer |
Kosten pro Kilometer der Fahrzeugroute. Diese Kosten werden auf die in der |
fixedCost |
Es fallen Fixkosten an, wenn dieses Fahrzeug zur Abwicklung einer Sendung verwendet wird. |
usedIfRouteIsEmpty |
Dieses Feld gilt nur für Fahrzeuge, deren Route keine Sendungen umfasst. Gibt an, ob das Fahrzeug in diesem Fall als gebraucht betrachtet werden soll oder nicht. Falls wahr, wechselt das Fahrzeug vom Start bis zum Ziel, auch wenn es keine Sendungen bedient. Außerdem werden die aus Start- und Endfahrten entstehenden Zeit- und Entfernungskosten berücksichtigt. Andernfalls wird das Fahrzeug nicht vom Start bis zum Zielort bewegt und für dieses Fahrzeug sind keine |
routeDurationLimit |
Das Limit wird auf die Gesamtdauer der Route des Fahrzeugs angewendet. In einer bestimmten |
travelDurationLimit |
Die Beschränkung gilt für die Reisedauer der Route des Fahrzeugs. In einer bestimmten |
routeDistanceLimit |
Beschränkung, die auf die Gesamtstrecke der Route des Fahrzeugs angewendet wird. In einer bestimmten |
extraVisitDurationForVisitType |
Hier wird eine Zuordnung von Strings vom Typ „visitTypes“ zu Zeiträumen angegeben. Die Dauer ist die Zeit, die zusätzlich zu Wenn eine Besuchsanfrage mehrere Typen hat, wird für jeden Typ auf der Karte eine Dauer hinzugefügt. Ein Objekt, das eine Liste von |
breakRule |
Beschreibt den Pausenplan, der für dieses Fahrzeug gilt. 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“ angegeben ist, muss Wenn ein Versand von einem in Wenn ein Versand von einem ignorierten Fahrzeug in |
travelDurationMultiple |
Gibt einen multiplikativen Faktor an, mit dem die Fahrtzeit dieses Fahrzeugs erhöht oder verringert werden kann. Wenn Sie diesen Wert beispielsweise auf 2,0 festlegen, ist dieses Fahrzeug langsamer und hat doppelt so hohe Fahrzeiten wie bei Standardfahrzeugen. Dieser Multiplikator hat keine Auswirkungen auf die Besuchsdauer. Es wirkt sich auf die Kosten aus, wenn WARNUNG: Die Fahrtzeiten werden auf die nächste Sekunde gerundet, nachdem dieses Vielfache angewendet wurde, aber vor der Durchführung numerischer Operationen. Daher kann ein kleines Vielfaches zu einem Genauigkeitsverlust führen. Siehe auch |
TravelMode
Mobilitätsformen, die von Fahrzeugen genutzt werden können.
Diese sollten eine Teilmenge der Mobilitätsformen der Google Maps Platform Routes Preferred API sein, siehe https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
| Enums | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
Mobilitätsform ohne Angabe, entspricht DRIVING. |
DRIVING |
Mobilitätsform, die der Wegbeschreibung für Pkw entspricht (Auto usw.) |
WALKING |
Mobilitätsform, die der Wegbeschreibung für Fußgänger entspricht. |
TRUCK |
Mit einem LKW. Dieser Modus unterliegt physischen und rechtlichen Einschränkungen. |
RouteModifiers
Umfasst eine Reihe optionaler Bedingungen, die bei der Berechnung von Fahrzeugrouten erfüllt werden müssen. Dies ähnelt RouteModifiers in der Google Maps Platform Routes Preferred API: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteModifiers.
| JSON-Darstellung |
|---|
{
"vehicleInfo": {
object ( |
| Felder | |
|---|---|
vehicleInfo |
Gibt die Fahrzeuginformationen an. |
VehicleInfo
Zusammenfassung der Fahrzeuginformationen, z. B. Lkw-Informationen
| JSON-Darstellung |
|---|
{ "totalAxleCount": integer, "totalHeightMm": string, "totalLengthMm": string, "totalWidthMm": string, "totalWeightKg": string, "trailerInfo": [ { object ( |
| Felder | |
|---|---|
totalAxleCount |
Gesamtzahl der Achsen. Muss >= 2 sein. Muss festgelegt sein, damit der Trigger für Lkw oder Anhänger ausgelöst wird. Gilt nur für den |
totalHeightMm |
Höhe des Fahrzeugs, einschließlich der Höhe aller angehängten Anhänger. Muss so festgelegt sein, dass Lkw- oder Anhängerfahrzeuge ausgelöst werden können. Gilt nur für den |
totalLengthMm |
Länge des Fahrzeugs, einschließlich der Länge aller angehängten Anhänger. Muss so festgelegt sein, dass Lkw- oder Anhängerfahrzeuge ausgelöst werden können. Gilt nur für die Mobilitätsform |
totalWidthMm |
Breite des Fahrzeugs, einschließlich der Breite aller angebauten Anhänger. Muss so festgelegt sein, dass Lkw- oder Anhängerfahrzeuge ausgelöst werden können. Gilt nur für den |
totalWeightKg |
Gewicht des Fahrzeugs, einschließlich des Gewichts aller angehängten Anhänger. Das Gewicht bezieht sich in diesem Zusammenhang auf das tatsächliche Gewicht, nicht auf die Gewichtsklasse. Muss so festgelegt sein, dass Lkw- oder Anhängerfahrzeuge ausgelöst werden können. Gilt nur für den |
trailerInfo[] |
Gilt nur für den |
hazardousGoodsTypes[] |
Liste der im Fahrzeug transportierten Gefahrgüter. |
TrailerInfo
Informationen zu einzelnen am Fahrzeug angebrachten Anhängern. Für Lkw-Transporte müssen die Längen aller Anhänger angegeben werden. Gesamtattribute müssen die Attribute aller Trailer umfassen. Beispiel: totalHeightMm muss immer größer oder gleich trailerInfo.height_mm sein.
| JSON-Darstellung |
|---|
{ "lengthMm": string } |
| Felder | |
|---|---|
lengthMm |
Länge des Trailers |
HazardousGoodsType
Arten von unterschiedlichen gefährlichen Materialien.
| Enums | |
|---|---|
HAZARDOUS_GOODS_TYPE_UNSPECIFIED |
Es wurde kein Gefahrguttyp angegeben. |
EXPLOSIVES |
Sprengstoffe und Sprengkörper |
GASES |
Gase. |
FLAMMABLE |
Entflammbare Waren. |
COMBUSTIBLE |
Brennbare Güter |
ORGANIC |
Bioprodukte. |
POISON |
Giftige Güter. |
RADIOACTIVE |
Radioaktive Waren |
CORROSIVE |
Ätzende Waren |
ASPIRATION_HAZARD |
Aspirationsgefahr von Gefahrgütern. |
ENVIRONMENTAL_HAZARD |
Umweltgefährliche Güter. |
OTHER |
Sonstige Waren. |
UnloadingPolicy
Richtlinie zum Entladen eines Fahrzeugs. Gilt nur für Sendungen mit Abholung und Lieferung.
Andere Lieferungen sind unabhängig von unloadingPolicy überall auf der Route kostenlos.
| Enums | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Unbekannte Entladerichtlinie; Lieferungen müssen unmittelbar nach der entsprechenden Abholung erfolgen. |
LAST_IN_FIRST_OUT |
Die Lieferungen müssen in umgekehrter Reihenfolge der Abholungen erfolgen. |
FIRST_IN_FIRST_OUT |
Lieferungen müssen in derselben Reihenfolge wie die Abholung erfolgen |
LoadLimit
Definiert eine Traglast, die für ein Fahrzeug gilt, z. B. „Dieser Lkw darf nur bis zu 3.500 kg tragen“. loadLimits ansehen.
| JSON-Darstellung |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| Felder | |
|---|---|
softMaxLoad |
Ein weiches Limit der Last. |
costPerUnitAboveSoftMax |
Wenn die Auslastung auf der Route dieses Fahrzeugs |
startLoadInterval |
Das akzeptable Ladeintervall des Fahrzeugs beim Start der Route. |
endLoadInterval |
Das akzeptable Ladeintervall des Fahrzeugs am Ende der Route. |
maxLoad |
Die maximal zulässige Auslastung. |
Intervall
Intervall akzeptabler Lademengen.
| JSON-Darstellung |
|---|
{ "min": string, "max": string } |
| Felder | |
|---|---|
min |
Eine akzeptable Mindestlast. Muss ≥ 0 sein. Wenn beide angegeben sind, muss |
max |
Maximale akzeptable Last. Muss ≥ 0 sein. Wenn nicht angegeben, wird die maximale Last durch diese Nachricht nicht eingeschränkt. Wenn beide angegeben sind, muss |
DurationLimit
Ein Limit, das die maximale Dauer der Route eines Fahrzeugs definiert. Sie kann entweder hart oder weich sein.
Wenn ein Feld für das weiche Limit definiert ist, müssen sowohl der Grenzwert für weiches Limit als auch die zugehörigen Kosten gemeinsam definiert werden.
| JSON-Darstellung |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| Felder | |
|---|---|
maxDuration |
Ein starres Limit, das die Dauer auf maximal maxDuration beschränkt. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
softMaxDuration |
Ein weiches Limit, das keine maximale Dauer vorschreibt, aber bei dessen Überschreitung Kosten für die Route anfallen. Diese Kosten summieren sich zu den anderen im Modell definierten Kosten mit derselben Einheit. Falls definiert, darf Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
quadraticSoftMaxDuration |
Ein weiches Limit, das keine maximale Dauer vorschreibt, aber bei dessen Überschreitung für die Route Kosten anfallen, die quadratisch mit der Dauer ansteigen. Diese Kosten werden mit anderen im Modell definierten Kosten mit derselben Einheit addiert. Falls angegeben, darf
Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
costPerHourAfterSoftMax |
Kosten pro Stunde, wenn der Grenzwert Die Kosten dürfen nicht negativ sein. |
costPerSquareHourAfterQuadraticSoftMax |
Die Kosten pro Quadratstunde, die beim Verstoß gegen den Grenzwert von Die zusätzlichen Kosten betragen 0, wenn die Dauer unter der Schwelle liegt. Andernfalls hängen die Kosten von der Dauer ab: Die Kosten dürfen nicht negativ sein. |
DistanceLimit
Ein Limit, das eine maximale Strecke definiert, die zurückgelegt werden kann. Sie kann entweder hart oder weich sein.
Wenn ein weiches Limit definiert ist, müssen sowohl softMaxMeters als auch costPerKilometerAboveSoftMax definiert werden und nicht negativ sein.
| JSON-Darstellung |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
| Felder | |
|---|---|
maxMeters |
Eine feste Grenze, die die Entfernung auf maxMeters begrenzt. Der Grenzwert darf nicht negativ sein. |
softMaxMeters |
Ein weiches Limit, das keine maximale Entfernung erzwingt, aber bei einem Verstoß zu Kosten führt, die sich mit anderen im Modell definierten Kosten mit derselben Einheit addieren. Wenn softMaxMeters definiert sind, muss sie kleiner als die maxMeters sein und darf nicht negativ sein. |
costPerKilometerAboveSoftMax |
Kosten pro Kilometer, wenn die Strecke über dem Limit von Die Kosten dürfen nicht negativ sein. |
BreakRule
Regeln zum Generieren von Zeitpausen für ein Fahrzeug (z.B. Mittagspausen). Eine Pause ist ein zusammenhängender Zeitraum, in dem das Fahrzeug an seiner aktuellen Position inaktiv bleibt und keinen Besuch durchführen kann. Unterbrechungen können in folgenden Fällen auftreten:
- während der Fahrt zwischen zwei Besuchen (einschließlich der Zeit unmittelbar vor oder nach einem Besuch, aber nicht während eines Besuchs). In diesem Fall wird die entsprechende Fahrtzeit zwischen den Besuchen verlängert.
- oder vor dem Start des Fahrzeugs (das Fahrzeug wird möglicherweise nicht mitten in einer Pause gestartet), in diesem Fall hat es keinen Einfluss auf die Startzeit des Fahrzeugs.
- oder nach dem Fahrzeugende (ditto mit der Endzeit des Fahrzeugs).
| JSON-Darstellung |
|---|
{ "breakRequests": [ { object ( |
| Felder | |
|---|---|
breakRequests[] |
Abfolge von Pausen. Weitere Informationen finden Sie in der Nachricht |
frequencyConstraints[] |
Es können mehrere |
BreakRequest
Die Reihenfolge der Pausen für jedes Fahrzeug (d.h. ihre Anzahl und Reihenfolge) muss im Voraus bekannt sein. Die wiederholten BreakRequest definieren diese Sequenz in der Reihenfolge, in der sie auftreten müssen. Die Zeitfenster (earliestStartTime / latestStartTime) dürfen sich überschneiden, müssen aber mit der Bestellung kompatibel sein (dies wird geprüft).
| JSON-Darstellung |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| Felder | |
|---|---|
earliestStartTime |
Erforderlich. Untergrenze (einschließlich) zu Beginn der Unterbrechung. Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
latestStartTime |
Erforderlich. Obergrenze (einschließlich) für den Beginn der Pause. Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
minDuration |
Erforderlich. Mindestdauer der Werbeunterbrechung. Muss positiv sein. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
FrequencyConstraint
Die Häufigkeit und Dauer der oben angegebenen Pausen kann weiter eingeschränkt werden, indem eine Mindestpausenhäufigkeit festgelegt wird, z. B. „Mindestens eine Stunde alle 12 Stunden eine Pause machen“. Unter der Annahme, dass dies als „In einem fließenden Zeitfenster von 12 Stunden muss mindestens eine Pause von mindestens einer Stunde vorhanden sein“ interpretiert werden kann, würde sich dieses Beispiel so ergeben: FrequencyConstraint:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Bei der Zeit und Dauer der Werbeunterbrechungen in der Lösung werden alle diese Einschränkungen berücksichtigt, zusätzlich zu den Zeitfenstern und Mindestdauern, die bereits in der BreakRequest angegeben sind.
Ein FrequencyConstraint kann in der Praxis auch für nicht aufeinanderfolgende Unterbrechungen gelten. Im folgenden Zeitplan wird beispielsweise das Beispiel „1 Stunde alle 12 Stunden“ 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
| JSON-Darstellung |
|---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
| Felder | |
|---|---|
minBreakDuration |
Erforderlich. Minimale Unterbrechungsdauer für diese Einschränkung. Nicht negativ. Siehe Beschreibung von Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
maxInterBreakDuration |
Erforderlich. Maximal zulässige Zeitspanne für ein beliebiges Zeitintervall der Route, das nicht mindestens teilweise eine Unterbrechung von Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
DurationDistanceMatrix
Gibt eine Matrix mit Dauer und Entfernung vom Start- und Endpunkt des Besuchs zum Start- und Endpunkt des Fahrzeugs an.
| JSON-Darstellung |
|---|
{
"rows": [
{
object ( |
| Felder | |
|---|---|
rows[] |
Gibt die Zeilen der Dauer- und Distanzmatrix an. Es muss dieselbe Anzahl an Elementen wie |
vehicleStartTag |
Tag, das definiert, für welche Fahrzeuge diese Matrix für Dauer und Distanz gilt. Wenn das Feld leer ist, gilt dies für alle Fahrzeuge und es kann nur eine einzige Matrix geben. Jeder Fahrzeugstart muss genau einer Matrix entsprechen, d.h. genau eines der Alle Matrizen müssen eine andere |
Zeile
Gibt eine Zeile mit der Matrix für Dauer und Distanz an.
| JSON-Darstellung |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| Felder | |
|---|---|
durations[] |
Werte für die Dauer einer bestimmten Zeile. Es muss dieselbe Anzahl an Elementen wie Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
meters[] |
Entfernungswerte für eine bestimmte Zeile. Wenn sich im Modell keine Kosten oder Einschränkungen auf Entfernungen beziehen, können Sie dieses Feld leer lassen. Andernfalls muss es so viele Elemente wie |
TransitionAttributes
Gibt Attribute von Übergängen zwischen zwei aufeinanderfolgenden Besuchen auf einer Route an. Für dieselbe Umstellung können mehrere TransitionAttributes gelten. In diesem Fall werden alle zusätzlichen Kosten addiert und die strengste Einschränkung oder das strengste Limit angewendet (entsprechend der natürlichen „AND“-Semantik).
| JSON-Darstellung |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| Felder | |
|---|---|
srcTag |
Tags, die die (src->dst)-Übergänge definieren, auf die diese Attribute angewendet werden. Ein Quellenbesuch oder ein Fahrzeugstart stimmt überein, wenn |
excludedSrcTag |
|
dstTag |
Ein Zielbesuch oder Fahrzeugende stimmt genau dann überein, wenn |
excludedDstTag |
|
cost |
Gibt die Kosten für die Durchführung dieser Umwandlung an. Diese Einheit entspricht allen anderen Kosten im Modell und darf nicht negativ sein. Sie wird auf alle anderen bestehenden Kosten aufgeschlagen. |
costPerKilometer |
Gibt die Kosten pro Kilometer an, die auf die zurückgelegte Strecke bei dieser Umstellung angewendet werden. Die Summe ergibt alle |
distanceLimit |
Gibt ein Limit für die zurückgelegte Strecke bei diesem Übergang an. Seit dem 06.06.2021 werden nur weiche Limits unterstützt. |
delay |
Gibt die Verzögerung an, die bei der Durchführung dieser Umstellung auftritt. Diese Verzögerung tritt immer nach dem Ende des Quellbesuchs und vor Beginn des Zielbesuchs auf. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
ShipmentTypeIncompatibility
Gibt Inkompatibilitäten zwischen Sendungen in Abhängigkeit von ihrem Versandtyp an. Inkompatible Sendungen auf derselben Route sind aufgrund des Inkompatibilitätsmodus eingeschränkt.
| JSON-Darstellung |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| Felder | |
|---|---|
types[] |
Liste der inkompatiblen Typen. Zwei Sendungen mit unterschiedlichen |
incompatibilityMode |
Modus, der auf die Inkompatibilität angewendet wird. |
IncompatibilityMode
Mobilitätsformen, mit denen das Auftreten inkompatibler Sendungen auf derselben Route eingeschränkt werden.
| Enums | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Nicht angegebener Inkompatibilitätsmodus. Dieser Wert sollte niemals verwendet werden. |
NOT_PERFORMED_BY_SAME_VEHICLE |
In diesem Modus können zwei Sendungen mit inkompatiblen Typen nicht dasselbe Fahrzeug teilen. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Für zwei Sendungen mit inkompatiblen Typen mit dem Inkompatibilitätsmodus
|
ShipmentTypeRequirement
Gibt Anforderungen zwischen Sendungen basierend auf ihrem Sendungstyp an. Die Einzelheiten der Anforderung werden durch den Anforderungsmodus definiert.
| JSON-Darstellung |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| Felder | |
|---|---|
requiredShipmentTypeAlternatives[] |
Liste alternativer Versandtypen, die von der |
dependentShipmentTypes[] |
Für alle Sendungen mit einem Typ im Feld HINWEIS: Anforderungsketten, bei denen eine |
requirementMode |
Modus, der auf die Anforderung angewendet wird. |
RequirementMode
Modi, die das Aussehen abhängiger Sendungen 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 alle „abhängigen“ Sendungen dasselbe Fahrzeug nutzen wie mindestens eine ihrer „erforderlichen“ Sendungen. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Mit dem Modus „ Für die Abholung einer „abhängigen“ Sendung muss daher Folgendes angegeben sein:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Wie zuvor, mit der Ausnahme, dass bei den „abhängigen“ Sendungen zum Zeitpunkt der Lieferung eine „erforderliche“ Sendung im Fahrzeug vorhanden sein muss. |
PrecedenceRule
Eine Vorrangregel zwischen zwei Ereignissen (jedes Ereignis ist die Abholung oder Lieferung einer Sendung): Das „zweite“ Ereignis muss mindestens offsetDuration nach Beginn des „ersten“ Ereignisses beginnen.
Mehrere Vorrangstufen können sich auf dieselben (oder ähnliche) Ereignisse beziehen, z. B. „Abholung von B erfolgt nach Lieferung von A“ und „Abholung von C erfolgt nach Abholung von B“.
Außerdem gelten Vorrangregeln nur, wenn beide Sendungen ausgeführt werden. Andernfalls werden sie ignoriert.
| JSON-Darstellung |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| Felder | |
|---|---|
firstIsDelivery |
Gibt an, ob das „erste“ Ereignis eine Zustellung ist. |
secondIsDelivery |
Gibt an, ob das „zweite“ Ereignis eine Zustellung ist. |
offsetDuration |
Die Zeitverschiebung zwischen dem ersten und dem zweiten Ereignis. Sie kann negativ sein. Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
firstIndex |
Versandindex des „ersten“ Ereignisses. Dieses Feld muss angegeben werden. |
secondIndex |
Versandindex des Ereignisses „second“. Dieses Feld muss angegeben werden. |