Żądania i limity obciążenia

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

Wymagania i limity obciążenia to rodzaj ograniczenia, którego możesz używać do zarządzania pojemnością. To ograniczenie określa wymaganą pojemność przesyłkimaksymalną pojemność pojazdu, co umożliwia optymalizację przypisywania tras na podstawie tych ograniczeń.

Żądania i limity obciążenia mogą wspierać takie cele jak:

  • zapobiegać przeładowaniu pojazdów,
  • Monitoruj, jak zmienia się obciążenie pojazdów w miarę odbierania i dostarczania przesyłek.
  • Nadaj priorytet parowaniu pojazdów ciężarowych z przesyłkami o dużym obciążeniu.

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

  • loadDemands określa ilość miejsca, jakiej wymaga dany transport.
  • loadLimits określa maksymalną pojemność danego pojazdu.

Struktura

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

Lista kontrolna Essentials

Poniższa lista kontrolna zawiera podstawowe informacje, które pozwolą uniknąć potencjalnych błędów związanych z obciążeniem. Ta lista może pomóc w weryfikacji żądania i rozwiązywaniu problemów z odpowiedzią.

Właściwości

W tej sekcji opisano właściwości dotyczące wymagań i limitów obciążenia, które są następujące:

  • Typ obciążenia: wspólna właściwość wymagań i limitów obciążenia.
  • LoadLoadLimit: unikalne właściwości występujące odpowiednio w przypadku zapotrzebowania na obciążenie i limitów obciążenia.

Typ obciążenia

Typ ładunku to klucz tekstowy, który stosujesz w równym stopniu do przesyłek i pojazdów. Jeden typ ładunku dotyczy zarówno zapotrzebowania na ładunek w przypadku przesyłki, jak i limitu ładunku pojazdu.

Typy wczytywania używają składni typu mapy Protocol Buffers. Podczas nazywania typu obciążenia używaj identyfikatorów opisujących typ obciążenia i jego jednostkę. Na przykład: weightKg, volume_gallons, palletcount lub frequencyDaily.

LoadLoadLimit

Obiekty LoadLoadLimit zawierają określone właściwości, które definiują wymagania dotyczące pojemności przesyłek i pojazdów. W tabeli poniżej opisujemy te właściwości:

Obiekt Rodzic Właściwość Typ obiektu Opis nieruchomości
Load loadDemands amount string (format int64) Określa wymagania dotyczące pojemności przesyłki w określonym typie.
LoadLimit loadLimits maxLoad string (format int64) Określa maksymalną ładowność pojazdu w określonym typie.

Przykłady

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

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

Przykładowe fragmenty kodu

W przykładzie poniżej pokazano strukturę zapotrzebowania na moc, w której 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ładowy scenariusz

W tej sekcji opisujemy scenariusz, w którym prowadzisz firmę zajmującą się opieką nad psami w ciągu dnia i optymalizujesz trasę, aby przewieźć kilka psów w pojeździe z ograniczoną liczbą klatek.

Każda dostawa to jeden przystanek, na którym odbierasz określoną liczbę psów. W tym przykładzie każda przesyłka ma inny adres odbioru, czyli dom, w którym mieszkają psy, którymi się opiekujesz, a wszystkie przesyłki mają ten sam adres dostawy, czyli budynek Twojego psiego przedszkola.

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

Rodzic Właściwość Typ Wartość Scenariusz
loadDemands rodzaj obciążenia, ciąg znaków dogUnit Określa typ ładunku w przesyłce. W tym przykładzie użyto symbolu dogUnit, gdzie każdy symbol dogUnit reprezentuje jednego psa.
loadDemands amount liczba 1. dostawa: 1
2. dostawa: 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 rodzaj obciążenia, ciąg znaków dogUnit Określa typ limitu obciążenia stosowanego do pojazdu. Aby limit był odpowiedni, musi on być zgodny z rodzajem ładunku.
loadLimits maxLoad liczba 6 Określa maksymalną ilość danego typu ładunku, jaką może przewieźć pojazd. W tym przykładzie masz tylko 1 pojazd o maksymalnej pojemności 6 dogUnit, gdzie każdy dogUnit oznacza jedną klatkę dla psa.

Poniższy diagram ilustruje limity obciążenia pojazdu, wymagania dotyczące obciążenia w przypadku 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 ładowności pojazdu. Pierwsza przesyłka wymaga miejsca dla 1 psa, a druga dla 3 psów. W stanie końcowym pojazd ma 4 z 6 miejsc zajętych, a 2 miejsca są wolne.

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

  • Optymalizator nie będzie miał problemu z wygenerowaniem trasy dla pojazdu, którym przewieziesz psy, ponieważ może on pomieścić do 6 psów, a Ty odbierasz tylko 4.

  • Limit ładowności pojazdu wynoszący 6 dogUnit oznacza również, że w tym konkretnym pojeździe możesz przewozić tylko 2 dodatkowe psy.

  • Jeśli liczba psów przekraczała limit ładowności, optymalizator pomijał jeden z odbiorów lub przypisywał 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 zmienić go na pomiary 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 z wartościami z przykładowego 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 załadunku, a pojazd może mieć wiele limitów załadunku, co pozwala podać złożone ograniczenia, które należy wziąć pod uwagę podczas optymalizacji tras floty.