ShipmentModel

Ein Sendungsmodell enthält eine Reihe von Sendungen, die von einer Reihe von Fahrzeugen ausgeführt werden müssen, wobei die Gesamtkosten minimiert werden müssen. Diese setzen sich zusammen aus:

  • die Kosten für die Routenplanung der Fahrzeuge (Summe der Kosten pro Gesamtzeit, Kosten pro Fahrtzeit und Fixkosten für alle Fahrzeuge).
  • die Strafen für nicht ausgeführte Sendungen.
  • die Kosten für die globale Dauer der Sendungen
JSON-Darstellung
{
  "shipments": [
    {
      object (Shipment)
    }
  ],
  "vehicles": [
    {
      object (Vehicle)
    }
  ],
  "objectives": [
    {
      object (Objective)
    }
  ],
  "globalStartTime": string,
  "globalEndTime": string,
  "globalDurationCostPerHour": number,
  "durationDistanceMatrices": [
    {
      object (DurationDistanceMatrix)
    }
  ],
  "durationDistanceMatrixSrcTags": [
    string
  ],
  "durationDistanceMatrixDstTags": [
    string
  ],
  "transitionAttributes": [
    {
      object (TransitionAttributes)
    }
  ],
  "shipmentTypeIncompatibilities": [
    {
      object (ShipmentTypeIncompatibility)
    }
  ],
  "shipmentTypeRequirements": [
    {
      object (ShipmentTypeRequirement)
    }
  ],
  "precedenceRules": [
    {
      object (PrecedenceRule)
    }
  ],
  "maxActiveVehicles": integer
}
Felder
shipments[]

object (Shipment)

Satz von Sendungen, die im Modell ausgeführt werden müssen.

vehicles[]

object (Vehicle)

Satz von Fahrzeugen, die für Besuche verwendet werden können.

objectives[]

object (Objective)

Die Zielvorhaben für dieses Modell, die in Kosten umgewandelt werden. Wenn das Eingabemodell nicht leer ist, muss es kostenlos sein. Verwenden Sie solvingMode = TRANSFORM_AND_RETURN_REQUEST, um die geänderte Anfrage zu erhalten. In diesem Fall wird die Anfrage nicht gelöst. Siehe entsprechende Dokumentation.

Experimentell: Weitere Informationen finden Sie unter https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request.

globalStartTime

string (Timestamp format)

Globale Start- und Endzeit des Modells: Zeiten außerhalb dieses Bereichs werden nicht berücksichtigt.

Die Zeitspanne des Modells muss weniger als ein Jahr betragen, d. h., die globalEndTime und die globalStartTime müssen innerhalb von 31.536.000 Sekunden voneinander liegen.

Wenn Sie cost_per_*hour-Felder verwenden, sollten Sie dieses Zeitfenster auf ein kleineres Intervall festlegen, um die Leistung zu erhöhen. Wenn Sie beispielsweise einen einzelnen Tag modellieren, sollten Sie die globalen Zeitlimits auf diesen Tag festlegen. Wenn nicht festgelegt, wird der 1. Januar 1970, 00:00:00 UTC (d. h. Sekunden: 0, Nanosekunden: 0) als Standard verwendet.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

globalEndTime

string (Timestamp format)

Wenn nicht festgelegt, wird 00:00:00 UTC, 1. Januar 1971 (d. h. Sekunden: 31536000, Nanosekunden: 0) als Standard verwendet.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

globalDurationCostPerHour

number

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 beispielsweise die frühestmögliche Fertigstellung des Jobs zu optimieren. Diese Kosten müssen in derselben Einheit wie Shipment.penalty_cost angegeben werden.

durationDistanceMatrices[]

object (DurationDistanceMatrix)

Gibt die im Modell verwendeten Dauer- und Distanzmatrizen an. Wenn dieses Feld leer ist, werden stattdessen Google Maps- oder geodätische Entfernungen verwendet, je nach Wert des Felds useGeodesicDistances. Wenn es nicht leer ist, darf useGeodesicDistances nicht „true“ sein und weder durationDistanceMatrixSrcTags noch durationDistanceMatrixDstTags dürfen leer sein.

Typische Syntax:

  • Es gibt zwei Standorte: locA und locB.
  • 1 Fahrzeug, das seine Route bei locA beginnt und bei locA beendet.
  • 1 Abholanfrage an Ort B.
model {
  vehicles { startTags: "locA"  endTags: "locA" }
  shipments { pickups { tags: "locB" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixDstTags: "locA"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrices {
    rows {  # from: locA
      durations { seconds: 0 }   meters: 0    # to: locA
      durations { seconds: 100 } meters: 1000 # to: locB
    }
    rows {  # from: locB
      durations { seconds: 102 } meters: 990 # to: locA
      durations { seconds: 0 }   meters: 0   # to: locB
    }
  }
}
  • Es gibt drei Standorte: locA, locB und locC.
  • 1 Fahrzeug, das seine Route an locA beginnt und an locB beendet, wobei die Matrix „fast“ verwendet wird.
  • 1 Fahrzeug, das seine Route an locB beginnt und an locB beendet, wobei die Matrix „slow“ verwendet wird.
  • 1 Fahrzeug, das seine Route an locB beginnt und an locB beendet, wobei die Matrix „fast“ verwendet wird.
  • 1 Abholanfrage an locC.
model {
  vehicles { startTags: "locA" endTags: "locB" startTags: "fast" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "slow" }
  vehicles { startTags: "locB" endTags: "locB" startTags: "fast" }
  shipments { pickups { tags: "locC" } }
  durationDistanceMatrixSrcTags: "locA"
  durationDistanceMatrixSrcTags: "locB"
  durationDistanceMatrixSrcTags: "locC"
  durationDistanceMatrixDstTags: "locB"
  durationDistanceMatrixDstTags: "locC"
  durationDistanceMatrices {
    vehicleStartTag: "fast"
    rows {  # from: locA
      durations { seconds: 1000 } meters: 2000 # to: locB
      durations { seconds: 600 }  meters: 1000 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }   meters: 0    # to: locB
      durations { seconds: 700 } meters: 1200 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 702 } meters: 1190 # to: locB
      durations { seconds: 0 }   meters: 0    # to: locC
    }
  }
  durationDistanceMatrices {
    vehicleStartTag: "slow"
    rows {  # from: locA
      durations { seconds: 1800 } meters: 2001 # to: locB
      durations { seconds: 900 }  meters: 1002 # to: locC
    }
    rows {  # from: locB
      durations { seconds: 0 }    meters: 0    # to: locB
      durations { seconds: 1000 } meters: 1202 # to: locC
    }
    rows {  # from: locC
      durations { seconds: 1001 } meters: 1195 # to: locB
      durations { seconds: 0 }    meters: 0    # to: locC
    }
  }
}
durationDistanceMatrixSrcTags[]

string

Tags, die die Quellen der Dauer- und Distanzmatrizen definieren; durationDistanceMatrices(i).rows(j) definiert die Dauer und Distanzen von Besuchen mit dem Tag durationDistanceMatrixSrcTags(j) zu anderen Besuchen in Matrix i.

Tags entsprechen VisitRequest.tags oder Vehicle.start_tags. Ein bestimmter VisitRequest oder Vehicle muss genau mit einem Tag in diesem Feld übereinstimmen. Beachten Sie, dass die Quell-, Ziel- und Matrix-Tags eines Vehicle identisch sein können. Ebenso können die Quell- und Ziel-Tags eines VisitRequest identisch sein. Alle Tags müssen sich unterscheiden und dürfen keine leeren Strings sein. Wenn dieses Feld nicht leer ist, darf durationDistanceMatrices nicht leer sein.

durationDistanceMatrixDstTags[]

string

Tags, die die Ziele der Dauer- und Distanzmatrizen definieren; durationDistanceMatrices(i).rows(j).durations(k) (bzw. durationDistanceMatrices(i).rows(j).meters(k)) definiert die Dauer (bzw. die Entfernung) der Fahrt von Besuchen mit dem Tag durationDistanceMatrixSrcTags(j) zu Besuchen mit dem Tag durationDistanceMatrixDstTags(k) in Matrix i.

Tags entsprechen VisitRequest.tags oder Vehicle.start_tags. Ein bestimmter VisitRequest oder Vehicle muss genau mit einem Tag in diesem Feld übereinstimmen. Beachten Sie, dass die Quell-, Ziel- und Matrix-Tags eines Vehicle identisch sein können. Ebenso können die Quell- und Ziel-Tags eines VisitRequest identisch sein. Alle Tags müssen sich unterscheiden und dürfen keine leeren Strings sein. Wenn dieses Feld nicht leer ist, darf durationDistanceMatrices nicht leer sein.

transitionAttributes[]

object (TransitionAttributes)

Dem Modell wurden Übergangsattribute hinzugefügt.

shipmentTypeIncompatibilities[]

object (ShipmentTypeIncompatibility)

Sätze inkompatibler shipment_types (siehe ShipmentTypeIncompatibility).

shipmentTypeRequirements[]

object (ShipmentTypeRequirement)

Sätze von shipmentType-Anforderungen (siehe ShipmentTypeRequirement).

precedenceRules[]

object (PrecedenceRule)

Satz von Rangfolgeregeln, die im Modell erzwungen werden müssen.

WICHTIG: Die Verwendung von Rangfolgeregeln schränkt die Größe des Problems ein, das optimiert werden kann. Anfragen mit Rangfolgeregeln, die viele Sendungen enthalten, werden möglicherweise abgelehnt.

maxActiveVehicles

integer

Begrenzt die maximale Anzahl aktiver Fahrzeuge. Ein Fahrzeug ist aktiv, wenn auf seiner Route mindestens eine Sendung ausgeführt wird. Damit lässt sich die Anzahl der Routen begrenzen, wenn es weniger Fahrer als Fahrzeuge gibt und die Fahrzeugflotte 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 der Abholungen bis zu einer der Lieferungen. Damit eine Sendung als ausgeführt gilt, muss ein eindeutiges Fahrzeug einen ihrer Abholorte besuchen (und seine freien Kapazitäten entsprechend verringern) und später einen ihrer Lieferorte besuchen (und seine freien Kapazitäten entsprechend wieder erhöhen).

JSON-Darstellung
{
  "displayName": string,
  "pickups": [
    {
      object (VisitRequest)
    }
  ],
  "deliveries": [
    {
      object (VisitRequest)
    }
  ],
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "allowedVehicleIndices": [
    integer
  ],
  "costsPerVehicle": [
    number
  ],
  "costsPerVehicleIndices": [
    integer
  ],
  "pickupToDeliveryAbsoluteDetourLimit": string,
  "pickupToDeliveryTimeLimit": string,
  "shipmentType": string,
  "label": string,
  "ignore": boolean,
  "penaltyCost": number,
  "pickupToDeliveryRelativeDetourLimit": number
}
Felder
displayName

string

Der benutzerdefinierte Anzeigename der Sendung. Er kann bis zu 63 Zeichen lang sein und UTF-8-Zeichen enthalten.

pickups[]

object (VisitRequest)

Satz von Abholalternativen, die mit der Sendung verknüpft sind. Wenn nicht angegeben, muss das Fahrzeug nur einen Standort besuchen, der den Lieferungen entspricht.

deliveries[]

object (VisitRequest)

Satz von Lieferalternativen, die mit der Sendung verknüpft sind. Wenn nicht angegeben, muss das Fahrzeug nur einen Ort besuchen, der den Abholungen entspricht.

loadDemands

map (key: string, value: object (Load))

Ladeanforderungen der Sendung (z. B. Gewicht, Volumen, Anzahl der Paletten usw.) Die Schlüssel in der Zuordnung sollten IDs sein, die den Typ der entsprechenden Last 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 Last als null betrachtet.

allowedVehicleIndices[]

integer

Die Fahrzeuge, die diese Sendung ausführen können. Wenn das Feld leer ist, können alle Fahrzeuge die Fahrt ausführen. Fahrzeuge werden durch ihren Index in der Liste vehicles des ShipmentModel angegeben.

costsPerVehicle[]

number

Gibt die Kosten an, die anfallen, wenn diese Sendung von jedem Fahrzeug zugestellt wird. Wenn angegeben, muss ENTWEDER:

  • dieselbe Anzahl von Elementen wie costsPerVehicleIndices. costsPerVehicle[i] entspricht dem Fahrzeug costsPerVehicleIndices[i] des Modells.
  • dieselbe Anzahl von Elementen wie Fahrzeuge im Modell. Das i-te Element entspricht dem i-ten Fahrzeug des Modells.

Diese Kosten müssen in derselben Einheit wie penaltyCost angegeben werden und dürfen nicht negativ sein. Lassen Sie dieses Feld leer, wenn keine solchen Kosten anfallen.

costsPerVehicleIndices[]

integer

Indizes der Fahrzeuge, für die costsPerVehicle gilt. Wenn das Feld nicht leer ist, muss es dieselbe Anzahl von Elementen wie costsPerVehicle enthalten. Ein Fahrzeugindex darf nicht mehrmals angegeben werden. Wenn ein Fahrzeug von costsPerVehicleIndices ausgeschlossen ist, sind die Kosten dafür null.

pickupToDeliveryAbsoluteDetourLimit

string (Duration format)

Gibt die maximale absolute Umwegzeit im Vergleich zur kürzesten Route von der Abholung bis zur Lieferung an. Wenn angegeben, muss der Wert nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Lieferung enthalten.

Beispiel: t ist die kürzeste Zeit, die benötigt wird, um von der ausgewählten Abholalternative direkt zur ausgewählten Lieferalternative zu gelangen. Wenn Sie pickupToDeliveryAbsoluteDetourLimit festlegen, wird Folgendes erzwungen:

startTime(delivery) - startTime(pickup) <=
t + pickupToDeliveryAbsoluteDetourLimit

Wenn für dieselbe Sendung sowohl relative als auch absolute Limits angegeben sind, wird für jedes mögliche Abhol-/Lieferpaar das restriktivere Limit verwendet. Seit Oktober 2017 werden Umwege nur unterstützt, wenn die Reisedauer nicht von Fahrzeugen abhängt.

pickupToDeliveryTimeLimit

string (Duration format)

Gibt die maximale Dauer vom Beginn der Abholung bis zum Beginn der Lieferung einer Sendung an. Wenn angegeben, muss der Wert nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Lieferung enthalten. Dies hängt weder von den ausgewählten Alternativen für Abholung und Lieferung noch von der Fahrzeuggeschwindigkeit ab. Dies kann zusammen mit Einschränkungen für den maximalen Umweg angegeben werden. Die Lösung berücksichtigt beide Angaben.

shipmentType

string

Nicht leere Zeichenfolge, die einen „Typ“ für diese Sendung angibt. Mit dieser Funktion können Inkompatibilitäten oder Anforderungen zwischen shipment_types definiert werden (siehe shipmentTypeIncompatibilities und shipmentTypeRequirements in ShipmentModel).

Unterscheidet sich von visitTypes, das für einen einzelnen Besuch angegeben wird: Alle Abholungen/Lieferungen, die zur selben Sendung gehören, haben dieselbe shipmentType.

label

string

Gibt ein Label für diese Sendung an. Dieses Label wird in der Antwort im shipmentLabel des entsprechenden ShipmentRoute.Visit gemeldet.

ignore

boolean

Wenn „true“, wird diese Sendung übersprungen, aber es wird kein penaltyCost angewendet.

Wenn Sie eine Sendung ignorieren, führt das zu einem Validierungsfehler, wenn im Modell shipmentTypeRequirements vorhanden sind.

Das Ignorieren einer Sendung, die in injectedFirstSolutionRoutes oder injectedSolutionConstraint ausgeführt wird, ist zulässig. Der Solver entfernt die zugehörigen Abhol-/Lieferbesuche aus der ausführenden Route. precedenceRules, die sich auf ignorierte Sendungen beziehen, werden ebenfalls ignoriert.

penaltyCost

number

Wenn die Sendung nicht abgeschlossen wird, wird diese Strafe zu den Gesamtkosten der Routen addiert. Eine Sendung gilt als abgeschlossen, wenn eine der Abhol- und Lieferalternativen besucht wurde. Die Kosten können in derselben Einheit angegeben werden, die für alle anderen kostenbezogenen Felder im Modell verwendet wird, und müssen positiv sein.

WICHTIG: Wenn diese Strafe nicht angegeben ist, wird sie als unendlich betrachtet, d.h., die Sendung muss abgeschlossen werden.

pickupToDeliveryRelativeDetourLimit

number

Gibt die maximale relative Umwegzeit im Vergleich zur kürzesten Route von der Abholung bis zur Lieferung an. Wenn angegeben, muss der Wert nicht negativ sein und die Sendung muss mindestens eine Abholung und eine Lieferung enthalten.

Beispiel: t ist die kürzeste Zeit, die benötigt wird, um von der ausgewählten Abholalternative direkt zur ausgewählten Lieferalternative zu gelangen. Wenn Sie pickupToDeliveryRelativeDetourLimit festlegen, wird Folgendes erzwungen:

startTime(delivery) - startTime(pickup) <=
std::ceil(t * (1.0 + pickupToDeliveryRelativeDetourLimit))

Wenn für dieselbe Sendung sowohl relative als auch absolute Limits angegeben sind, wird für jedes mögliche Abhol-/Lieferpaar das restriktivere Limit verwendet. Seit Oktober 2017 werden Umwege nur unterstützt, wenn die Reisedauer nicht von Fahrzeugen abhängt.

VisitRequest

Anfrage für einen Besuch, der von einem Fahrzeug ausgeführt werden kann: Er hat einen Standort (oder zwei, siehe unten), Öffnungs- und Schließzeiten, die durch Zeitfenster dargestellt werden, und eine Servicedauer (Zeit, die das Fahrzeug nach der Ankunft für die Abholung oder Lieferung von Waren benötigt).

JSON-Darstellung
{
  "arrivalLocation": {
    object (LatLng)
  },
  "arrivalWaypoint": {
    object (Waypoint)
  },
  "departureLocation": {
    object (LatLng)
  },
  "departureWaypoint": {
    object (Waypoint)
  },
  "tags": [
    string
  ],
  "timeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "duration": string,
  "cost": number,
  "loadDemands": {
    string: {
      object (Load)
    },
    ...
  },
  "visitTypes": [
    string
  ],
  "label": string,
  "avoidUTurns": boolean
}
Felder
arrivalLocation

object (LatLng)

Der geografische Standort, an dem das Fahrzeug bei der Ausführung dieses VisitRequest ankommt. Wenn das Sendungsmodell Dauermatrixen enthält, darf arrivalLocation nicht angegeben werden.

arrivalWaypoint

object (Waypoint)

Der Wegpunkt, an dem das Fahrzeug bei der Ausführung dieses VisitRequest ankommt. Wenn das Sendungsmodell Dauermatrixen enthält, darf arrivalWaypoint nicht angegeben werden.

departureLocation

object (LatLng)

Der geografische Standort, von dem das Fahrzeug nach Abschluss dieses VisitRequest abfährt. Kann weggelassen werden, wenn er mit arrivalLocation übereinstimmt. Wenn das Sendungsmodell Dauermatrixen enthält, darf departureLocation nicht angegeben werden.

departureWaypoint

object (Waypoint)

Der Wegpunkt, von dem das Fahrzeug nach Abschluss dieses VisitRequest abfährt. Kann weggelassen werden, wenn er mit arrivalWaypoint übereinstimmt. Wenn das Sendungsmodell Dauermatrixen enthält, darf departureWaypoint nicht angegeben werden.

tags[]

string

Gibt Tags an, die an die Besuchs-Anfrage angehängt sind. Leere oder doppelte Strings sind nicht zulässig.

timeWindows[]

object (TimeWindow)

Zeitfenster, die die Ankunftszeit bei einem Besuch einschränken. Beachten Sie, dass ein Fahrzeug außerhalb des Ankunftszeitfensters abfahren kann, d.h. Ankunftszeit + Dauer müssen nicht innerhalb eines Zeitfensters liegen. Dies kann zu Wartezeiten führen, wenn das Fahrzeug vor TimeWindow.start_time ankommt.

Wenn TimeWindow nicht vorhanden ist, kann das Fahrzeug diesen Besuch jederzeit ausführen.

Zeitfenster dürfen sich nicht überschneiden, d.h. kein Zeitfenster darf sich mit einem anderen überschneiden oder an ein anderes angrenzen, und sie müssen in aufsteigender Reihenfolge angegeben werden.

costPerHourAfterSoftEndTime und softEndTime können nur festgelegt werden, wenn es ein einzelnes Zeitfenster gibt.

duration

string (Duration format)

Dauer des Besuchs, d.h. die Zeit, die das Fahrzeug zwischen Ankunft und Abfahrt verbringt (muss zur möglichen Wartezeit addiert werden; siehe timeWindows).

cost

number

Kosten für die Erfüllung dieser Besuchsanfrage auf einer Fahrzeugroute. Damit können Sie unterschiedliche Kosten für jede alternative Abholung oder Lieferung einer Sendung bezahlen. Diese Kosten müssen in derselben Einheit wie Shipment.penalty_cost angegeben werden und dürfen nicht negativ sein.

loadDemands

map (key: string, value: object (Load))

Ladeanforderungen dieser Besuchsanfrage. Dieses Feld entspricht dem Feld Shipment.load_demands, gilt aber nur für diese VisitRequest und nicht für die gesamte Shipment. Die hier aufgeführten Anforderungen werden den in Shipment.load_demands aufgeführten Anforderungen hinzugefügt.

visitTypes[]

string

Gibt die Typen des Besuchs an. Damit kann zusätzliche Zeit zugewiesen werden, die ein Fahrzeug für diesen Besuch benötigt (siehe Vehicle.extra_visit_duration_for_visit_type).

Ein Typ kann nur einmal vorkommen.

label

string

Gibt ein Label für diese VisitRequest an. Dieses Label wird in der Antwort als visitLabel im entsprechenden ShipmentRoute.Visit gemeldet.

avoidUTurns

boolean

Gibt an, ob Wendemanöver auf Fahrstrecken an diesem Ort vermieden werden sollen. Die Vermeidung von Wendemanövern erfolgt nach bestem Wissen und Gewissen. Eine vollständige Vermeidung kann jedoch nicht garantiert werden. Dies ist eine experimentelle Funktion und das Verhalten kann sich ändern.

Experimentell: Weitere Informationen finden Sie unter https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request.

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 es dem World Geodetic System 1984 (WGS 84) entsprechen. Die Werte müssen innerhalb normalisierter Bereiche liegen.

JSON-Darstellung
{
  "latitude": number,
  "longitude": number
}
Felder
latitude

number

Der Breitengrad in Grad. Er muss im Bereich [-90,0, +90,0] liegen.

longitude

number

Der Längengrad in Grad. Er muss im Bereich [-180,0, +180,0] liegen.

Zwischenstopp

Kapselt einen Wegpunkt. Wegpunkte markieren die Ankunfts- und Abfahrtsorte von VisitRequests sowie die Start- und Zielorte von Fahrzeugen.

JSON-Darstellung
{
  "sideOfRoad": boolean,
  "vehicleStopover": boolean,

  // The following is a list of mutually exclusive fields. At most one of the
  // fields will be set in a response:
  "location": {
    object (Location)
  },
  "placeId": string
  // End of mutually exclusive fields.
}
Felder
sideOfRoad

boolean

Optional. Gibt an, dass der Standort dieses Wegpunkts eine Präferenz für das Fahrzeug darstellt, auf einer bestimmten Straßenseite anzuhalten. Wenn Sie diesen Wert festlegen, führt die Route durch den Ort, sodass das Fahrzeug auf der Straßenseite anhalten kann, die vom Mittelpunkt der Straße aus gesehen in Richtung des Ortes liegt. Diese Option funktioniert nicht für die Mobilitätsform „WALKING“.

vehicleStopover

boolean

Gibt an, dass der Wegpunkt für Fahrzeuge gedacht ist, die dort anhalten, um entweder jemanden abzuholen oder abzusetzen. Diese Option funktioniert nur für den Reisemodus „DRIVING“ und wenn „locationType“ auf „location“ gesetzt ist.

Experimentell: Das Verhalten oder die Existenz dieses Felds kann sich in Zukunft ändern.

Verschiedene Möglichkeiten, einen Standort darzustellen. Im Folgenden finden Sie eine Liste von Feldern, die sich gegenseitig ausschließen. In einer Antwort wird höchstens eines der Felder festgelegt:
location

object (Location)

Ein Punkt, der mithilfe von geografischen Koordinaten angegeben wird, einschließlich einer optionalen Überschrift.

placeId

string

Die Orts-ID des POI, der mit dem Wegpunkt verknüpft ist.

Wenn Sie eine Orts-ID verwenden, um den Ankunfts- oder Abfahrtsort einer VisitRequest anzugeben, muss die Orts-ID spezifisch genug sein, um einen LatLng-Standort für die Navigation zum Ort zu bestimmen. Eine Orts-ID, die ein Gebäude darstellt, ist beispielsweise geeignet, eine Orts-ID, die eine Straße darstellt, jedoch nicht.

Ende der sich gegenseitig ausschließenden Felder.

Standort

Kapselt einen Standort (einen geografischen Punkt und eine optionale Richtung).

JSON-Darstellung
{
  "latLng": {
    object (LatLng)
  },
  "heading": integer
}
Felder
latLng

object (LatLng)

Die geografischen Koordinaten des Wegpunkts.

heading

integer

Der Kompasskurs, der der Richtung des Verkehrsflusses zugeordnet ist. Mit diesem Wert wird die Straßenseite für die Abholung und den Ausstieg angegeben. Die Werte für die Fahrtrichtung können zwischen 0 und 360 liegen, wobei 0 für Norden, 90 für Osten usw. steht.

TimeWindow

Zeitfenster schränken die Zeit eines Ereignisses ein, z. B. die Ankunftszeit bei einem Besuch oder die Start- und Endzeit eines Fahrzeugs.

Die harten Zeitfenstergrenzen startTime und endTime erzwingen den frühesten und spätesten Zeitpunkt des Ereignisses, sodass startTime <= event_time <= endTime gilt. Die Untergrenze des weichen Zeitfensters, softStartTime, drückt eine Präferenz dafür aus, dass das Ereignis um oder nach softStartTime stattfindet. Dabei fallen Kosten an, die proportional dazu sind, wie lange vor softStartTime das Ereignis stattfindet. Die Obergrenze des weichen Zeitfensters, softEndTime, drückt eine Präferenz dafür aus, dass das Ereignis am oder vor dem softEndTime stattfindet. Dabei fallen Kosten an, die proportional dazu sind, wie lange nach dem softEndTime das Ereignis eintritt. startTime, endTime, softStartTime und softEndTime sollten innerhalb der globalen Zeitlimits 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

string (Timestamp format)

Der Beginn des harten Zeitfensters. Wenn nicht angegeben, wird ShipmentModel.global_start_time festgelegt.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

endTime

string (Timestamp format)

Das Ende des harten Zeitfensters. Wenn nicht angegeben, wird ShipmentModel.global_end_time festgelegt.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

softStartTime

string (Timestamp format)

Der weiche Beginn des Zeitfensters.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

softEndTime

string (Timestamp format)

Das weiche Ende des Zeitfensters.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

costPerHourBeforeSoftStartTime

number

Kosten pro Stunde, die zu anderen Kosten im Modell hinzugefügt werden, wenn das Ereignis vor „softStartTime“ auftritt. Berechnung:

   max(0, softStartTime - t.seconds)
                          * costPerHourBeforeSoftStartTime / 3600,
t being the time of the event.

Diese Kosten müssen positiv sein und das Feld kann nur festgelegt werden, wenn „softStartTime“ festgelegt wurde.

costPerHourAfterSoftEndTime

number

Kosten pro Stunde, die zu anderen Kosten im Modell hinzugefügt werden, wenn das Ereignis nach softEndTime eintritt. Die Berechnung erfolgt so:

   max(0, t.seconds - softEndTime.seconds)
                    * costPerHourAfterSoftEndTime / 3600,
t being the time of the event.

Diese Kosten müssen positiv sein und das Feld kann nur festgelegt werden, wenn softEndTime festgelegt wurde.

Fahrzeug

Modelliert ein Fahrzeug in einem Lieferproblem. Wenn Sie ein Lieferproblem lösen, wird für dieses Fahrzeug eine Route erstellt, die bei startLocation beginnt und bei endLocation endet. Eine Route ist eine Abfolge von Besuchen (siehe ShipmentRoute).

JSON-Darstellung
{
  "displayName": string,
  "travelMode": enum (TravelMode),
  "routeModifiers": {
    object (RouteModifiers)
  },
  "startLocation": {
    object (LatLng)
  },
  "startWaypoint": {
    object (Waypoint)
  },
  "endLocation": {
    object (LatLng)
  },
  "endWaypoint": {
    object (Waypoint)
  },
  "startTags": [
    string
  ],
  "endTags": [
    string
  ],
  "startTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "endTimeWindows": [
    {
      object (TimeWindow)
    }
  ],
  "unloadingPolicy": enum (UnloadingPolicy),
  "loadLimits": {
    string: {
      object (LoadLimit)
    },
    ...
  },
  "costPerHour": number,
  "costPerTraveledHour": number,
  "costPerKilometer": number,
  "fixedCost": number,
  "usedIfRouteIsEmpty": boolean,
  "routeDurationLimit": {
    object (DurationLimit)
  },
  "travelDurationLimit": {
    object (DurationLimit)
  },
  "routeDistanceLimit": {
    object (DistanceLimit)
  },
  "extraVisitDurationForVisitType": {
    string: string,
    ...
  },
  "breakRule": {
    object (BreakRule)
  },
  "label": string,
  "ignore": boolean,
  "travelDurationMultiple": number
}
Felder
displayName

string

Der benutzerdefinierte Anzeigename des Fahrzeugs. Er kann bis zu 63 Zeichen lang sein und UTF-8-Zeichen enthalten.

travelMode

enum (TravelMode)

Der Reisemodus, der sich auf die vom Fahrzeug befahrbaren Straßen und seine Geschwindigkeit auswirkt. Siehe auch travelDurationMultiple.

routeModifiers

object (RouteModifiers)

Eine Reihe von Bedingungen, die erfüllt sein müssen und die sich auf die Berechnung der Routen für das jeweilige Fahrzeug auswirken.

startLocation

object (LatLng)

Geografischer Standort, an dem das Fahrzeug startet, bevor es Sendungen abholt. Wenn nicht angegeben, startet das Fahrzeug bei der ersten Abholung. Wenn das Sendungsmodell Dauer- und Distanzmatrizen enthält, darf startLocation nicht angegeben werden.

startWaypoint

object (Waypoint)

Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug startet, bevor es Sendungen abholt. Wenn weder startWaypoint noch startLocation angegeben ist, startet das Fahrzeug bei der ersten Abholung. Wenn das Sendungsmodell Dauer- und Distanzmatrizen enthält, darf startWaypoint nicht angegeben werden.

endLocation

object (LatLng)

Geografischer Standort, an dem sich das Fahrzeug nach Abschluss der letzten VisitRequest befindet. Wenn nicht angegeben, endet die ShipmentRoute des Fahrzeugs sofort, wenn es die letzte VisitRequest abgeschlossen hat. Wenn das Sendungsmodell Dauer- und Distanzmatrizen enthält, darf endLocation nicht angegeben werden.

endWaypoint

object (Waypoint)

Wegpunkt, der einen geografischen Standort darstellt, an dem das Fahrzeug nach Abschluss der letzten VisitRequest endet. Wenn weder endWaypoint noch endLocation angegeben ist, endet die ShipmentRoute des Fahrzeugs sofort, wenn es die letzte VisitRequest abgeschlossen hat. Wenn das Sendungsmodell Dauer- und Distanzmatrizen enthält, darf endWaypoint nicht angegeben werden.

startTags[]

string

Gibt Tags an, die am Anfang der Route des Fahrzeugs angehängt sind.

Leere oder doppelte Strings sind nicht zulässig.

endTags[]

string

Gibt Tags an, die am Ende der Route des Fahrzeugs angehängt werden.

Leere oder doppelte Strings sind nicht zulässig.

startTimeWindows[]

object (TimeWindow)

Zeitfenster, in denen das Fahrzeug seinen Startort verlassen darf. Sie müssen innerhalb der globalen Zeitlimits liegen (siehe ShipmentModel.global_*-Felder). Wenn keine Angabe erfolgt, gibt es außer diesen globalen Zeitlimits keine Einschränkungen.

Zeitfenster, die zum selben wiederkehrenden Feld gehören, dürfen sich nicht überschneiden, d. h. kein Zeitfenster darf sich mit einem anderen überschneiden oder an ein anderes angrenzen. Außerdem müssen sie in chronologischer Reihenfolge angegeben werden.

costPerHourAfterSoftEndTime und softEndTime können nur festgelegt werden, wenn es ein einzelnes Zeitfenster gibt.

endTimeWindows[]

object (TimeWindow)

Zeitfenster, in denen das Fahrzeug am Zielort ankommen darf. Sie müssen innerhalb der globalen Zeitlimits liegen (siehe ShipmentModel.global_*-Felder). Wenn keine Angabe erfolgt, gibt es außer diesen globalen Zeitlimits keine Einschränkungen.

Zeitfenster, die zum selben wiederkehrenden Feld gehören, dürfen sich nicht überschneiden, d. h. kein Zeitfenster darf sich mit einem anderen überschneiden oder an ein anderes angrenzen. Außerdem müssen sie in chronologischer Reihenfolge angegeben werden.

costPerHourAfterSoftEndTime und softEndTime können nur festgelegt werden, wenn es ein einzelnes Zeitfenster gibt.

unloadingPolicy

enum (UnloadingPolicy)

Richtlinie zum Entladen wird für das Fahrzeug erzwungen.

loadLimits

map (key: string, value: object (LoadLimit))

Kapazitäten des Fahrzeugs (z. B. Gewicht, Volumen, Anzahl der Paletten). Die Schlüssel in der Zuordnung sind die Kennungen des Lasttyps und entsprechen den Schlüsseln des Felds Shipment.load_demands. Wenn ein bestimmter Schlüssel in dieser Zuordnung nicht vorhanden ist, wird die entsprechende Kapazität als unbegrenzt betrachtet.

costPerHour

number

Fahrzeugkosten: Alle Kosten werden addiert und müssen in derselben Einheit wie Shipment.penalty_cost angegeben werden.

Kosten pro Stunde der Fahrzeugroute. Diese Kosten werden auf die Gesamtzeit der Route angewendet, einschließlich Fahrtzeit, Wartezeit und Besuchszeit. Die Verwendung von costPerHour anstelle von costPerTraveledHour kann zu zusätzlicher Latenz führen.

costPerTraveledHour

number

Kosten pro gefahrener Stunde der Fahrzeugroute. Diese Kosten werden nur auf die Reisedauer der Route angewendet (d. h. die in ShipmentRoute.transitions angegebene Zeit). Wartezeiten und Besuchszeiten sind nicht enthalten.

costPerKilometer

number

Kosten pro Kilometer der Fahrzeugroute. Diese Kosten werden auf die in der ShipmentRoute.transitions angegebene Entfernung angewendet und nicht auf die implizit zurückgelegte Entfernung vom arrivalLocation zum departureLocation einer einzelnen VisitRequest.

fixedCost

number

Fixkosten, die anfallen, wenn dieses Fahrzeug für eine Sendung verwendet wird.

usedIfRouteIsEmpty

boolean

Dieses Feld gilt nur für Fahrzeuge, deren Route keine Sendungen umfasst. Gibt an, ob das Fahrzeug in diesem Fall als gebraucht gilt.

Wenn „true“, fährt das Fahrzeug von seinem Start- zu seinem Zielort, auch wenn es keine Sendungen ausliefert. Die Zeit- und Entfernungskosten, die sich aus der Fahrt vom Start- zum Zielort ergeben, werden berücksichtigt.

Andernfalls fährt es nicht vom Start- zum Zielort und für dieses Fahrzeug sind keine breakRule oder Verspätungen (aus TransitionAttributes) geplant. In diesem Fall enthält das ShipmentRoute des Fahrzeugs nur den Fahrzeugindex und das Label.

routeDurationLimit

object (DurationLimit)

Limit für die Gesamtdauer der Route des Fahrzeugs. In einem bestimmten OptimizeToursResponse ist die Routendauer eines Fahrzeugs die Differenz zwischen vehicleEndTime und vehicleStartTime.

travelDurationLimit

object (DurationLimit)

Limit für die Fahrtdauer der Fahrzeugroute. In einer bestimmten OptimizeToursResponse ist die Reisedauer der Route die Summe aller transitions.travel_duration.

routeDistanceLimit

object (DistanceLimit)

Limit für die Gesamtstrecke der Route des Fahrzeugs. In einem bestimmten OptimizeToursResponse ist die Routenentfernung die Summe aller transitions.travel_distance_meters.

extraVisitDurationForVisitType

map (key: string, value: string (Duration format))

Gibt eine Zuordnung von visitTypes-Strings zu Dauern an. Die Dauer ist die Zeit, die zusätzlich zu VisitRequest.duration für Besuche mit der angegebenen visitTypes benötigt wird. Diese zusätzliche Besuchsdauer verursacht Kosten, wenn costPerHour angegeben ist. Schlüssel (z.B. visitTypes) dürfen keine leeren Strings sein.

Wenn eine Besuchsanfrage mehrere Typen hat, wird für jeden Typ in der Karte eine Dauer hinzugefügt.

breakRule

object (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

string

Gibt ein Label für dieses Fahrzeug an. Dieses Label wird in der Antwort als vehicleLabel des entsprechenden ShipmentRoute gemeldet.

ignore

boolean

Wenn „true“, muss usedIfRouteIsEmpty „false“ sein und dieses Fahrzeug wird nicht verwendet.

Wenn eine Sendung von einem ignorierten Fahrzeug in injectedFirstSolutionRoutes ausgeführt wird, wird sie in der ersten Lösung übersprungen, kann aber in der Antwort ausgeführt werden.

Wenn eine Sendung von einem ignorierten Fahrzeug in injectedSolutionConstraint ausgeführt wird und eine zugehörige Abholung/Lieferung auf dem Fahrzeug verbleiben muss (d.h. nicht auf Ebene RELAX_ALL_AFTER_THRESHOLD gelockert wird), wird sie in der Antwort übersprungen. Wenn eine Sendung ein nicht leeres allowedVehicleIndices-Feld hat und alle zulässigen Fahrzeuge ignoriert werden, wird sie in der Antwort übersprungen.

travelDurationMultiple

number

Gibt einen Multiplikationsfaktor an, mit dem die Fahrzeiten dieses Fahrzeugs erhöht oder verringert werden können. Wenn Sie diesen Wert beispielsweise auf 2,0 setzen, bedeutet das, dass dieses Fahrzeug langsamer ist und die Fahrtzeiten doppelt so lang sind wie bei Standardfahrzeugen. Dieses Vielfache hat keine Auswirkungen auf die Besuchsdauer. Es wirkt sich auf die Kosten aus, wenn costPerHour oder costPerTraveledHour angegeben ist. Der Wert muss im Bereich [0,001, 1.000,0] liegen. Wenn nicht festgelegt, ist das Fahrzeug ein Standardfahrzeug und der Multiplikator wird als 1, 0 betrachtet.

WARNUNG: Die Reisedauer wird auf die nächste Sekunde gerundet, nachdem dieses Vielfache angewendet wurde, aber bevor numerische Vorgänge ausgeführt werden. Ein kleines Vielfaches kann daher zu einem Verlust an Genauigkeit führen.

Siehe auch extraVisitDurationForVisitType unten.

TravelMode

Mobilitätsformen, die von Fahrzeugen verwendet werden können.

Diese sollten eine Teilmenge der Fortbewegungsarten der Routes API der Google Maps Platform sein. Weitere Informationen finden Sie unter https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode.

Hinweis: WALKING-Routen befinden sich in der Betaphase. Es kann vorkommen, dass Gehwege oder Fußgängerwege fehlen. Sie müssen diese Warnung für alle Fußgängerrouten anzeigen, die Sie in Ihrer App einblenden.

Enums
TRAVEL_MODE_UNSPECIFIED Nicht angegebene Mobilitätsform, entspricht DRIVING.
DRIVING Mobilitätsform für die Wegbeschreibung (Auto, …).
WALKING Mobilitätsform für Fußgängerrouten.
TWO_WHEELER Zweirädriges, motorisiertes Fahrzeug. Beispiel: Motorrad. Dieser unterscheidet sich vom Fortbewegungsmodus BICYCLING, der den muskelbetriebenen Modus abdeckt. Diese Mobilitätsform wird nur in den Ländern unterstützt, die unter Länder und Regionen, die bei Zweirädern möglich sind aufgeführt sind.

RouteModifiers

Kapselt eine Reihe optionaler Bedingungen, die bei der Berechnung von Fahrzeugrouten erfüllt werden müssen. Dies ähnelt RouteModifiers in der Routes Preferred API der Google Maps Platform. Weitere Informationen finden Sie unter https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.

JSON-Darstellung
{
  "avoidTolls": boolean,
  "avoidHighways": boolean,
  "avoidFerries": boolean,
  "avoidIndoor": boolean
}
Felder
avoidTolls

boolean

Gibt an, ob Mautstraßen nach Möglichkeit vermieden werden sollen. Routen ohne Mautstraßen werden bevorzugt. Gilt nur für motorisierte Verkehrsmittel.

avoidHighways

boolean

Gibt an, ob Autobahnen nach Möglichkeit vermieden werden sollen. Routen ohne Autobahnen werden bevorzugt. Gilt nur für motorisierte Verkehrsmittel.

avoidFerries

boolean

Gibt an, ob Fähren nach Möglichkeit vermieden werden sollen. Routen ohne Fähren werden bevorzugt. Gilt nur für motorisierte Verkehrsmittel.

avoidIndoor

boolean

Optional. Gibt an, ob die Navigation in Innenräumen nach Möglichkeit vermieden werden soll. Routen ohne Indoor-Navigation werden bevorzugt. Gilt nur für die Mobilitätsform WALKING.

UnloadingPolicy

Richtlinie zum Entladen eines Fahrzeugs. Gilt nur für Sendungen, die sowohl eine Abholung als auch eine Lieferung umfassen.

Andere Sendungen können unabhängig von unloadingPolicy an einer beliebigen Stelle auf der Route erfolgen.

Enums
UNLOADING_POLICY_UNSPECIFIED Nicht angegebene Entladerichtlinie; Lieferungen müssen nur nach den entsprechenden Abholungen 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 Abholungen erfolgen

LoadLimit

Definiert ein für ein Fahrzeug geltendes Lastlimit, z. B. „Dieser Lkw darf nur bis zu 3.500 kg transportieren“. loadLimits ansehen.

JSON-Darstellung
{
  "softMaxLoad": string,
  "costPerUnitAboveSoftMax": number,
  "startLoadInterval": {
    object (Interval)
  },
  "endLoadInterval": {
    object (Interval)
  },
  "maxLoad": string,
  "costPerKilometer": {
    object (LoadCost)
  },
  "costPerTraveledHour": {
    object (LoadCost)
  }
}
Felder
softMaxLoad

string (int64 format)

Ein flexibler Grenzwert für die Last. costPerUnitAboveSoftMax ansehen.

costPerUnitAboveSoftMax

number

Wenn die Last auf der Route dieses Fahrzeugs jemals softMaxLoad überschreitet, gilt die folgende Kostenstrafe (nur einmal pro Fahrzeug): (Last – softMaxLoad) * costPerUnitAboveSoftMax. Alle Kosten werden addiert und müssen in derselben Einheit wie Shipment.penalty_cost angegeben werden. Weiche Limits dürfen nur für Typen definiert werden, die im gesamten Modell entweder nur für Abholungen oder nur für Lieferungen gelten.

startLoadInterval

object (Interval)

Das zulässige Lastintervall des Fahrzeugs zu Beginn der Route.

endLoadInterval

object (Interval)

Das zulässige Lastintervall des Fahrzeugs am Ende der Route.

maxLoad

string (int64 format)

Die maximal zulässige Last.

costPerKilometer

object (LoadCost)

Kosten für den Transport einer Ladeeinheit über einen Kilometer für dieses Fahrzeug. Dies kann als Proxy für den Kraftstoffverbrauch verwendet werden: Wenn die Last ein Gewicht (in Newton) ist, hat „Last × Kilometer“ die Dimension einer Energie.

Experimentell: Weitere Informationen finden Sie unter https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request.

costPerTraveledHour

object (LoadCost)

Kosten für die einstündige Fahrt mit einer Ladeeinheit für dieses Fahrzeug.

Experimentell: Weitere Informationen finden Sie unter https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request.

Intervall

Intervall akzeptabler Lastmengen.

JSON-Darstellung
{
  "min": string,
  "max": string
}
Felder
min

string (int64 format)

Eine akzeptable Mindestlast. Muss ≥ 0 sein. Wenn beide angegeben sind, muss min ≤ max sein.

max

string (int64 format)

Eine maximal akzeptable Last. Muss ≥ 0 sein. Wenn keine Angabe gemacht wird, ist die maximale Last durch diese Nachricht nicht eingeschränkt. Wenn beide angegeben sind, muss min ≤ max sein.

LoadCost

Kosten für das Verschieben einer Lasteinheit während eines Transition. Für eine bestimmte Last setzen sich die Kosten aus zwei Teilen zusammen:

  • min(load, loadThreshold) * costPerUnitBelowThreshold
  • max(0, load - loadThreshold) * costPerUnitAboveThreshold

Bei diesen Kosten werden Lösungen bevorzugt, bei denen hohe Anforderungen zuerst erfüllt oder hohe Anforderungen zuletzt abgeholt werden. Wenn ein Fahrzeug beispielsweise

load_limit {
  key: "weight"
  value {
    costPerKilometer {
      loadThreshold: 15
      costPerUnitBelowThreshold: 2.0
      costPerUnitAboveThreshold: 10.0
    }
  }
}

und die Route ist „start,pickup,pickup,delivery,delivery,end“ mit den Übergängen:

transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }

dann betragen die Kosten für diese LoadCost (cost_below * load_below * Kilometer + cost_above * load_above * Kilometer).

  • Übergang 0: 0,0
  • Übergang 1: 2,0 × 10 × 1,0 + 10,0 × 0 × 1,0 = 20,0
  • Übergang 2: 2,0 × 15 × 1,0 + 10,0 × (20 − 15) × 1,0 = 80,0
  • Übergang 3: 2,0 × 10 × 1,0 + 10,0 × 0 × 1,0 = 20,0
  • Übergang 4: 0,0

Der LoadCost-Wert für die Route beträgt also 120,0.

Wenn die Route jedoch „Start, Abholung, Lieferung, Abholung, Lieferung, Ende“ mit Übergängen ist:

transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
             travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
             travelDistanceMeters: 1000.0 }

dann betragen die durch diesen LoadCost verursachten Kosten

  • Übergang 0: 0,0
  • Übergang 1: 2,0 × 10 × 1,0 + 10,0 × 0 × 1,0 = 20,0
  • Übergang 2: 0,0
  • Übergang 3: 2,0 × 10 × 1,0 + 10,0 × 0 × 1,0 = 20,0
  • Übergang 4: 0,0

Hier beträgt der LoadCost über die Route 40,0.

LoadCost macht Lösungen mit stark ausgelasteten Übergängen teurer.

Experimentell: Weitere Informationen finden Sie unter https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request.

JSON-Darstellung
{
  "loadThreshold": string,
  "costPerUnitBelowThreshold": number,
  "costPerUnitAboveThreshold": number
}
Felder
loadThreshold

string (int64 format)

Lastmenge, ab der sich die Kosten für das Bewegen einer Lasteinheit von „costPerUnitBelowThreshold“ zu „costPerUnitAboveThreshold“ ändern. Muss >= 0 sein.

costPerUnitBelowThreshold

number

Kosten für das Verschieben einer Lasteinheit für jede Einheit zwischen 0 und dem Schwellenwert. Muss ein endlicher Wert und >= 0 sein.

costPerUnitAboveThreshold

number

Kosten für das Verschieben einer Lasteinheit für jede Einheit über dem Schwellenwert. Im Sonderfall „Grenzwert = 0“ sind dies feste Kosten pro Einheit. Muss ein endlicher Wert und >= 0 sein.

DurationLimit

Ein Limit, das die maximale Dauer der Route eines Fahrzeugs definiert. Sie kann entweder hart oder weich sein.

Wenn ein Feld für ein weiches Limit definiert ist, müssen sowohl der Schwellenwert für das weiche Limit als auch die zugehörigen Kosten definiert werden.

JSON-Darstellung
{
  "maxDuration": string,
  "softMaxDuration": string,
  "quadraticSoftMaxDuration": string,
  "costPerHourAfterSoftMax": number,
  "costPerSquareHourAfterQuadraticSoftMax": number
}
Felder
maxDuration

string (Duration format)

Ein festes Limit, das die Dauer auf maximal „maxDuration“ beschränkt.

softMaxDuration

string (Duration format)

Ein weiches Limit, das keine maximale Dauer erzwingt, aber bei Überschreitung Kosten für die Route verursacht. Diese Kosten werden zu anderen im Modell definierten Kosten mit derselben Einheit addiert.

Falls definiert, darf softMaxDuration nicht negativ sein. Wenn auch „maxDuration“ definiert ist, muss softMaxDuration kleiner als „maxDuration“ sein.

quadraticSoftMaxDuration

string (Duration format)

Ein weiches Limit, das keine maximale Dauer erzwingt, aber bei Überschreitung zu Kosten führt, die quadratisch zur Dauer sind. Diese Kosten werden zu anderen im Modell definierten Kosten mit derselben Einheit addiert.

Wenn quadraticSoftMaxDuration festgelegt ist, müssen die folgenden Bedingungen erfüllt sein:

  • Der Wert darf nicht negativ sein.
  • maxDuration muss definiert sein.
  • quadraticSoftMaxDuration muss kleiner als maxDuration sein.
  • Der Unterschied darf nicht mehr als einen Tag betragen: maxDuration - quadraticSoftMaxDuration <= 86400 seconds
costPerHourAfterSoftMax

number

Kosten pro Stunde, die anfallen, wenn der Schwellenwert für softMaxDuration überschritten wird. Die zusätzlichen Kosten betragen 0, wenn die Dauer unter dem Schwellenwert liegt. Andernfalls hängen die Kosten wie folgt von der Dauer ab:

  costPerHourAfterSoftMax * (duration - softMaxDuration)

Die Kosten dürfen nicht negativ sein.

costPerSquareHourAfterQuadraticSoftMax

number

Kosten pro Quadratstunde, die anfallen, wenn der Schwellenwert quadraticSoftMaxDuration überschritten wird.

Die zusätzlichen Kosten betragen 0, wenn die Dauer unter dem Schwellenwert liegt. Andernfalls hängen die Kosten wie folgt von der Dauer ab:

  costPerSquareHourAfterQuadraticSoftMax *
  (duration - quadraticSoftMaxDuration)^2

Die Kosten dürfen nicht negativ sein.

DistanceLimit

Ein Limit, das die maximale Entfernung 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 und nicht negativ sein.

JSON-Darstellung
{
  "maxMeters": string,
  "softMaxMeters": string,
  "costPerKilometerBelowSoftMax": number,
  "costPerKilometerAboveSoftMax": number
}
Felder
maxMeters

string (int64 format)

Ein festes Limit, das die Entfernung auf maximal maxMeters beschränkt. Das Limit darf kein negativer Wert sein.

softMaxMeters

string (int64 format)

Ein weiches Limit, das keine maximale Entfernung erzwingt, aber bei Überschreitung zu Kosten führt, die zu anderen im Modell definierten Kosten mit derselben Einheit addiert werden.

Wenn „softMaxMeters“ definiert ist, muss der Wert kleiner als „maxMeters“ und nicht negativ sein.

costPerKilometerBelowSoftMax

number

Anfallende Kosten pro Kilometer, bis zu softMaxMeters, mit der Formel:

  min(distanceMeters, softMaxMeters) / 1000.0 *
  costPerKilometerBelowSoftMax.

Diese Kosten werden in routeDistanceLimit nicht unterstützt.

costPerKilometerAboveSoftMax

number

Kosten pro Kilometer, die anfallen, wenn die Entfernung über dem Limit von softMaxMeters liegt. Die zusätzlichen Kosten betragen 0, wenn die Entfernung unter dem Limit liegt. Andernfalls werden die Kosten mit der folgenden Formel berechnet:

  (distanceMeters - softMaxMeters) / 1000.0 *
  costPerKilometerAboveSoftMax.

Die Kosten dürfen nicht negativ sein.

BreakRule

Regeln zum Generieren von Pausen 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 ausführen kann. Eine Pause kann 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 Fahrzeit zwischen den Besuchen verlängert.
  • oder vor dem Start des Fahrzeugs (das Fahrzeug darf nicht mitten in einer Pause starten). In diesem Fall hat die Pause keine Auswirkungen auf die Startzeit des Fahrzeugs.
  • oder nach dem Ende der Fahrt (ditto, mit der Endzeit der Fahrt).
JSON-Darstellung
{
  "breakRequests": [
    {
      object (BreakRequest)
    }
  ],
  "frequencyConstraints": [
    {
      object (FrequencyConstraint)
    }
  ]
}
Felder
breakRequests[]

object (BreakRequest)

Reihenfolge der Pausen. Suchen Sie nach der Nachricht BreakRequest.

frequencyConstraints[]

object (FrequencyConstraint)

Es können mehrere FrequencyConstraint gelten. Sie müssen alle von den BreakRequests dieses BreakRule erfüllt werden. Siehe FrequencyConstraint.

BreakRequest

Die Abfolge der Pausen (d.h. ihre Anzahl und Reihenfolge), die für jedes Fahrzeug gelten, muss im Voraus bekannt sein. Die wiederholten BreakRequests 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 (dies wird geprüft).

JSON-Darstellung
{
  "earliestStartTime": string,
  "latestStartTime": string,
  "minDuration": string
}
Felder
earliestStartTime

string (Timestamp format)

Erforderlich. Untergrenze (einschließlich) für den Beginn der Pause.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30"

latestStartTime

string (Timestamp format)

Erforderlich. Obergrenze (einschließlich) für den Beginn der Pause.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30"

minDuration

string (Duration format)

Erforderlich. Mindestdauer der Unterbrechung. Muss positiv sein.

FrequencyConstraint

Sie können die Häufigkeit und Dauer der oben angegebenen Pausen weiter einschränken, indem Sie eine Mindesthäufigkeit für Pausen erzwingen, z. B. „Alle 12 Stunden muss eine Pause von mindestens 1 Stunde eingelegt werden“. Angenommen, dies kann als „Innerhalb eines beliebigen 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 werden:

{
   minBreakDuration { seconds: 3600 }         # 1 hour.
   maxInterBreakDuration { seconds: 39600 }  # 11 hours (12 - 1 = 11).
}

Der Zeitpunkt und die Dauer der Pausen in der Lösung berücksichtigen alle diese Einschränkungen sowie die bereits in der BreakRequest angegebenen Zeitfenster und Mindestdauern.

Eine FrequencyConstraint kann in der Praxis für nicht aufeinanderfolgende Pausen gelten. Der folgende Zeitplan entspricht beispielsweise dem Beispiel „1 Stunde alle 12 Stunden“:

  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

string (Duration format)

Erforderlich. Minimale Dauer der Werbeunterbrechung für diese Einschränkung. Nicht negativ. Siehe Beschreibung von FrequencyConstraint.

maxInterBreakDuration

string (Duration format)

Erforderlich. Maximal zulässige Dauer eines Zeitintervalls auf der Route, das nicht mindestens teilweise eine Pause von duration >= minBreakDuration enthält. Muss positiv sein.

Ziel

Zielvorhaben ersetzen das Kostenmodell vollständig und sind daher nicht mit bereits vorhandenen Kosten kompatibel. Jedes Ziel ist einer Reihe vordefinierter Kosten zugeordnet, z.B. für Fahrzeuge, Sendungen oder Übergangsattribute.

Experimentell: Weitere Informationen finden Sie unter https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request.

JSON-Darstellung
{
  "type": enum (Type),
  "weight": number
}
Felder
type

enum (Type)

Der Typ des Ziels.

weight

number

Wie stark dieses Ziel im Vergleich zu den anderen gewichtet werden soll. Dies kann eine beliebige nicht negative Zahl sein. Die Summe der Gewichtungen muss nicht 1 ergeben. Die Standardgewichtung ist 1,0.

Typ

Der Zieltyp, der einer Reihe von Kosten zugeordnet wird.

Enums
DEFAULT Es wird ein Standardsatz von Kosten verwendet, um eine angemessene Lösung zu gewährleisten. Hinweis: Dieses Ziel kann allein verwendet werden, wird aber auch immer mit der Gewichtung 1,0 als Baseline zu den vom Nutzer angegebenen Zielen hinzugefügt, falls es noch nicht vorhanden ist.
MIN_DISTANCE „MIN“-Ziele. Minimieren Sie die insgesamt zurückgelegte Strecke.
MIN_WORKING_TIME Minimieren Sie die Gesamtarbeitszeit, summiert über alle Fahrzeuge.
MIN_TRAVEL_TIME Wie oben, aber nur auf die Reisedauer bezogen.
MIN_NUM_VEHICLES Minimieren Sie die Anzahl der verwendeten Fahrzeuge.

DurationDistanceMatrix

Gibt eine Dauer- und Distanzmatrix von den Startorten der Besuche und Fahrzeuge zu den Zielorten der Besuche und Fahrzeuge an.

JSON-Darstellung
{
  "rows": [
    {
      object (Row)
    }
  ],
  "vehicleStartTag": string
}
Felder
rows[]

object (Row)

Gibt die Zeilen der Dauer- und Distanzmatrix an. Es muss so viele Elemente wie ShipmentModel.duration_distance_matrix_src_tags haben.

vehicleStartTag

string

Tag, das definiert, für welche Fahrzeuge diese Dauer- und Distanzmatrix 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 ihrer startTags-Felder muss mit dem vehicleStartTag einer Matrix (und nur dieser Matrix) übereinstimmen.

Alle Matrizen müssen eine andere vehicleStartTag haben.

Zeile

Gibt eine Zeile der Dauer- und Distanzmatrix an.

JSON-Darstellung
{
  "durations": [
    string
  ],
  "meters": [
    number
  ]
}
Felder
durations[]

string (Duration format)

Dauerwerte für eine bestimmte Zeile. Es muss so viele Elemente wie ShipmentModel.duration_distance_matrix_dst_tags haben.

meters[]

number

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 durations enthalten.

TransitionAttributes

Gibt Attribute für Übergänge 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 es gilt die strengste Einschrä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 (DistanceLimit)
  },
  "delay": string
}
Felder
srcTag

string

Tags, die die Gruppe von (src->dst)-Übergängen definieren, für die diese Attribute gelten.

Ein Quellbesuch oder Fahrzeugstart stimmt überein, wenn VisitRequest.tags oder Vehicle.start_tags entweder srcTag enthält oder excludedSrcTag nicht enthält (je nachdem, welches dieser beiden Felder nicht leer ist).

excludedSrcTag

string

srcTag ansehen. Genau eines der Felder srcTag und excludedSrcTag darf nicht leer sein.

dstTag

string

Ein Zielbesuch oder ein Fahrzeugende stimmt genau dann überein, wenn VisitRequest.tags oder Vehicle.end_tags entweder dstTag enthält oder excludedDstTag nicht enthält (je nachdem, welches dieser beiden Felder nicht leer ist).

excludedDstTag

string

dstTag ansehen. Genau eines der Felder dstTag und excludedDstTag darf nicht leer sein.

cost

number

Gibt die Kosten für die Durchführung dieser Umstellung an. Dieser Wert wird in derselben Einheit wie alle anderen Kosten im Modell angegeben und darf nicht negativ sein. Sie wird zusätzlich zu allen anderen bestehenden Kosten erhoben.

costPerKilometer

number

Gibt die Kosten pro Kilometer an, die für die während dieses Übergangs zurückgelegte Strecke anfallen. Sie wird zu allen Vehicle.cost_per_kilometer-Werten addiert, die für Fahrzeuge angegeben sind.

distanceLimit

object (DistanceLimit)

Gibt ein Limit für die zurückgelegte Strecke während dieses Übergangs an.

Seit Juni 2021 werden nur weiche Limits unterstützt.

delay

string (Duration format)

Gibt eine Verzögerung an, die bei der Ausführung dieses Übergangs auftritt.

Diese Verzögerung tritt immer nach Abschluss des Besuchs am Quellort und vor Beginn des Besuchs am Zielort auf.

ShipmentTypeIncompatibility

Gibt Inkompatibilitäten zwischen Sendungen abhängig von ihrem shipmentType an. Das Auftreten inkompatibler Sendungen auf derselben Route wird basierend auf dem Inkompatibilitätsmodus eingeschränkt.

JSON-Darstellung
{
  "types": [
    string
  ],
  "incompatibilityMode": enum (IncompatibilityMode)
}
Felder
types[]

string

Liste der inkompatiblen Typen. Zwei Sendungen mit unterschiedlichen shipment_types-Werten sind „inkompatibel“.

incompatibilityMode

enum (IncompatibilityMode)

Modus, der auf die Inkompatibilität angewendet wird.

IncompatibilityMode

Modi, die festlegen, wie das Auftreten inkompatibler Sendungen auf derselben Route eingeschränkt wird.

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 nie dasselbe Fahrzeug nutzen.
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY

In diesem Modus können zwei Sendungen mit inkompatiblen Typen nie gleichzeitig im selben Fahrzeug sein:

  • Sie können dasselbe Fahrzeug nur dann gemeinsam nutzen, wenn eines der Fahrzeuge geliefert wird, bevor das andere abgeholt wird.
  • Wenn beide Sendungen nur Abholungen (keine Lieferungen) oder nur Lieferungen (keine Abholungen) sind, können sie überhaupt nicht dasselbe Fahrzeug nutzen.

ShipmentTypeRequirement

Gibt Anforderungen zwischen Sendungen basierend auf ihrem shipmentType an. Die Einzelheiten der Anforderung werden durch den Anforderungsmodus definiert.

JSON-Darstellung
{
  "requiredShipmentTypeAlternatives": [
    string
  ],
  "dependentShipmentTypes": [
    string
  ],
  "requirementMode": enum (RequirementMode)
}
Felder
requiredShipmentTypeAlternatives[]

string

Liste der alternativen Versandarten, die für dependentShipmentTypes erforderlich sind.

dependentShipmentTypes[]

string

Für alle Sendungen mit einem Typ im Feld dependentShipmentTypes muss mindestens eine Sendung vom Typ requiredShipmentTypeAlternatives auf derselben Route besucht werden.

HINWEIS: Ketten von Anforderungen, bei denen ein shipmentType von sich selbst abhängt, sind nicht zulässig.

requirementMode

enum (RequirementMode)

Modus, der auf die Anforderung angewendet wird.

RequirementMode

Modi, die das Erscheinungsbild 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 wie mindestens eine ihrer „erforderlichen“ Sendungen verwenden.
IN_SAME_VEHICLE_AT_PICKUP_TIME

Im Modus IN_SAME_VEHICLE_AT_PICKUP_TIME müssen alle „abhängigen“ Sendungen zum Zeitpunkt der Abholung mindestens eine „erforderliche“ Sendung im Fahrzeug haben.

Eine „abhängige“ Abholung muss daher entweder:

  • Eine „erforderliche“ Sendung, die nur zugestellt werden kann, wird auf der Route danach zugestellt oder
  • Eine „erforderliche“ Sendung, die auf der Route davor abgeholt wurde. Wenn die „erforderliche“ Sendung eine Lieferung hat, muss diese Lieferung nach der Abholung der „abhängigen“ Sendung erfolgen.
IN_SAME_VEHICLE_AT_DELIVERY_TIME Wie zuvor, nur dass die „abhängigen“ Sendungen zum Zeitpunkt der Lieferung eine „erforderliche“ Sendung in ihrem Fahrzeug haben müssen.

PrecedenceRule

Eine Rangfolgeregel zwischen zwei Ereignissen (jedes Ereignis ist die Abholung oder Lieferung einer Sendung): Das „zweite“ Ereignis muss mindestens offsetDuration nach dem „ersten“ Ereignis beginnen.

Mehrere Rangfolgen 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 Prioritäten 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

boolean

Gibt an, ob das „erste“ Ereignis eine Zustellung ist.

secondIsDelivery

boolean

Gibt an, ob das „zweite“ Ereignis eine Zustellung ist.

offsetDuration

string (Duration format)

Der Versatz zwischen dem „ersten“ und dem „zweiten“ Ereignis. Er kann negativ sein.

firstIndex

integer

Sendungsindex des „ersten“ Ereignisses. Dieses Feld muss angegeben werden.

secondIndex

integer

Sendungsindex des „zweiten“ Ereignisses. Dieses Feld muss angegeben werden.