- JSON-Darstellung
- Versand
- VisitRequest
- LatLng
- Wegpunkt
- Standort
- TimeWindow
- Fahrzeug
- TravelMode
- UnloadingPolicy
- LoadLimit
- Intervall
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- Zeile
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement:
- RequirementMode
- PrecedenceRule (Prioritätsregel)
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
JSON-Darstellung |
---|
{ "shipments": [ { object ( |
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. |
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 Nanosekundenauflösung und bis zu neun Nachkommastellen. Beispiele: |
globalEndTime |
Wenn kein Wert festgelegt ist, wird standardmäßig 00:00:00 UTC, 1. Januar 1971 (Sekunden: 31536000, Nanos: 0) verwendet. Ein Zeitstempel im Format RFC3339 UTC „Zulu“ mit Nanosekundenauflösung und bis zu neun Nachkommastellen. Beispiele: |
globalDurationCostPerHour |
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 |
durationDistanceMatrices[] |
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:
|
durationDistanceMatrixSrcTags[] |
Tags, mit denen die Quellen der Dauer- und Entfernungsmatrizen definiert werden; Tags entsprechen |
durationDistanceMatrixDstTags[] |
Tags, die die Ziele der Dauer- und Distanzmatrizen definieren; Tags entsprechen |
transitionAttributes[] |
Übergangsattribute wurden dem Modell hinzugefügt. |
shipmentTypeIncompatibilities[] |
Gruppen mit inkompatiblen „shipment_types“-Elementen (siehe |
shipmentTypeRequirements[] |
Gruppen mit |
precedenceRules[] |
Satz von Prioritätsregeln, die im Modell erzwungen werden müssen. |
maxActiveVehicles |
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. |
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).
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[] |
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. |
loadDemands |
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. Ein Objekt, das eine Liste von |
allowedVehicleIndices[] |
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 |
costsPerVehicle[] |
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 |
costsPerVehicleIndices[] |
Indexe der Fahrzeuge, für die |
pickupToDeliveryAbsoluteDetourLimit |
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. Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
pickupToDeliveryTimeLimit |
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. Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
shipmentType |
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 |
penaltyCost |
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. |
pickupToDeliveryRelativeDetourLimit |
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. |
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.
JSON-Darstellung |
---|
{ "arrivalLocation": { object ( |
Felder | |
---|---|
arrivalLocation |
Der Standort, an dem das Fahrzeug bei der Durchführung dieses |
arrivalWaypoint |
Der Wegpunkt, an dem das Fahrzeug bei der Durchführung dieses |
departureLocation |
Der Standort, an dem das Fahrzeug nach Abschluss dieses |
departureWaypoint |
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. |
timeWindows[] |
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 Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
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 |
loadDemands |
Anforderungen dieser Besuchsanfrage laden. Er entspricht dem Feld „ Ein Objekt, das eine Liste von |
visitTypes[] |
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 |
LatLng
Ein Objekt, das ein Paar aus Breiten- und Längengrad darstellt. Dies wird als Paar von Double-Werten (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
Verkapselt einen Wegpunkt. Mit Wegpunkten werden der Ankunfts- und Abfahrtsort von VisitRequests sowie der Start- und Endpunkt von Fahrzeugen markiert.
JSON-Darstellung |
---|
{ "sideOfRoad": boolean, // Union field |
Felder | |
---|---|
sideOfRoad |
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. |
placeId |
Die mit dem Wegpunkt verknüpfte Orts-ID des POI. |
Standort
Zusammenfassung eines Standorts (ein geografischer Punkt und eine optionale Ausrichtung)
JSON-Darstellung |
---|
{
"latLng": {
object ( |
Felder | |
---|---|
latLng |
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. |
TimeWindow
Zeitfenster beschränken die Zeit eines Ereignisses, z. B. die Ankunftszeit bei einem Besuch oder die Start- und Endzeit eines Fahrzeugs.
Feste Zeitfenstergrenzen, startTime
und endTime
, erzwingen die früheste und späteste Zeit des Ereignisses, z. B. startTime <= event_time <=
endTime
. Die Untergrenze des weichen Zeitfensters (softStartTime
) drückt aus, dass das Ereignis am oder nach dem softStartTime
eintritt, wobei Kosten proportional dazu anfallen, wie lange vor softStartTime das Ereignis eintritt. Die Obergrenze für das weiche Zeitfenster (softEndTime
) drückt aus, dass das Ereignis am oder vor softEndTime
eintritt. Dabei fallen Kosten proportional zur Dauer nach softEndTime
nach dem Eintreten des Ereignisses an. startTime
, endTime
, softStartTime
und softEndTime
müssen innerhalb der globalen Zeitlimits (siehe ShipmentModel.global_start_time
und ShipmentModel.global_end_time
) liegen 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 |
Der Beginn des harten Zeitfensters. Wenn keine Vorgabe erfolgt, wird er auf Ein Zeitstempel im Format RFC3339 UTC „Zulu“ mit Nanosekundenauflösung und bis zu neun Nachkommastellen. Beispiele: |
endTime |
Das Ende des festen Zeitfensters. Wenn keine Vorgabe erfolgt, wird er auf Ein Zeitstempel im Format RFC3339 UTC „Zulu“ mit Nanosekundenauflösung und bis zu neun Nachkommastellen. Beispiele: |
softStartTime |
Die Softstartzeit des Zeitfensters. Ein Zeitstempel im Format RFC3339 UTC „Zulu“ mit Nanosekundenauflösung und bis zu neun Nachkommastellen. Beispiele: |
softEndTime |
Das weiche Ende des Zeitfensters. Ein Zeitstempel im Format RFC3339 UTC „Zulu“ mit Nanosekundenauflösung und bis zu neun Nachkommastellen. Beispiele: |
costPerHourBeforeSoftStartTime |
Kosten pro Stunde, die zu den anderen Kosten im Modell addiert werden, wenn das Ereignis vor softStartTime eintritt. Sie werden wie folgt berechnet:
Diese Kosten müssen 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 und das Feld kann nur festgelegt werden, wenn |
Fahrzeug
Modelliert ein Fahrzeug in einem Versandproblem. Zur Lösung eines Versandproblems wird eine Route für dieses Fahrzeug erstellt, die zwischen startLocation
beginnt und um endLocation
endet. Eine Route ist eine Folge von Durchfahrten (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 genutzten Straßen und die Geschwindigkeit auswirkt. Siehe auch |
startLocation |
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 |
startWaypoint |
Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug startet, bevor Sendungen abgeholt werden. Wenn weder |
endLocation |
Geografischer Standort, an dem das Fahrzeug endet, nachdem die letzten |
endWaypoint |
Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug endet, nachdem die letzte |
startTags[] |
Gibt Tags an, die am Start 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 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.
|
endTimeWindows[] |
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.
|
unloadingPolicy |
Ausstiegsrichtlinie für das Fahrzeug erzwungen. |
loadLimits |
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 Ein Objekt, das eine Liste von |
costPerHour |
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 |
costPerTraveledHour |
Kosten pro Fahrtstunde auf der Route des Fahrzeugs. Diese Kosten werden nur auf die Fahrtzeit auf der Route (d. h. die in |
costPerKilometer |
Kosten pro Kilometer der Fahrzeugroute. Diese Kosten werden auf die im |
fixedCost |
Wenn dieses Fahrzeug zur Abwicklung einer Sendung verwendet wird, fallen Festpreise an. |
usedIfRouteIsEmpty |
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 |
routeDurationLimit |
Der Grenzwert wird auf die Gesamtdauer der Route des Fahrzeugs angewendet. In einer bestimmten |
travelDurationLimit |
Der Grenzwert wird auf die Reisedauer auf der Route des Fahrzeugs angewendet. In einer gegebenen |
routeDistanceLimit |
Der Grenzwert wird auf die Gesamtstrecke auf der Route des Fahrzeugs angewendet. In einer gegebenen |
extraVisitDurationForVisitType |
Gibt eine Zuordnung von "visitTypes"-Strings zu "duration"-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. Ein Objekt, das eine Liste von |
breakRule |
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 |
travelDurationMultiple |
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 |
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 unloadingPolicy
ü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 |
LoadLimit
Definiert eine Belastungsgrenze für ein Fahrzeug, 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 Ladung auf der Route dieses Fahrzeugs |
startLoadInterval |
Das akzeptable Ladeintervall des Fahrzeugs zu Beginn der Route. |
endLoadInterval |
Das akzeptable Lastintervall des Fahrzeugs am Ende der Route. |
maxLoad |
Die maximal akzeptable Last. |
Intervall
Intervall akzeptabler Lastbeträge.
JSON-Darstellung |
---|
{ "min": string, "max": string } |
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 |
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.
JSON-Darstellung |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
Felder | |
---|---|
maxDuration |
Ein hartes Limit, das die Dauer auf maximal „maxDuration“ beschränkt. Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
softMaxDuration |
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 Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
quadraticSoftMaxDuration |
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
Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
costPerHourAfterSoftMax |
Kosten pro Stunde, wenn der Grenzwert von
Die Kosten dürfen nicht negativ sein. |
costPerSquareHourAfterQuadraticSoftMax |
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. |
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 softMaxMeters
als auch costPerKilometerAboveSoftMax
definiert und nicht negativ sein.
JSON-Darstellung |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
Felder | |
---|---|
maxMeters |
Ein harter Grenzwert, der die Entfernung auf maximal maxMeters beschränkt. Das Limit darf nicht negativ sein. |
softMaxMeters |
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. Falls definiert, müssen softMaxMeters kleiner als maxMeters sein und dürfen nicht negativ sein. |
costPerKilometerAboveSoftMax |
Es fallen Kosten pro Kilometer an, wenn die Entfernung über dem Limit von
Die Kosten dürfen nicht negativ sein. |
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).
JSON-Darstellung |
---|
{ "breakRequests": [ { object ( |
Felder | |
---|---|
breakRequests[] |
Reihenfolge der Pausen Siehe |
frequencyConstraints[] |
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 (earliestStartTime
/ latestStartTime
) können sich überschneiden, müssen aber mit der Bestellung kompatibel sein (es ist aktiviert).
JSON-Darstellung |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
Felder | |
---|---|
earliestStartTime |
Erforderlich. Die Untergrenze (einschließlich) zu Beginn der Unterbrechung. Ein Zeitstempel im Format RFC3339 UTC „Zulu“ mit Nanosekundenauflösung und bis zu neun Nachkommastellen. Beispiele: |
latestStartTime |
Erforderlich. Obergrenze (einschließlich) zu Beginn der Unterbrechung. Ein Zeitstempel im Format RFC3339 UTC „Zulu“ mit Nanosekundenauflösung und bis zu neun Nachkommastellen. Beispiele: |
minDuration |
Erforderlich. Die Mindestdauer der Unterbrechung. Muss positiv sein. Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
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
:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { 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
JSON-Darstellung |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
Felder | |
---|---|
minBreakDuration |
Erforderlich. Minimale Pausendauer für diese Einschränkung. Nicht negativ. Siehe Beschreibung von Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
maxInterBreakDuration |
Erforderlich. Maximal zulässige Spanne für ein Zeitintervall auf der Route, das nicht zumindest teilweise eine Unterbrechung von Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
DurationDistanceMatrix
Gibt eine Matrix für Dauer und Entfernung von den Start- und Startorten des Besuchs und der Startorte der Fahrzeuge an.
JSON-Darstellung |
---|
{
"rows": [
{
object ( |
Felder | |
---|---|
rows[] |
Gibt die Zeilen der Dauer- und Distanzmatrix an. Es muss genauso viele Elemente wie |
vehicleStartTag |
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.
JSON-Darstellung |
---|
{ "durations": [ string ], "meters": [ number ] } |
Felder | |
---|---|
durations[] |
Dauerwerte für eine bestimmte Zeile. Es muss genauso viele Elemente wie Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
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 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).
JSON-Darstellung |
---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
Felder | |
---|---|
srcTag |
Tags, die die Übergänge (src->dst) definieren, für die diese Attribute gelten. Ein Besuch oder Start eines Fahrzeugs stimmt überein, wenn |
excludedSrcTag |
|
dstTag |
Ein Zielbesuch oder Fahrzeugende stimmt überein, wenn |
excludedDstTag |
|
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. |
costPerKilometer |
Gibt die Kosten pro Kilometer an, die auf die bei diesem Übergang zurückgelegte Strecke angewendet werden. Er addiert alle |
distanceLimit |
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. Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
ShipmentTypeIncompatibility
Gibt Inkompatibilitäten zwischen Sendungen abhängig von ihrer Sendungsart an. Inkompatible Sendungen auf derselben Route können aufgrund des Inkompatibilitätsmodus nur eingeschränkt angezeigt werden.
JSON-Darstellung |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
Felder | |
---|---|
types[] |
Liste der inkompatiblen Typen. Zwei Sendungen mit unterschiedlichen |
incompatibilityMode |
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 ihrer Sendungsart an. Die Einzelheiten der Anforderung werden durch den Anforderungsmodus definiert.
JSON-Darstellung |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
Felder | |
---|---|
requiredShipmentTypeAlternatives[] |
Liste alternativer Versandarten, die für die |
dependentShipmentTypes[] |
Für alle Sendungen mit einem Typ im Feld „ HINWEIS: Anforderungsketten, bei denen ein |
requirementMode |
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. |
PrecedenceRule
Eine Prioritätsregel 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 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.
JSON-Darstellung |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
Felder | |
---|---|
firstIsDelivery |
Gibt an, ob das „erste“ Ereignis eine Auslieferung ist. |
secondIsDelivery |
Gibt an, ob das „zweite“ Ereignis eine Auslieferung ist. |
offsetDuration |
Abstand zwischen dem „ersten“ und dem „zweiten“ Ereignis Sie kann negativ sein. Eine Dauer in Sekunden mit bis zu neun Nachkommastellen, die auf „ |
firstIndex |
Versandindex des „ersten“ Ereignisses. Dieses Feld muss angegeben werden. |
secondIndex |
Versandindex des „zweiten“ Ereignisses. Dieses Feld muss angegeben werden. |