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 są ustrukturyzowane w ten sposób:
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 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.
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 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:
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 softMaxLoad
i costPerUnitAboveSoftMax
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ć maxLoad
i softMaxLoad
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 } } }