Depo ile çalışmak
Depoda yükleme hizmet süresi
Depodaki yükleme veya boşaltma süreleri hem siparişlere hem de araç özelliklerine (örneğin boyutlar veya ekipman) bağlı olabilir.
Depoda yükleme yapmak için gereken ek süre miktarını belirtmek için vehicle.depot_extra_service_duration_s
parametresini kullanın. Zaman saniye cinsinden belirtilir.
Not
vehicle.depot_extra_service_duration_s
parametresinde belirlenen süre depo hizmet süresi ile toplanır.
Örnek
Aynı yük kapasitesine sahip 2 araç 13 büyük boy siparişi teslim ediyor. Depoda hizmet süresi depot.service_duration_s
5 dakikadır (300 saniye). Siparişlerin depodaki araca yüklenmesi için vehicle.depot_extra_service_duration_s
30 dakikalık (1800 saniye) ek bir süre belirlenmiştir. Planlama sonucunda her araç rotasında ilerlemeden önce depoda 35 dakika geçirecek.
API isteği (JSON) ⋅ API yanıtı ⋅ Haritada aç
Aracın depo dışından başlaması
Varsayılan değer, araçlar ve kuryeler depodan başlar, ancak bazen rotayı başka bir noktadan (örneğin ev veya otopark) başlatmak gerekir. Genel anlamda, bu yaklaşım satış temsilcilerinin, hizmet mühendislerinin ve mal teslim etmeyen ancak hizmet sağlayan diğer uzmanların rotalarını planlamak için uygundur.
Bu gereksinim, vehicle.start_at
özelliği kullanılarak gerçekleştirilebilir. Bu durumda, kurye veya araç rotaya depodan değil, garage
tipindeki belirtilen noktadan başlayacaktır.
İş günü başlamadan önce depoya uğrama
Güne depo dışında başlarken, kuryelerin siparişleri oradan almak için depoyu ziyaret etmeleri gerekebilir. Bunun için vehicle.visit_depot_at_start
özelliğini kullanın. Eğer true
belirtilirse, siparişlerin teslimatına başlamadan önce kurye veya aracın depoyu ziyaret etmesi gerekir (bu varsayılan davranıştır). Aksi takdirde, siparişlerin teslimatına hemen başlayabilirler. Ayrıntılar için, Rotayı rastgele bir noktada başlatma veya bitirme bölümüne bakın.
Örnek 1
Teslimat üç araç tarafından gerçekleştirilmektedir:
-
İlk araç depodan teslimatı başlatır.
-
İkinci araç, rotayı depoya uğramadan başlatır ve bitirir. Bu durumda, kurye için başlangıç noktası,
garage
tipinde olan 6 numaralı sipariştir. -
Üçüncü araç rotaya depodan değil, sipariş 4’ten (tip
garage
) başlar, ancak siparişlerin teslimatına başlamadan önce depoyu ziyaret etmekle yükümlüdür.
API isteği (JSON) ⋅ API yanıtı ⋅ Haritada aç
Örnek 2
Teslimat üç araç tarafından gerçekleştirilmektedir:
-
İlk araç depodan teslimatı başlatır.
-
İkinci ve üçüncü araçlar ise depoya uğramadan rotaya başlayıp bitiriyor. 1. ve 7. siparişler,
pickup
tipindedir ve algoritma bunları rotaların ilk noktaları olarak seçer.
Sipariş önceliklendirmesi nedeniyle çözümde üç ayrı rota planlanmıştır.
API isteği (JSON) ⋅ API yanıtı ⋅ Haritada aç
Birkaç depodan birinden başlama
Bir kurye birkaç depodan birinden başlayabilir. Bu depolar (kuryenin ziyaret edebileceği depolar) depot_id
veya starting_depot_id
(kuryenin rotaya başlayabileceği depolar) alanında listelenmelidir. Bu listeler çakışabilir. Birden fazla depo varsa, algoritma başlamak için en uygun depoyu seçecektir.
Not
Eğer kurye için depot_id
ve starting_depot_id
alanları doldurulmamışsa, listedeki ilk depodan başlar depots
.
Birden fazla depodan birinden teslimat işlevi kullanılacaksa, kurye siparişleri ziyaret edebileceği depolardan herhangi birinden teslim alabilecektir.
Ek olarak, kurye için allow_different_depots_in_route
ve max_middle_depots
parametreleri ayarlanabilir. Ayrıntılar için Başlamak için en iyi depoyu seçme bölümüne bakın.
Ara depoda ek yükleme
Kuryenin başka siparişleri yüklemek için rota üzerinde ek depoları ziyaret etme imkanı olması için allow_different_depots_in_route
= true
parametresini ayarlayın. Ek sipariş alma depoları depot_id
(kurye tarafından ziyaret edilebilecek depolar) veya middle_depot_id
(ek sipariş alma depoları) alanlarında belirtilmelidir. Depo listeleri çakışabilir. Birkaç depoda sipariş varsa, algoritma ek sipariş almak için en uygun depoyu seçecektir.
Kurye yalnızca rotanın başında (ilk siparişi ziyaret etmeden önce) ek siparişleri almak için ara depoları ziyaret edebiliyorsa, depots_only_at_run_beginning
= true
parametresini (varsayılan olarak false
) ayarlayın.
Ek olarak, kurye için max_middle_depots
parametresi ayarlanabilir. Daha fazla bilgi için bkz. Ek bir depoya uğrama.
Rotanın veya seferin sonunda depoya dönüş
Varsayılan değer, kurye rotayı başladığı depoda tamamlar. Kuryenin rota üzerinde birkaç depoyu ziyaret etmesine izin vermek için allow_different_depots_in_route
= true
parametresini ayarlayın. Bu durumda, kurye rotayı başlangıç deposundan başka bir depoda tamamlayabilir.
Kuryenin rotayı tamamlayabileceği depolar depot_id
(kuryenin ziyaret edebileceği depolar) veya ending_depot_id
(kuryenin rotayı tamamlayabileceği depolar) alanında belirtilir. Bu listeler çakışabilir. Birden fazla depo varsa, algoritma geri dönüş için en uygun depoyu seçecektir.
Kuryenin rotayı çıktığı ilk depoda sonlandırmasını sağlamak için finish_route_in_starting_depot
= true
parametresi (varsayılan olarak false
) seçilmelidir. Kurye rotaya (visit_depot_at_start
= false
) deposundan başlamazsa, rotanın ikinci seferinde ayrıldığı depoya geri dönmek zorunda kalacaktır.
Kuryenin her seferi, seferin başlatıldığı depoda sonlandırmasını sağlamak için finish_run_in_starting_depot
= true
parametresini (varsayılan olarak false
) kullanın. Kuryenin seferler arasında bir depodan diğerine geçmesine izin vermek için can_change_depot_between_runs
= true
parametresini ayarlayın, bkz. Başka bir depodan yeni bir sefer başlatma.
Not
finish_route_in_starting_depot
= true
ve finish_run_in_starting_depot
= true
parametreleri yalnızca allow_different_depots_in_route
= true
ise anlamlıdır.
Tüm siparişler yerine getirildikten sonra kuryenin depoya dönmemesi gerekiyorsa return_to_depot
= false
seçeneğini kullanın.
Örnek 1.1
İki kuryenin iki siparişi teslim etmesi gerekiyor: bir siparişin delivery
Depo 1’den alınması ve ikinci siparişin pickup
Depo 2’ye teslim edilmesi gerekiyor. Her iki kurye de yalnızca 1’er sefer yapabilir, herhangi bir depodan hareket edebilir ve rotayı herhangi bir depoda tamamlayabilir. Her iki kuryenin de aynı seferde farklı depoları ziyaret etmesine izin verilir, ancak kuryeler ara depoları ziyaret edemez.
Çözümde sadece bir kurye kullanılır: kurye delivery
siparişi alarak Depo 1’den hareket eder, teslim eder, pickup
siparişi alır ve rotayı tamamladığı Depo 2’ye teslim eder.
API isteği (JSON) ⋅ API yanıtı ⋅ Haritada aç
Örnek 1.2
Örnek 1.1’de olduğu gibi, ancak kuryeler rotayı hareket ettikleri (finish_route_in_starting_depot
= true
) depoda tamamlamalıdır.
Çözümde her iki kurye de kullanılmaktadır. Kurye 1 Depo 1’den hareket ediyor, delivery
siparişini alıyor, teslim ediyor ve Depo 1’e geri dönüyor. İkinci kurye Depo 2’den hareket ediyor, pickup
siparişini alıyor ve onunla Depo 2’ye geri dönüyor.
API isteği (JSON) ⋅ API yanıtı ⋅ Haritada aç
Rotanın sonunda rastgele bir noktaya geri dönme
Çalışma senaryonuzun, örneğin son siparişin kuryenin park yerine veya ev adresine olan mesafesini dikkate alması gerekiyorsa, bunu aşağıdaki şekilde hesaba katabilirsiniz:
-
Türü
garage
(alanlocation.type
) olan bir nokta oluşturun. Bu nokta sadece rotaları tamamlamak için kullanılacaktır. -
İşin sonunda “eve” veya “otoparka” dönmesi gereken bir kurye için, bu noktanın kimliğini
vehicle.finish_at
alanına girin.
Görevi tamamladıklarında, finish_at
özelliğine sahip tüm araçlar veya kuryeler belirtilen noktaya geri dönecektir. Eğer depoya (vehicle.return_to_depot
= true
) geri dönme seçeneği etkinleştirilmişse, rota önce depoyu ziyaret edecek ve ardından park yerine gidecektir.
Örnek
Aşağıdaki örnekte farklı taşıma kapasitelerine sahip iki araç ve farklı ağırlıklara sahip dört sipariş kullanılmaktadır. Ağırlık kısıtlamaları nedeniyle her iki araç da teslimatta yer almaktadır. Araç 2, son sipariş teslim edildikten sonra depoya dönmemelidir.
Not
RouteQ yanıtında, araç 2’nin rotayı son siparişte tamamladığına dikkat edin.
API isteği (JSON) ⋅ API yanıtı ⋅ Haritada aç
Rotanın başlangıcı veya sonu depoya mümkün olduğunca yakın
Kuryenin depoya en yakın veya tersine depodan en uzak siparişte başlaması veya bitirmesi için bir rota planlayabilirsiniz. Örneğin, sabah depoya dönmeniz gereken ek siparişler olabilecekse, depoya en yakın siparişlerle bir rota başlatabilirsiniz. Akşama doğru depoya en yakın noktada olmak için rotaya en uzak siparişle de başlamak da bazen uygundur.
Eğer Gelişmiş ücret ayarlarını uygulamıyorsanız, aşağıdaki ayarları kullanın:
-
first_edges_penalty_factor
– depodan ilk siparişe olan mesafe için ceza, varsayılan 0. Eğer değeri 0’dan büyükse, algoritma bu mesafeyi en aza indirir ve 0’dan küçükse, en yükseğe çıkarır. -
last_edges_penalty_factor
– depodan son siparişe kadar olan mesafe için ceza, varsayılan olarak 0. Eğer değeri 0’dan büyükse, algoritma bu mesafeyi en aza indirir ve 0’dan küçükse, en yükseğe çıkarır.
Ceza değerleri büyükse, rotalar kilometre açısından optimize edilemeyebilir. Küçük ceza değerleri için, bir rotadaki ilk veya son siparişi seçme gerekliliği, önemli ölçüde kilometre tasarrufu sağlıyorsa ihlal edilebilir.
Gelişmiş ücret ayarları uyguluyorsanız, Depodan veya depoya hareket grubundaki anahtar sözcükleri kullanın.
Örnek
Aşağıdaki örnekte 1 kurye ve 10 sipariş bulunmaktadır. 2 ceza belirlenmiştir: first_edges_penalty_factor
= 2 ve last_edges_penalty_factor
= -2. Planlama sonucunda rota, depoya en yakın siparişle başlar ve en uzak siparişle biter.
API isteği (JSON) ⋅ API yanıtı ⋅ Haritada aç