Yük talepleri ve sınırlamaları, kapasiteyi yönetmek için kullanabileceğiniz bir tür kısıtlamadır. Bu kısıtlama, gönderinin zorunlu kapasitesini ve aracın maksimum kapasitesini belirtir. Bu sayede, rota atamalarını bu kısıtlamalara göre optimize edebilirsiniz.
Yük talepleri ve sınırlar aşağıdaki gibi hedefleri destekleyebilir:
- Araçların aşırı yüklenmesini önleyin.
- Gönderiler teslim alınırken ve teslim edilirken araç yüklerinin nasıl değiştiğini izleyin.
- Ağır hizmet tipi araçların ağır yük kargolarıyla eşleştirilmesine öncelik verin.
Yük talepleri ve sınırlar aşağıdaki özelliklerde belirtilir:
loadDemands
, belirli bir gönderimin gerektirdiği kapasite miktarını belirtir.loadLimits
, belirli bir araç için maksimum kapasiteyi belirtir.
Yapı
Şemada gösterildiği gibi, yük talepleri ve sınırlar aşağıdaki gibi yapılandırılmıştır:
loadDemands
,Shipment
mülküdür. BirShipment
birden fazla yükleme talebine sahip olabilir.loadLimits
,Vehicle
mülküdür.Vehicle
'ın birden fazla yükleme sınırı olabilir.
Essentials kontrol listesi
Aşağıdaki yapılacaklar listesi, yüklemeyle ilgili olası hataları önleyen temel bilgileri açıklar. Bu liste, isteğinizi doğrulamanıza ve yanıtınızla ilgili sorunları gidermenize yardımcı olabilir.
Özellikler
Bu bölümde, yük talepleri ve sınırları için aşağıdaki özellikler açıklanmaktadır:
- Yük türü: Yük talepleri ile sınırlar arasında paylaşılan bir özelliktir.
Load
veLoadLimit
: Sırasıyla yükleme isteklerinde ve yükleme sınırlarında bulunan benzersiz özellikler.
Yükleme türü
Yük türü, kargolara ve araçlara eşit şekilde uyguladığınız bir dize anahtarıdır. Tek bir yükleme türü, gönderinin yükleme talebinin yanı sıra aracın yükleme sınırı için geçerlidir.
Yükleme türleri, Protocol Buffers harita türü söz dizimini kullanır. Yük türünü adlandırırken yükün türünü ve birimini açıklayan tanımlayıcıları kullanın. Örneğin: weightKg, volume_gallons, palletcount veya frequencyDaily.
Load
ve LoadLimit
Load
ve LoadLimit
nesneleri, kargolar ve araçlar için kapasite şartlarını tanımlayan belirli özellikler içerir. Aşağıdaki tabloda bu özellikler açıklanmaktadır:
Nesne | Ebeveyn | Mülk | Tesis türü | Mülk açıklaması |
---|---|---|---|---|
Load |
loadDemands |
amount |
dize (int64 biçimi) | Belirtilen türde gönderinin kapasite şartını tanımlar. |
LoadLimit |
loadLimits |
maxLoad |
dize (int64 biçimi) | Belirtilen türdeki aracın maksimum yük kapasitesini tanımlar. |
Örnekler
Bu bölümde üç tür örnek ele alınmıştır:
- Yük taleplerinin ve sınır özelliklerinin yapısını gösteren kod örnekleri.
- API isteğinde yük taleplerini ve sınırlarını kullanmanın bir yolunu gösteren örnek bir senaryo.
- Örnek senaryoda ayarlanan değerleri içeren bir istek örneği.
Kod örnekleri
Aşağıdaki örnekte, loadDemands
türünü dize olarak ve amount
özelliğini int64 biçiminde dize olarak ayarlayabileceğiniz bir yük talebinin yapısı gösterilmektedir:
{ "model": { "shipments": [ ... { "loadDemands": { "MATCHING_LOAD_TYPE": { "amount": "YOUR_LOAD_AMOUNT" } } } ], "vehicles": [ ... ] } }
Aşağıdaki örnekte, loadLimits
türünü dize olarak, maxLoad
mülkünü ise int64 biçiminde dize olarak ayarlayabileceğiniz en temel yükleme sınırı yapısı gösterilmektedir:
{ "model": { "shipments": [ ... ], "vehicles": [ ... { "loadLimits": { "MATCHING_LOAD_TYPE": { "maxLoad": "YOUR_MAX_LOAD" } } } ] } }
Örnek senaryo
Bu bölümde, köpek bakım merkezi işletmenizin olduğu ve sınırlı sayıda kafes bulunan bir araçta birkaç köpeği taşımak için bir rotayı optimize ettiğiniz bir senaryo açıklanmaktadır.
Her gönderim, belirli sayıda köpek aldığınız bir durağı temsil eder. Bu örnekte her gönderinin farklı bir teslimat noktası vardır (baktığınız köpeklerin evi) ve tüm gönderilerde aynı teslimat noktası (köpek bakım merkezinizin bulunduğu bina) vardır.
Bu örnekte, isteğinizde yer alan özellik değerleri aşağıdaki gibidir:
Ebeveyn | Mülk | Tür | Değer | Senaryo |
---|---|---|---|---|
loadDemands |
yükleme türü | dize | dogUnit |
Gönderinin yük türünü tanımlar. Bu örnekte, her dogUnit değerinin bir köpeği temsil ettiği dogUnit kullanılmaktadır. |
loadDemands |
amount |
sayı | 1. gönderim: 1 2. gönderim: 3 |
Tanımlanmış yükleme türünün miktarını belirtir. Bu örnekte, iki gönderim tanımı yapıyorsunuz. İlkinde bir köpek, ikincisinde ise 3 köpek alıyorsunuz. |
loadLimits |
yükleme türü | dize | dogUnit |
Araca uygulanan yük sınırı türünü tanımlar. Sınırın alakalı olması için bu, gönderinin yükleme türüyle eşleşmelidir. |
loadLimits |
maxLoad |
sayı | 6 |
Aracın taşıyabileceği maksimum yük türünü belirtir. Bu örnekte, maksimum kapasitesi 6 dogUnit olan yalnızca bir aracınız vardır. Her dogUnit , bir köpek kafesini temsil eder. |
Aşağıdaki şemada aracın yük sınırları, her gönderinin yük talepleri ve her gönderinin aracın yük sınırlarını nasıl kullandığı gösterilmektedir:
Bu örnekte, her gönderinin yükleme talepleri ve aracın yükleme sınırları aşağıdaki etkileri gösterir:
Araç 6'ya kadar köpek taşıyabileceğinden ve yalnızca 4 köpek aldığınız için optimizatör, aracın köpekleri taşıması için bir rota oluşturmakta sorun yaşamaz.
Aracın 6
dogUnit
yük sınırı olması, bu araçta yalnızca iki köpek daha taşıyabileceğiniz anlamına da gelir.Köpek sayısı yükleme sınırından fazlaysa optimizatör, alışlardan birini atlar veya uygun bir araca atar.
Önceden tanımlanmış türlerin bulunmadığını unutmayın. Bu örnekte, köpeklerin ağırlığını sınırlamak için yükleme türünü köpek birimlerinden ağırlık birimlerine veya genişliklerini ya da boylarını sınırlamak için doğrusal ölçümlere değiştirebilirsiniz. Bu esneklik, yükleme taleplerini ve sınırlarını kendi ihtiyaçlarınıza göre özelleştirmenize olanak tanır.
İstek örneği
Aşağıdaki örnekte, örnek senaryo değerlerini içeren temel bir optimizeTours
isteğinin yapısı gösterilmektedir:
{ "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 } ] } }
Bu örnekteki durumdan farklı olarak, bir gönderinin birden fazla yükleme talebi ve bir aracın birden fazla yükleme sınırı olabileceğini unutmayın. Bu sayede, filonuzun rotalarını optimize ederken dikkate alınacak karmaşık kısıtlamalar sağlayabilirsiniz.