- JSON-Darstellung
- Sendung
- VisitRequest
- LatLng
- Wegpunkt
- Ort
- TimeWindow
- Fahrzeug
- TravelMode
- UnloadingPolicy
- LoadLimit
- Intervall
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- Zeile
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
Ein Versandmodell enthält eine Reihe von Sendungen, die von einer Gruppe von Fahrzeugen durchgeführt werden müssen und dabei die Gesamtkosten, die sich aus der folgenden Summe ergeben, zu minimieren:
- 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 der globalen Dauer der Lieferungen
JSON-Darstellung |
---|
{ "shipments": [ { object ( |
Felder | |
---|---|
shipments[] |
Satz von 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. Die Zeitspanne des Modells muss kürzer als ein Jahr sein, d. h., 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 standardmäßig 00:00:00 UTC, der 1. Januar 1971 (Sekunden: 31536000, Nanos: 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 Matrizen für Dauer und Entfernung an. Wenn dieses Feld leer ist, werden stattdessen Google Maps oder geodätische Entfernungen verwendet, je nach dem 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 hinzugefügte Übergangsattribute |
shipmentTypeIncompatibilities[] |
Kombinationen von nicht kompatiblen Versandtypen (siehe |
shipmentTypeRequirements[] |
|
precedenceRules[] |
Eine Reihe von Vorrangregeln, die im Modell erzwungen werden müssen. |
maxActiveVehicles |
Die maximale Anzahl aktiver Fahrzeuge wird eingeschränkt. 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 der Fahrzeuge ausgewählt. Muss strikt positiv sein. |
Versand
Der Versand eines einzelnen Artikels von einer Abholstelle zu einer Lieferstelle. Damit die Lieferung als ausgeführt gilt, muss ein einzelnes Fahrzeug einen der Abholorte aufsuchen (und seine Reservekapazitäten entsprechend verringern) und später einen der Lieferorte aufsuchen (und seine Reservekapazitäten entsprechend wieder erhöhen).
JSON-Darstellung |
---|
{ "displayName": string, "pickups": [ { object ( |
Felder | |
---|---|
displayName |
Der benutzerdefinierte Anzeigename der Sendung. Sie kann bis zu 63 Zeichen lang sein und UTF-8-Zeichen enthalten. |
pickups[] |
Abholoptionen, die mit der Sendung verknüpft sind. Wenn nicht angegeben, muss das Fahrzeug nur einen Lieferort aufsuchen. |
deliveries[] |
Gruppe von Lieferalternativen für die Lieferung. Wenn nichts angegeben ist, muss das Fahrzeug nur einen Standort aufsuchen, der den Abholorten entspricht. |
loadDemands |
Die Anforderungen der Sendung (z. B. Gewicht, Menge, 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. Beispiel: „weight_kg“, „volumen_gallons“, „pallet_count“ usw. Wenn ein bestimmter Schlüssel nicht auf der Karte erscheint, wird die entsprechende Last 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 sind gemäß ihrem Index 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 Abholung bis Lieferung 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. 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. 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. Dies hängt nicht davon ab, welche Alternativen für Abholung und Lieferung ausgewählt werden, oder 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 |
Nicht leerer String, der den „Typ“ für diese Sendung angibt. 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“ festgelegt ist, wird diese Sendung übersprungen, aber es wird kein Wenn Sie einen Versand ignorieren, führt dies zu einem Validierungsfehler, wenn im Modell Das Ignorieren einer Sendung, die in |
penaltyCost |
Wenn der Versand nicht abgeschlossen wird, wird diese Gebühr zu den Gesamtkosten der Routen addiert. 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., der Versand muss abgeschlossen sein. |
pickupToDeliveryRelativeDetourLimit |
Gibt die maximale relative Umwegzeit im Vergleich zum kürzesten Weg von der Abholung zur Lieferung an. Wenn angegeben, muss der Wert nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Zustellung enthalten. Angenommen, t ist die kürzeste Zeit, die benötigt wird, um von der ausgewählten Abholoption direkt zur ausgewählten Lieferoption zu gelangen. 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. |
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 bei dieser |
departureLocation |
Der 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. Hinweis: Ein Fahrzeug kann außerhalb des Zeitfensters für die Ankunftszeit abfahren. Das bedeutet, dass Ankunftszeit und Dauer nicht innerhalb eines Zeitfensters liegen müssen. Dies kann zu Wartezeiten führen, wenn das Fahrzeug vor Wenn Die Zeitfenster dürfen sich nicht überschneiden, d. h., sie dürfen nicht aneinander angrenzen. Außerdem müssen sie in aufsteigender Reihenfolge angegeben werden.
|
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 Bearbeitung 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 diese |
avoidUTurns |
Gibt an, ob Kehrtwende auf Routen an diesem Ort vermieden werden soll. Die Vermeidung von U-Wenden erfolgt nach bestem Wissen und Gewissen. Eine vollständige Vermeidung ist nicht garantiert. Diese Funktion befindet sich in der Entwicklungsphase und kann sich ändern. |
LatLng
Ein Objekt, das ein Paar aus Breiten- und Längengrad darstellt. Es wird als Paar aus Werten vom Typ „Double“ (Breiten- und Längengrad) ausgedrückt. 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
Kapselt 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 der Standort dieses Wegpunkts das Fahrzeug bevorzugt an einer bestimmten Straßenseite halten soll. Wenn Sie diesen Wert festlegen, führt die Route durch den Standort, damit das Fahrzeug an der Straßenseite anhalten kann, die vom Standort aus gesehen zur Mitte der Straße hin geneigt ist. Diese Option ist für die Mobilitätsform „WALKING“ nicht verfügbar. |
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 mit dem Wegpunkt verknüpfte POI-Orts-ID. |
Standort
Kapselt einen Standort ein (einen geografischen Punkt und eine optionale Überschrift).
JSON-Darstellung |
---|
{
"latLng": {
object ( |
Felder | |
---|---|
latLng |
Die geografischen Koordinaten des Wegpunkts. |
heading |
Die Kompassausrichtung, die der Richtung des Verkehrsflusses zugeordnet ist. Mit diesem Wert wird die Straßenseite angegeben, auf der ein- und aussteigen soll. Die Richtung kann zwischen 0 und 360 liegen, wobei 0 eine Richtung nach Norden, 90 eine Richtung nach Osten usw. angibt. |
TimeWindow
Zeitfenster begrenzen die Zeit eines Ereignisses, z. B. die Ankunftszeit bei einem Besuch oder den Beginn und das Ende 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 untere Grenze des weichen Zeitfensters, softStartTime
, gibt an, dass das Ereignis am oder nach softStartTime
stattfinden soll. Die Kosten sind dabei proportional dazu, wie lange vor dem weichen Startzeitpunkt das Ereignis eintritt. 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` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
JSON-Darstellung |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
Felder | |
---|---|
startTime |
Der Beginn des Zeitfensters. Wenn kein Wert angegeben ist, wird er auf Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
endTime |
Das Ende 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: |
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 |
Das ungefähre Ende des Zeitfensters. Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: |
costPerHourBeforeSoftStartTime |
Kosten pro Stunde, die zu den anderen Kosten im Modell hinzugefügt werden, wenn das Ereignis vor der softStartTime eintritt. Der Wert wird wie folgt berechnet:
Dieser Wert muss positiv sein und das Feld kann nur festgelegt werden, wenn softStartTime festgelegt wurde. |
costPerHourAfterSoftEndTime |
Kosten pro Stunde, die zu den anderen Kosten im Modell hinzugefügt werden, wenn das Ereignis nach dem
Diese Kosten müssen positiv sein. Das Feld kann nur festgelegt werden, wenn |
Fahrzeug
Stellt ein Fahrzeug mit einem Versandproblem dar. 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 Folge von Besuchen (siehe ShipmentRoute
).
JSON-Darstellung |
---|
{ "displayName": string, "travelMode": enum ( |
Felder | |
---|---|
displayName |
Der benutzerdefinierte Anzeigename des Fahrzeugs. Er 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 |
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 Zeit- und Entfernungsmatrizen hat, darf |
startWaypoint |
Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug startet, bevor eine Sendung abgeholt wird. Wenn weder |
endLocation |
Der geografische Standort, an dem das Fahrzeug endet, nachdem es seine letzte |
endWaypoint |
Wegpunkt, der einen geografischen Ort darstellt, an dem das Fahrzeug anhält, nachdem es seine letzte |
startTags[] |
Gibt Tags an, die am Anfang der Route des Fahrzeugs angebracht 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 Zeitlimits liegen (siehe Zeitfenster, die zum selben wiederholten Feld gehören, dürfen sich nicht überschneiden. Sie müssen also nicht aneinandergrenzen und in chronologischer Reihenfolge angeordnet sein.
|
endTimeWindows[] |
Zeitfenster, in denen das Fahrzeug am Zielort ankommen kann. Sie müssen innerhalb der globalen Zeitbeschränkungen liegen (siehe Felder „ Zeitfenster, die zum selben wiederholten Feld gehören, dürfen sich nicht überschneiden. Sie müssen also nicht aneinandergrenzen und in chronologischer Reihenfolge angeordnet sein.
|
unloadingPolicy |
Die Richtlinie zum Entladen wird für das Fahrzeug erzwungen. |
loadLimits |
Kapazitäten des Fahrzeugs (z. B. Gewicht, Volumen, Anzahl der Paletten) Die Schlüssel in der Zuordnung sind die Kennungen der Art der Auslastung, die mit den Schlüsseln des Felds Ein Objekt, das eine Liste von |
costPerHour |
Fahrzeugkosten: Alle Kosten müssen in derselben Einheit wie Kosten pro Stunde der Fahrzeugroute. Diese Kosten werden auf die Gesamtzeit der Route angewendet und umfassen Fahrtzeit, Wartezeit und Besuchszeit. Die Verwendung von |
costPerTraveledHour |
Kosten pro zurückgelegte Stunde der Fahrzeugroute. Diese Kosten werden nur auf die Fahrtzeit der Route angewendet (d. h. die in |
costPerKilometer |
Kosten pro Kilometer der Fahrzeugroute. Diese Kosten werden auf die in der |
fixedCost |
Pauschalkosten, die anfallen, wenn dieses Fahrzeug für die Bearbeitung einer Sendung verwendet wird. |
usedIfRouteIsEmpty |
Dieses Feld gilt nur für Fahrzeuge, deren Route keine Sendungen bedient. Gibt an, ob das Fahrzeug in diesem Fall als gebraucht gilt oder nicht. Wenn „wahr“ festgelegt ist, fährt das Fahrzeug von seinem Start- zum Endort, auch wenn es keine Sendungen abwickelt. Die Zeit- und Entfernungskosten für die Fahrt vom Start- zum Endort werden berücksichtigt. Andernfalls fährt es nicht vom Start- zum Zielort und für dieses Fahrzeug sind keine |
routeDurationLimit |
Das Limit wird auf die Gesamtdauer der Route des Fahrzeugs angewendet. In einem bestimmten |
travelDurationLimit |
Die Beschränkung gilt für die Reisedauer der Route des Fahrzeugs. In einer bestimmten |
routeDistanceLimit |
Die Begrenzung wird auf die Gesamtstrecke der Fahrzeugroute angewendet. In einer bestimmten |
extraVisitDurationForVisitType |
Gibt eine Zuordnung von VisitTypes-Strings zur Dauer an. Die Dauer ist die Zeit, die zusätzlich zu Wenn eine Besuchsanfrage mehrere Typen aufweist, wird für jeden Typ in 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 |
Falls wahr, 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 die Fahrtzeiten sind doppelt so lang wie bei Standardfahrzeugen. Dieser Multiplikator hat keine Auswirkungen auf die Besuchsdauer. Wenn WARNUNG: Die Fahrtzeiten werden nach Anwendung dieses Multiplikators, aber vor der Ausführung numerischer Vorgänge auf die nächste Sekunde gerundet. Ein kleiner Multiplikator kann daher zu einem Genauigkeitsverlust führen. Weitere Informationen finden Sie unter |
TravelMode
Mobilitätsformen, die von Fahrzeugen genutzt werden können.
Diese sollten eine Teilmenge der bevorzugten Mobilitätsarten der Google Maps Platform Routes API sein. Weitere Informationen finden Sie unter 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 Fußgängerroute entspricht. |
UnloadingPolicy
Richtlinie zum Entladen eines Fahrzeugs. Gilt nur für Sendungen, die sowohl eine Abholung als auch eine Lieferung umfassen.
Andere Lieferungen sind unabhängig von unloadingPolicy
überall auf der Route kostenlos.
Enums | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
Keine Angabe zu Entladerichtlinien; Lieferungen müssen direkt nach den entsprechenden Abholungen erfolgen. |
LAST_IN_FIRST_OUT |
Lieferungen müssen in umgekehrter Reihenfolge der Abholung 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 für die Auslastung. |
costPerUnitAboveSoftMax |
Wenn die Auslastung auf der Route dieses Fahrzeugs |
startLoadInterval |
Das zulässige Ladeintervall des Fahrzeugs zu Beginn der Route. |
endLoadInterval |
Das zulässige Ladeintervall des Fahrzeugs am Ende der Route. |
maxLoad |
Die maximal akzeptable Last. |
Intervall
Intervall der zulässigen Lademengen.
JSON-Darstellung |
---|
{ "min": string, "max": string } |
Felder | |
---|---|
min |
Eine akzeptable Mindestauslastung. Muss ≥ 0 sein. Wenn beide angegeben sind, muss |
max |
Eine maximal zulässige Auslastung. Muss ≥ 0 sein. Wenn keine Angabe gemacht wird, ist die maximale Auslastung 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 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 |
Bei einem weichen Limit, das keine maximale Dauer erzwingt, fallen bei einem Verstoß für die Route Kosten mit quadratischer Dauer an. Diese Kosten summieren sich zu den anderen im Modell definierten Kosten mit derselben Einheit. 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 die maximale zurückgelegte Strecke definiert. Sie kann entweder hart oder weich sein.
Wenn ein weiches Limit definiert ist, müssen sowohl softMaxMeters
als auch costPerKilometerAboveSoftMax
definiert sein und nicht negativ sein.
JSON-Darstellung |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
Felder | |
---|---|
maxMeters |
Ein fester Grenzwert, der den Abstand auf maximal maxMeters beschränkt. Das Limit darf nicht negativ sein. |
softMaxMeters |
Ein weicher Grenzwert, bei dem kein maximales Entfernungslimit durchgesetzt wird, aber ein Verstoß führt zu Kosten, die zu anderen im Modell definierten Kosten mit derselben Einheit addiert werden. Wenn softMaxMeters definiert sind, muss sie kleiner als die maxMeters sein und darf nicht negativ sein. |
costPerKilometerAboveSoftMax |
Kosten pro Kilometer, wenn die Entfernung das 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 keine Besuche 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 Ende des Fahrzeugs (ditto, mit der Endzeit des Fahrzeugs).
JSON-Darstellung |
---|
{ "breakRequests": [ { object ( |
Felder | |
---|---|
breakRequests[] |
Reihenfolge der 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) zu Beginn der Unterbrechung. 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 genannten Pausen kann weiter eingeschränkt werden, indem eine Mindestpausenfrequenz erzwungen wird, z. B. „Alle 12 Stunden muss eine Pause von mindestens einer Stunde eingelegt werden“. Angenommen, dies kann als „Innerhalb eines gleitenden Zeitfensters von 12 Stunden muss es mindestens eine Pause von mindestens einer Stunde geben“ interpretiert werden, würde dieses Beispiel in die folgende FrequencyConstraint
übersetzt:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
Beim Timing und bei der Dauer der Pausen in der Lösung werden alle diese Einschränkungen berücksichtigt, zusätzlich zu den bereits in BreakRequest
angegebenen Zeitfenstern und Mindestdauern.
Ein FrequencyConstraint
kann in der Praxis auch auf nicht aufeinanderfolgende Pausen angewendet werden. 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. Mindestdauer der Werbeunterbrechung 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. Maximale zulässige Spanne eines Zeitintervalls auf der Route, das nicht mindestens teilweise eine Pause 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 Matrix für Dauer und Entfernung an. Es muss dieselbe Anzahl an Elementen wie |
vehicleStartTag |
Tag, das angibt, für welche Fahrzeuge diese Matrix mit Dauer und Entfernung 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 unterschiedliche |
Zeile
Gibt eine Zeile der Matrix mit Dauer und Entfernung an.
JSON-Darstellung |
---|
{ "durations": [ string ], "meters": [ number ] } |
Felder | |
---|---|
durations[] |
Dauerwerte für eine bestimmte Zeile. Es muss so viele Elemente wie Die Dauer in Sekunden mit bis zu neun Nachkommastellen und am Ende mit " |
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 |
TransitionAttributes
Gibt Attribute von Übergängen zwischen zwei aufeinanderfolgenden Besuchen auf einer Route an. Für denselben Übergang können mehrere TransitionAttributes
gelten: In diesem Fall summieren sich alle zusätzlichen Kosten und es gilt die strengste Einschränkung oder Grenze gemäß 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 einen Kostenpreis pro Kilometer an, der auf die zurückgelegte Strecke bei diesem Übergang angewendet wird. Die Summe ergibt alle |
distanceLimit |
Gibt eine Grenze für die zurückgelegte Strecke an, die während dieses Übergangs zurückgelegt wird. 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. Die Anzeige inkompatibler Sendungen auf derselben Route ist je nach 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 niemals dasselbe Fahrzeug nutzen. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Bei zwei Sendungen mit inkompatiblen Typen im
|
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 der alternativen Versandtypen, die vom |
dependentShipmentTypes[] |
Alle Sendungen eines Typs im Feld HINWEIS: Anforderungsketten, bei denen eine |
requirementMode |
Modus, der auf die Anforderung angewendet wird. |
RequirementMode
Mobilitätsformen, mit denen das Erscheinungsbild abhängiger Sendungen auf einer Route bestimmt wird.
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 |
Im Modus Eine „abhängige“ Abholung durch eine Lieferung muss daher Folgendes enthalten:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Wie bisher, mit der Ausnahme, dass die „abhängigen“ Sendungen zum Zeitpunkt der Lieferung eine „erforderliche“ Sendung im Fahrzeug haben müssen. |
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 Übermittlung 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 „zweiten“ Ereignisses. Dieses Feld muss angegeben werden. |