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:
loadDemands
to usługa należąca doShipment
.Shipment
może mieć wiele wymagań dotyczących obciążenia.loadLimits
to usługa należąca doVehicle
.Vehicle
może mieć wiele limitów obciążenia.
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ń.
Load
iLoadLimit
: 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.
Load
i LoadLimit
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:
W przykładzie
loadDemands
zdefiniuj typ wczytywania jakoweightKg
.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 typyloadDemands
iloadLimits
muszą być zgodne, aby przesyłka mogła mieścić się w limitach pojazdu.W tym samym przykładzie
loadDemands
ustaw właściwośćamount
na10
.Oznacza to, że przesyłka waży 10 kg.
W przykładzie
loadLimits
ustaw właściwośćmaxLoad
na100
.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.