Żą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żna używać do zarządzania pojemnością. Określają one wymaganą pojemność przesyłki i maksymalną pojemność pojazdu, co pozwala zoptymalizować przypisania tras na podstawie tych ograniczeń.

Zapotrzebowania i limity załadowania mogą wspierać realizację takich celów jak:

  • zapobieganie przeładowaniu pojazdów;
  • Monitoruj, jak zmienia się ładunek pojazdu w miarę odbioru i dostawy przesyłek.
  • Ograniczanie liczby wizyt pojazdu w konkretnej lokalizacji.

Zapotrzebowania na moc i limity są określone w tych właściwościach:

  • loadDemands określa ilość miejsca, której potrzebuje konkretna przesyłka.
  • loadLimits określa maksymalną pojemność danego pojazdu.

Struktura

Jak widać na diagramie, obciążenia i limity są sformułowane w następujący sposób:

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ść dla obciążenia i ograniczeń.
  • LoadLoadLimit: unikalne właściwości występujące odpowiednio w wymaganiach dotyczących obciążenia i limitach obciążenia.

Typ ładowania

Typy ładunków to klucze ciągu znaków, które identyfikują rodzaje wymagań dotyczących ładunku dla przesyłki oraz limity ładunku dla pojazdu. Typy wczytywania mają te ważne cechy:

  • Zdefiniowany przez użytkownika: typy wczytywania są definiowane przez użytkownika. Nie ma żadnych wstępnie zdefiniowanych zmiennych systemowych dla typów wczytywania.
  • Wspólne: typy ładunków są wspólne dla przesyłek i pojazdów. Oznacza to, że przesyłka będzie zużywać pojemność pojazdu do limitu tylko wtedy, gdy typy ładunków będą pasować. Jeśli pojazd nie ma określonego limitu ładunku dla danego typu, może przewozić nieograniczoną ilość ładunku danego typu.

Klucze ciągu znaków, które reprezentują typy wczytywania, używają składni typu mapy Protocol Buffers. Aby uniknąć problemów, te klucze ciągu znaków nie mogą być puste. Zalecamy, aby przy nadawaniu nazwy typu obciążenia używać identyfikatorów opisujących typ obciążenia i jego jednostkę. Na przykład: weightKg, volume_gallons, palletcount lub frequencyDaily.

LoadLoadLimit

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

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

Przykłady

Poniższy przykład pokazuje strukturę żądania załadowania, 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:

"loadDemands": {
  "MATCHING_LOAD_TYPE": {
    "amount": "YOUR_LOAD_AMOUNT"
  }
}

Poniższy przykład pokazuje najprostszą 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:

"loadLimits": {
  "MATCHING_LOAD_TYPE": {
    "maxLoad": "YOUR_MAX_LOAD"
  }
}

Wypróbuj

Użyj podanych wyżej przykładów kodu, aby utworzyć fikcyjny scenariusz. W tym scenariuszu masz przesyłkę o wadze 10 kg i pojazd, który może przewieźć 100 kg:

  1. W przykładzie loadDemands zdefiniuj typ wczytywania jako weightKg.

    Po wykonaniu tej czynności typ obciążenia w przykładzie loadLimits zostanie również wypełniony, udostępniając typ obciążenia. Pamiętaj, że typy loadDemands i loadLimits muszą być zgodne, aby przesyłka mogła mieścić się w limitach pojazdu.

  2. W tym samym przykładzie loadDemands ustaw właściwość amount na 10.

    Oznacza to, że przesyłka waży 10 kg.

  3. W przykładzie loadLimits ustaw właściwość maxLoad na 100.

    Oznacza to, że pojazd może przewozić maksymalnie 100 kilogramów.

Pamiętaj, że nie ma zdefiniowanych wstępnie typów. W tym przykładzie możesz zamienić kilogramy na punkty lub zmienić jednostki miary liniowe na wagę. Ta elastyczność pozwala dostosować wymagania dotyczące obciążenia i limity do konkretnych potrzeb.

Przykład żądania

Ten przykład pokazuje strukturę podstawowego żądania optimizeTours z loadDemands w przesyłce i loadLimits w pojeździe:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 00.000000,
              "longitude": 00.000000
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 00.000000,
              "longitude": 00.000000
            }
          }
        ],
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 00.000000,
          "longitude": 00.000000
        },
        "endLocation": {
          "latitude": 00.000000,
          "longitude": 00.000000
        },
        "costPerKilometer": 1.0,
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

Pamiętaj, że jedna dostawa może mieć wiele wymagań dotyczących ładunku, a pojazd może mieć wiele limitów ładunku, co pozwala uwzględnić złożone ograniczenia podczas optymalizacji tras floty.