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łki i maksymalną 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ę:
loadDemands
jest usługą wShipment
.Shipment
może mieć wiele wymagań dotyczących obciążenia.loadLimits
jest usługą wVehicle
.Vehicle
może mieć wiele limitów obciążenia.
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.
Load
iLoadLimit
: 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.
Load
i LoadLimit
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, 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:
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.