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:
loadDemandsokreśla ilość zasobów, których wymaga konkretna przesyłka.loadLimitsokreśla maksymalną ładowność danego pojazdu.
Struktura
Jak pokazano na diagramie, wymagania i limity obciążenia mają następującą strukturę:
loadDemandsto właściwość obiektuShipment.Shipmentmoże mieć wiele wymagań dotyczących obciążenia.loadLimitsto właściwość obiektuVehicle.Vehiclemoże mieć wiele limitów obciążenia.
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.
LoadiLoadLimit: 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: 1Druga 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:

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
dogUnitoznacza, ż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 } } }