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 (alan location.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ç

Destek birimine yaz