Żą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 są ustrukturyzowane w ten sposób:

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 korzystają ze 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 Load i LoadLimit 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 pokazujący jeden ze sposobów użycia wymagań dotyczących obciążenia i limitów w żądaniu do interfejsu API.
  • Przykładowe żądanie, które zawiera wartości ustawione w scenariuszu przykładowym.

Przykładowe fragmenty kodu

W przykładzie poniżej pokazano strukturę żądania wczytania, 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ład

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 załadunku, 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 załadunku, ciąg znaków dogUnit Określa typ limitu obciążenia stosowanego w przypadku 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 symbol 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 każdego transportu 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.

Limity miękkie

Możesz ustawić limity obciążenia jako miękkie ograniczenia, dodając softMaxLoadcostPerUnitAboveSoftMax na loadLimits pojazdu. Pozwala to optymalizatorowi przekroczyć maksymalne obciążenie pojazdu kosztem priorytetowego traktowania ukończenia trasy zamiast ścisłego przestrzegania limitu obciążenia.

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

Właściwości

W tabeli poniżej opisano właściwości miękkich ograniczeń dotyczące zapotrzebowania na moc i limity.

Rodzic Nazwa usługi Typ obiektu Opis nieruchomości
loadLimits softMaxLoad string (format int64) Preferowane maksymalne obciążenie pojazdu. Jeśli obciążenie pojazdu przekroczy tę wartość, zostanie naliczona opłata.
loadLimits costPerUnitAboveSoftMax liczba Koszt jednostkowy obciążenia powyżej softMaxLoad. To pole jest wymagane, gdy używasz parametru softMaxLoad. Więcej informacji o kosztach znajdziesz w sekcji Model kosztów.

Przykładowy kod

Poniższy przykład pokazuje strukturę właściwości miękkich ograniczeń loadLimits:

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