Model kosztu

Właściwości kosztów są zdefiniowane w sekcjach ShipmentModel.shipments.Shipment i ShipmentModel.vehicles.Vehicle.

Głównym celem interfejsu Route Optimization API jest znajdowanie tras o najniższym koszcie. Dlatego model kosztów jest głównym czynnikiem optymalizacji trasy.

Model kosztów to zestaw właściwości określających koszty globalne, koszty pojazdu i koszty dostawy.

Właściwości modelu kosztów obsługują te rodzaje celów optymalizacji:

  • Efektywne przypisywanie pojazdów i trasy
  • Opłacalne czasy odbioru i dostawy
  • Ustalanie priorytetów w przypadku przesyłek o krytycznym znaczeniu

Struktura

Jak widać na diagramie, właściwości modelu kosztów są ustrukturyzowane w ten sposób:

Ten dokument zawiera tylko najważniejsze parametry modelu kosztów. Pełny zestaw parametrów kosztów znajdziesz w dokumentacji.

Lista kontrolna Essentials

Poniższa lista kontrolna zawiera niezbędne informacje, które pozwolą uniknąć potencjalnych błędów związanych z kosztami. Ta lista pomoże Ci zweryfikować żądanie i rozwiązać problemy z odpowiedzią.

Właściwości

W tabeli poniżej znajdziesz właściwości modelu kosztów.

Rodzic Nazwa usługi Typ obiektu Koszt za Opis nieruchomości
Shipment penaltyCost liczba Pominięta dostawa Koszt poniesiony w wyniku pominięcia przesyłki.
 Interfejs API pomija przesyłkę, gdy koszt jej realizacji przekracza koszt kary.
  • Ustawienie penaltyCost nadaje priorytet dostawie przesyłek o wyższym koszcie.
  • Nieustawienie atrybutu penaltyCost sprawia, że dostawa staje się obowiązkowa.
  • Wyraźne ustawienie wartości dostawy penaltyCost na zero powoduje, że interfejs API zawsze pomija dostawę, chyba że wymagają tego inne ograniczenia.
Vehicle fixedCost liczba Wysyłka Stały koszt stosowany, jeśli ten pojazd jest używany do obsługi przesyłki.
costPerHour liczba Godzina Koszt eksploatacji pojazdu na godzinę, w tym czas przejazdu, oczekiwania, wizyty i przerwy.
Wraz ze wzrostem tego kosztu optymalizator próbuje znaleźć szybsze trasy, które mogą nie być najkrótsze.
Ta właściwość może być skutecznym, samodzielnym kosztem na pojazd ze względu na swoją prostotę i kompletność.
costPerKilometer liczba Kilometr Koszt przejechania kilometra, np. koszt paliwa i amortyzacji pojazdu.
costPerTraveledHour liczba Godzina Koszt eksploatacji pojazdu na godzinę tylko podczas przejazdu, z wyłączeniem czasu oczekiwania, wizyty i przerwy. W tym przypadku priorytetem są szybsze trasy, a nie krótsze.

Przykłady

W tej sekcji znajdziesz 3 rodzaje przykładów:

  • Przykłady kodu ilustrujące strukturę właściwości modelu kosztów.
  • Przykładowy scenariusz, który pokazuje jeden ze sposobów wykorzystania właściwości modelu kosztów do osiągnięcia celu biznesowego.
  • Przykładowe żądanie, które zawiera wartości ustawione w scenariuszu przykładowym.

Przykładowe fragmenty kodu

Poniższy przykładowy kod pokazuje strukturę właściwości modelu kosztów w Shipment:

{
  "model": {
    "shipments": [ ...
      {
        "penaltyCost": PENALTY_COST
      }
    ],
    "vehicles": [ ...
    ]
  }
}

Poniższy przykładowy kod pokazuje strukturę właściwości modelu kosztów w Vehicle:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "fixedCost": FIXED_COST,
        "costPerKilometer": KILOMETER_COST,
        "costPerHour": HOUR_COST,
        "costPerTraveledHour": TRAVELED_HOUR_COST
      }
    ]
  }
}

Przykładowy scenariusz

W tej sekcji opisujemy scenariusz, w którym prowadzisz firmę zajmującą się opieką nad psami. Optymalizujesz trasę dla ciężarówki, którą odbierasz psy z ich domów. W tym scenariuszu chcesz, aby optymalizator uwzględniał koszty związane z odbieraniem psów i eksploatacją pojazdów podczas wyznaczania trasy.

W tym przykładzie 1 jednostka kosztu to 1 zł. Oznacza to, że wartości właściwości cost_model w Twoim żądaniu są następujące:

Właściwość Wartość Scenariusz
penaltyCost 10 Określa karę, którą oferujesz klientom za nieodebranie psa w zaplanowanym dniu. Jeśli nie odbierzesz psa w zaplanowanym dniu, klient otrzyma 40 zł zniżki na łączną kwotę za usługę.
fixedCost 30 Reprezentuje dzienny koszt rat pożyczki na pojazd, który wynosi 30 zł dziennie.
costPerKilometer 0,08 Wskaźnik, który informuje, ile paliwa zużywa Twój pojazd na kilometr. Twój pojazd potrzebuje 0,04 galona na kilometr, a cena za galon w Twoim regionie wynosi 2 dolary.
costPerHour 27 Określa, ile płacisz kierowcy za prowadzenie Twojego pojazdu. Płacisz kierowcy 27 zł za godzinę.
costPerTraveledHour 2,5 Informuje, ile musisz zapłacić za klimatyzację w pojeździe na godzinę dla psów podczas jazdy. Gdy pojazd się nie porusza, kierowca może otworzyć tylne drzwi i wyłączyć klimatyzację.

Na podstawie parametrów kosztów optymalizator może dokonywać kompromisów, które nie są oczywiste dla użytkownika, ale można je znaleźć dzięki optymalizacji.

Poniższy diagram przedstawia przykład, w którym optymalizator może wybrać dłuższą, ale szybszą trasę oznaczoną zieloną linią przerywaną, aby uniknąć korków na trasie oznaczonej czerwoną linią kropkowaną.

Pojazd ma 2 możliwe trasy: jedną przedstawioną zieloną linią przerywaną, która jest dłuższa, ale nie ma na niej żadnych incydentów, i drugą przedstawioną czerwoną linią kropkowaną, która jest krótsza, ale w jej środkowej części doszło do wypadku samochodowego.

W tym scenariuszu bilans kosztów obu tras jest następujący:

  • Zielona linia przerywana ma niskie wartości costPerHourcostPerTraveledHour, ponieważ jest to szybka trasa, na której nie ma korków, co jest bardziej opłacalne nawet wtedy, gdy wartość costPerKilometer jest wysoka.

  • Czerwona linia przerywana ma niski costPerKilometer, ponieważ jest to trasa bezpośrednia, ale costPerHourcostPerTraveledHour są zbyt wysokie ze względu na czas oczekiwania w korkach, co sprawia, że jest to najdroższa trasa.

Oprócz podawania opłacalnych tras optymalizator udostępnia też sumę łącznych kosztów tras dostawy we właściwościach odpowiedzi.

Przykładowe żądanie

Poniższy przykład pokazuje strukturę podstawowego żądania optimizeTours z wartościami ustawionymi w przykładowym scenariuszu:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
        "penaltyCost": 40
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "fixedCost": 30,
        "costPerKilometer": 0.08,
        "costPerHour": 27,
        "costPerTraveledHour": 2.5
      }
    ]
  }
}

Właściwości odpowiedzi

Wiadomość OptimizeToursResponse zawiera właściwości kosztów, które opisują koszty poniesione w procesie realizacji trasy:

  • metrics.costs: łączny koszt wszystkich tras podzielony według pól żądania związanych z kosztem.
  • metrics.totalCost: łączny koszt wszystkich tras.