Żądania i limity obciążenia

Właściwość loadDemands jest zdefiniowana w ShipmentModel.shipments.Shipment, a właściwość loadLimits w ShipmentModel.vehicles.Vehicle.

Wymagania i limity obciążenia to rodzaj ograniczeń, których możesz używać do zarządzania pojemnością. To ograniczenie określa wymaganą pojemność przesyłki i maksymalną pojemność pojazdu, co pozwala optymalizować przypisania tras na podstawie tych ograniczeń.

Wymagania i limity dotyczące obciążenia mogą wspierać takie cele jak:

  • Zapobiegaj przeciążeniu pojazdów.
  • Monitoruj zmiany obciążenia pojazdów podczas odbierania i dostarczania przesyłek.
  • Nadaj priorytet parowaniu pojazdów ciężarowych z ciężkimi ładunkami.

Wymagania i limity obciążenia są określone w tych właściwościach:

  • loadDemands określa ilość zasobów, których wymaga konkretna przesyłka.
  • loadLimits określa maksymalną ładowność danego pojazdu.

Struktura

Jak pokazano na diagramie, wymagania i limity obciążenia mają następującą strukturę:

Lista kontrolna Essentials

Poniższa lista kontrolna zawiera podstawowe informacje, które pomogą Ci uniknąć potencjalnych błędów związanych z obciążeniem. Ta lista może pomóc Ci zweryfikować żądanie i rozwiązać problemy z odpowiedzią.

Właściwości

W tej sekcji opisano właściwości dotyczące wymagań i limitów obciążenia:

  • Typ obciążenia: wspólna właściwość wymagań i limitów obciążenia.
  • Load i LoadLimit: unikalne właściwości występujące odpowiednio w żądaniach obciążenia i limitach obciążenia.

Typ obciążenia

Typ ładunku to klucz ciągu znaków, który stosujesz zarówno do przesyłek, jak i pojazdów. Pojedynczy typ ładunku dotyczy zapotrzebowania na ładunek przesyłki oraz limitu ładunku pojazdu.

Typy obciążenia używają składni typu mapy buforów protokołu. Podczas nadawania nazwy typowi obciążenia używaj identyfikatorów opisujących typ obciążenia i jego jednostkę. Na przykład: weightKg, volume_gallons, palletcount lub frequencyDaily.

Load i LoadLimit

Obiekty Load i LoadLimit zawierają określone właściwości, które definiują wymagania dotyczące ładowności przesyłek i pojazdów. W tej tabeli opisano te właściwości:

Obiekt Ma dzieci Właściwość Typ obiektu Opis miejsca zakwaterowania
Load loadDemands amount ciąg znaków (format int64) Określa wymagane obciążenie przesyłki w określonym typie.
LoadLimit loadLimits maxLoad ciąg znaków (format int64) Określa maksymalną ładowność pojazdu danego typu.

Przykłady

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

  • Przykłady kodu ilustrujące strukturę właściwości żądań i limitów obciążenia.
  • Przykładowy scenariusz, który pokazuje jeden ze sposobów użycia wymagań i limitów obciążenia w żądaniu do interfejsu API.
  • Przykładowe żądanie, które zawiera wartości ustawione w przykładowym scenariuszu.

Przykładowe fragmenty kodu

Poniższy przykład pokazuje strukturę żądania wczytania, w którym możesz ustawić typ loadDemands jako ciąg znaków, a właściwość amount jako ciąg znaków w formacie int64:

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

Poniższy przykład pokazuje najbardziej podstawową strukturę limitu obciążenia, w której możesz ustawić typ loadLimits jako ciąg znaków, a właściwość maxLoad jako ciąg znaków w formacie int64:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

Przykład

W tej sekcji opisano scenariusz, w którym prowadzisz hotel dla psów i optymalizujesz trasę transportu kilku psów w pojeździe z ograniczoną liczbą klatek.

Każda przesyłka to jeden przystanek, na którym odbierasz określoną liczbę psów. W tym przykładzie każda przesyłka ma inne miejsce odbioru, czyli dom psa, którym się opiekujesz, a wszystkie przesyłki mają to samo miejsce dostawy, czyli budynek Twojego psiego przedszkola.

W tym przykładzie wartości właściwości w żądaniu są następujące:

Ma dzieci Właściwość Typ Wartość Scenariusz
loadDemands typ obciążenia tekst dogUnit Określa typ ładunku przesyłki. W tym przykładzie użyto dogUnit, gdzie każdy dogUnit reprezentuje 1 psa.
loadDemands amount liczba Pierwsza przesyłka: 1
Druga przesyłka: 3
Określa ilość zdefiniowanego typu obciążenia. W tym przykładzie definiujesz 2 przesyłki. W pierwszej odbierasz 1 psa, a w drugiej – 3 psy.
loadLimits typ obciążenia tekst dogUnit Określa typ limitu obciążenia stosowanego do pojazdu. Aby limit był odpowiedni, musi on być zgodny z typem ładunku przesyłki.
loadLimits maxLoad liczba 6 Określa maksymalną ilość ładunku danego typu, jaką może przewozić pojazd. W tym przykładzie masz tylko jeden pojazd o maksymalnej pojemności 6 dogUnit, gdzie każdy dogUnit reprezentuje jedną klatkę dla psa.

Poniższy diagram przedstawia limity obciążenia pojazdu, wymagania dotyczące obciążenia każdej przesyłki oraz sposób, w jaki każda przesyłka wykorzystuje limity obciążenia pojazdu:

Pojazd rozpoczyna trasę z 6 pustymi miejscami, które reprezentują limity obciążenia pojazdu. Pierwsza przesyłka wymaga miejsca dla jednego psa, a druga – dla trzech. Na koniec 4 z 6 miejsc są zajęte, a 2 pozostają puste.

W tym przykładzie wymagania dotyczące ładunku każdej przesyłki i limity ładunku pojazdu mają następujące skutki:

  • Optymalizator nie będzie miał problemu z wygenerowaniem trasy dla pojazdu do transportu psów, ponieważ pojazd może przewozić do 6 psów, a Ty odbierasz tylko 4.

  • Limit obciążenia pojazdu wynoszący 6 dogUnit oznacza, że możesz przewieźć tym pojazdem jeszcze tylko 2 psy.

  • Jeśli liczba psów przekroczy limit obciążenia, optymalizator pominie jeden z odbiorów lub przypisze go do odpowiedniego pojazdu.

Pamiętaj, że nie ma zestawu wstępnie zdefiniowanych typów. W tym przykładzie możesz zmienić typ ładunku z jednostek psów na jednostki wagi, aby ograniczyć wagę psów, lub na miary liniowe, aby ograniczyć ich szerokość lub wysokość. Ta elastyczność pozwala dostosować wymagania i limity obciążenia do konkretnych potrzeb.

Przykładowe żądanie

Poniższy przykład pokazuje strukturę podstawowego żądania optimizeTours zawierającego przykładowe wartości scenariusza:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "One bernese mountain dog",
        "loadDemands": {
          "dogUnit": {
            "amount": "1"
          }
        }
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "Three chihuahuas",
        "loadDemands": {
          "dogUnit": {
            "amount": "3"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "loadLimits": {
          "dogUnit": {
            "maxLoad": "6"
          }
        },
        "costPerKilometer": 1.0
      }
    ]
  }
}

Pamiętaj, że w przeciwieństwie do tego przykładu przesyłka może mieć wiele wymagań dotyczących ładunku, a pojazd może mieć wiele limitów ładunku, co pozwala na podanie złożonych ograniczeń, które należy uwzględnić podczas optymalizacji tras floty.

Limity obciążenia miękkiego

Limity obciążenia możesz ustawić jako ograniczenia miękkie, dodając softMaxLoad i costPerUnitAboveSoftMax do loadLimits pojazdu. Dzięki temu optymalizator może przekroczyć maksymalne obciążenie pojazdu, co wiąże się z kosztami, ale priorytetem jest ukończenie trasy, a nie ścisłe przestrzeganie limitu obciążenia.

Możesz używać jednocześnie maxLoad i softMaxLoad, aby ustawić zarówno twardy, jak i miękki limit obciążenia. W tym przypadku softMaxLoad określa obciążenie, które można przekroczyć, a maxLoad określa stały limit, którego nie można przekroczyć. Jeśli używane są oba, wartość maxLoad musi być większa niż softMaxLoad.

Właściwości

W tabeli poniżej opisano właściwości ograniczeń miękkich dotyczących wymagań i limitów obciążenia.

Ma dzieci Nazwa usługi Typ obiektu Opis miejsca zakwaterowania
loadLimits softMaxLoad ciąg znaków (format int64) Preferowane maksymalne obciążenie pojazdu. Jeśli ładunek pojazdu przekracza tę wartość, naliczany jest koszt.
loadLimits costPerUnitAboveSoftMax liczba Koszt jednostki obciążenia powyżej softMaxLoad. To pole jest wymagane, gdy używasz softMaxLoad. Więcej informacji o kosztach znajdziesz w artykule o modelu kosztów.

Przykładowy kod

Poniższy przykład pokazuje strukturę właściwości ograniczenia miękkiego loadLimits:

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}