Jak krótko opisano w Opisie usługi Route Optimization, podstawowe żądanie składa się z elementów Model, Przesyłki i Pojazdy jako wymaganych elementów:
- Model zawiera ustawienia i ograniczenia dotyczące całego żądania, w tym
Shipments
iVehicles
. - Przesyłki to zadania lub rzeczywiste przesyłki obejmujące odbiór i dostarczenie
VisitRequest
. Przesyłki mają ustawienia i ograniczenia lokalne. - Pojazdy to pojazdy, kierowcy lub personel. Pojazdy mają też ustawienia lokalne i ograniczenia.
Właściwości każdej z tych encji opisują część problemu optymalizacji na określonym poziomie szczegółowości. Ograniczenia dotyczące całego modelu są stosowane do wszystkich przesyłek i pojazdów, a ograniczenia i właściwości określone w przesyłkach lub pojazdach dotyczą tylko jednej przesyłki lub jednego pojazdu.
Pełną dokumentację dotyczącą każdego typu wiadomości znajdziesz w dokumentacji referencyjnej ShipmentModel
(REST, gRPC), Shipment
(REST, gRPC) oraz Vehicle
(REST, gRPC).
OptimizeToursRequest
miejsca zakwaterowania
Oto niektóre często używane właściwości wiadomości OptimizeToursRequest
najwyższego poziomu (REST, gRPC):
searchMode
wskazuje, czy zwrócić pierwsze rozwiązanie, które spełnia określone ograniczenia, czy znaleźć najlepsze możliwe rozwiązanie w określonym terminie.considerRoadTraffic
określa, czy do wyznaczania trasy i szacowania czasu dotarcia na miejsce ma być używany ruch na żywo.populateTransitionPolylines
określa, czy w odpowiedzi mają być zwracane wielokąty trasy i tokeny trasy.
Właściwości modelu
Oto niektóre często używane właściwości wiadomości ShipmentModel
(REST, gRPC):
globalStartTime
to najwcześniejszy czas rozpoczęcia trasy dla wszystkich pojazdów i przesyłek. Żadne pojazdy nie mogą rozpocząć pierwszych przejazdów i przewozów przed tym terminem.globalEndTime
to najpóźniejszy czas zakończenia trasy dla wszystkich pojazdów i przesyłek. Wszystkie przypisane przesyłki i przeniesienia muszą zostać ukończone przed tym terminem.
Właściwości dostawy
Oto niektóre często używane właściwości wiadomości Shipment
(REST, gRPC):
- Wartości
pickups[]
ideliveries[]
wskazują, gdzie można odebrać lub nadać przesyłkę. Właściwościpickups[]
ideliveries[]
używają wiadomościVisitRequest
(REST, gRPC). loadDemands
to ładunek wymagany, aby pojazd mógł przeprowadzić dostawę. Odpowiednia do pojazdu właściwośćload_limits
(REST, gRPC) określa, jak dużo ładunku może pomieścić pojazd. Więcej informacji o obciążeniu znajdziesz w artykule Obciążenie i limity.penalty_cost
to koszt poniesiony, jeśli przesyłka została pominięta. Więcej informacji o kosztach znajdziesz w artykule Parametry modelu kosztów.
Właściwości pojazdu
Oto niektóre często używane właściwości wiadomości Vehicle
(REST, gRPC):
startLocation
oznacza miejsce, w którym pojazd musi rozpocząć trasę. Ta właściwość jest opcjonalna. Jeśli nie jest określony, trasa pojazdu rozpoczyna się w miejscu, w którym znajduje się pierwsza przypisana przesyłka.endLocation
oznacza miejsce, w którym pojazd musi zakończyć trasę. Ta właściwość jest opcjonalna. Jeśli nie zostanie określony, trasa pojazdu kończy się w miejscu ostatniej przypisanej przesyłki.startTimeWindows[]
oznacza, kiedy pojazd może rozpocząć trasę. Ta właściwość jest opcjonalna.endTimeWindows[]
oznacza, kiedy pojazd może rozpocząć i zakończyć trasę. Obie właściwości są opcjonalne.loadLimits
to ładowność pojazdu, która jest dostępna do zaspokojenia zapotrzebowania na ładunek. Więcej informacji o wymaganiach i limitach obciążenia znajdziesz w artykule Wymagania i limity obciążenia.
Pełny przykład żądania w formacie JSON wygląda tak:
{
"model": {
"shipments": [
{
"pickups": [
{
"arrivalLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
}
}
],
"deliveries": [
{
"arrivalLocation": {
"latitude": 37.79581,
"longitude": -122.4218856
}
}
]
}
],
"vehicles": [
{
"startLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"endLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"costPerKilometer": 1.0
}
],
"globalStartTime": "2024-02-13T00:00:00.000Z",
"globalEndTime": "2024-02-14T06:00:00.000Z"
}
}
OptimizeTours
i BatchOptimizeTours
używają wiadomości z żądaniem, takich jak w przykładzie powyżej, ale w różny sposób. Zanim prześlesz żądanie optymalizacji trasy, musisz wiedzieć, na czym polega różnica między tymi 2 metodami: