Cele to parametry, których możesz używać do określania ogólnych celów optymalizacji zamiast podawania konkretnych parametrów kosztów z modelu kosztów.
W jednym żądaniu możesz użyć wielu celów i przypisać każdemu z nich względną wagę, aby określić, jak silnie wpływa on na ogólną optymalizację. Cele wpływają na całe żądanie, a tym samym na wszystkie pojazdy i przesyłki. Możesz też użyć celów, aby rozpocząć tworzenie własnego modelu kosztów, zgodnie z opisem w sekcji Generowanie modelu kosztów.
Za pomocą celów możesz kontrolować te aspekty planu trasy:
- całkowity czas podróży lub odległość na trasach;
- Łączny czas pracy we wszystkich pojazdach.
- Łączna liczba używanych pojazdów.
Właściwości
Właściwość objectives to tablica typów wiadomości Objective w ramach ShipmentModel. Każdy element Objective określa konkretny cel optymalizacji i zawiera pola wymienione w tej tabeli:
| Pole | Typ | Opis |
|---|---|---|
type |
Typ wyliczeniowy |
Określa predefiniowany cel optymalizacji. Akceptowane wartości to:
|
weight |
Liczba zmiennoprzecinkowa |
Określa względne znaczenie tego celu. Jeśli używasz wielu celów, wartość weight określa, jak silnie ten konkretny cel wpływa na ogólną optymalizację trasy w porównaniu z innymi celami. Może to być dowolna liczba nieujemna, która nie musi sumować się do 1. Wartością domyślną jest 1.0.
|
Przykłady
W tej sekcji znajdziesz 2 rodzaje przykładów:
- Przykładowy kod ilustrujący strukturę tablicy
objectives. - Przykładowe żądanie zawierające tablicę
objectives.
Przykładowe fragmenty kodu
Poniższy przykład pokazuje strukturę elementu objectives:
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
Przykładowe żądanie
Poniższy przykład pokazuje strukturę podstawowej prośby optimizeTours zawierającej wiele celów, w której MIN_TRAVEL_TIME jest 3 razy ważniejszy niż MIN_WORKING_TIME.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME", "weight": 3.0 }, { "type": "MIN_WORKING_TIME" } ] } }
Generowanie modelu kosztów
Cele to szybki sposób na określenie celów optymalizacji, ale w niektórych przypadkach mogą być niewystarczająco szczegółowe. Aby osiągnąć dokładne cele routingu, możesz potrzebować szczegółowej kontroli dostępnej tylko za pomocą parametrów modelu kosztów.
Możesz rozpocząć tworzenie własnego modelu kosztów, dodając do żądania cele, a następnie przekształcając cele w żądaniu w parametry modelu kosztów za pomocą trybu rozwiązywania TRANSFORM_AND_RETURN_REQUEST.
Gdy wyślesz żądanie w tym trybie rozwiązywania, nastąpią te działania:
- Interfejs API przekształca Twoje cele w parametry modelu kosztów i zwraca je w formacie
processedRequest. Następnie możesz dostosować parametry modelu kosztów, aby dopracować plan trasy. - Jeśli używasz wielu celów, interfejs API łączy koszty wszystkich celów i skaluje je według odpowiednich wag.
- Za to żądanie nie naliczamy opłat, ponieważ interfejs API nie podaje zoptymalizowanej trasy, a jedynie przekształca cele w parametry modelu kosztów.
Przykładowe żądanie
Ten przykład pokazuje żądanie z użyciem celu MIN_TRAVEL_TIME i trybu rozwiązywania TRANSFORM_AND_RETURN_REQUEST:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" }
Przykładowa odpowiedź
Oto odpowiedź na poprzednie żądanie. Ta odpowiedź zawiera zarówno wygenerowane parametry modelu kosztów, jak i oryginalny cel, do którego można się odnieść.
{ "processedRequest": { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.425062610009959, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.424215032060211, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerHour": 30, "costPerTraveledHour": 330, "costPerKilometer": 0.2 } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" } }