Bu sayfada, rota planlama ihtiyaçlarınızı belirlemekten başlayıp sisteminizde entegre bir rota planıyla biten Route Optimization API'yi kullanan bir rota planının yaşam döngüsü açıklanmaktadır.
Rota planının aşamalarını takip ettiğinizde aşağıdaki hedeflere ulaşabilirsiniz:
- Filo operasyonlarınızı eşleme: Fiziksel filonuzu, karmaşık kısıtlamalarınızı ve işletme hedeflerinizi API için koda dönüştürün.
- İşletmeniz için rota planlarını optimize etme: Rota planınızı hedeflerinize ulaşacak ve günlük operasyonlarınızı iyileştirecek şekilde nasıl hassaslaştıracağınızı öğrenin.
- Üretime dağıtma: Rota planınızı günlük operasyonlarınıza dahil ederek uygulayın.
Aşağıdaki şemada bir rota planının yaşam döngüsü gösterilmektedir.
Rota planının uygulama aşaması, API'yi ilk kez entegre ettiğinizde veya işletme gereksinimleriniz önemli ölçüde değiştiğinde gerçekleşir. 1'den 5'e kadar olan aşamaları kapsar.
Günlük operasyonlar aşaması daha hafiftir ve iyileştirme minimum düzeydedir. Bu aşama, 2. ila 4. aşamaları kapsar.
Rota yaşam döngüsünün aşamaları şunlardır:
- Sorununuzun kapsamını belirleyin: API'yi kullanmaya başlamadan önce operasyonlarınızın tam bir resmini elde etmek için hedeflerinizi, kaynaklarınızı, görevlerinizi ve kısıtlamalarınızı belirleyip düzenleyin.
- Verilerinizi eşleme: İşletmenizin gerçeklerini API parametrelerine dönüştürerek rota planının, filonuzun nasıl çalışması gerektiğini yansıtmasını sağlayın.
- İstek oluşturma ve rota planı alma: Verilerinizi API'ye girin ve optimize edilmiş rota planınızı alın.
- Rota planınızı hassaslaştırma: Rota planınızı test edin ve tüm ihtiyaçlarınızı karşıladığından emin olmak için kısıtlamalarınızı ve hedeflerinizi ayarlayarak planınızı tekrarlayın.
- Rota planını entegre edin: Uygulanabilir navigasyon sağlamak için rota planını mevcut sistemlerinize bağlayın.
Sorununuzun kapsamını belirleme
API'yi kullanmadan önce günlük operasyonlarınızın ayrıntılarını net veri kategorileri halinde düzenlemeniz gerekir. Bu sayede, mevcut kaynaklarınız ve görevleriniz, bunları kısıtlayan unsurlar ve filonuzla ulaşmak istediğiniz hedefler konusunda net bir anlayışla uygulama sürecinize başlayabilirsiniz.
Kaynaklarınızı ve görevlerinizi belirleme
Rota planınızı oluştururken önemli bir adım, kaynaklarınızı ve görevlerinizi (yani araçlarınızı ve gönderilerinizi) belirlemektir.
| Araçlar | Gönderimler |
|---|---|
|
|
Kısıtlamalarınızı belirleme
Kısıtlamalarınız, araçlarınızı nasıl kullanabileceğiniz ve gönderilerinizi nasıl işlemeniz gerektiğiyle ilgili sınırlamalar ve kısıtlamalardır. Operasyonlarınızın çoğunu belirlerler ve optimize edilmiş bir rota planı oluştururken hayati önem taşırlar.
Kısıtlamalar genellikle iki kategoriye ayrılır:
| Katı kısıtlamalar | Yumuşak kısıtlamalar |
|---|---|
| Bunlar, ihlal edilemeyen sınırlardır. Örneğin, bir kamyon maksimum kapasitesinden daha fazla yük taşıyamaz ve bir sürücü, mağaza kapandıktan sonra teslim alma işlemi yapamaz. | Bunlar, gerekirse ihlal edilebilecek tercihlerdir ve genellikle bir ceza maliyeti vardır. Örneğin, bir kamyonu yalnızca% 80 kapasiteyle yüklemeyi veya hedef zamandan önce teslimat yapmayı tercih edebilirsiniz ancak daha iyi bir rota elde etmek için bu sınırları aşmanızda sakınca yoktur. |
Sık karşılaşılan kısıtlamalar şunlardır:
- Kapasite sınırları: Bir aracın taşıyabileceği maksimum ağırlık, hacim veya öğe sayısı.
- Zaman aralıkları: Bir konumun ziyarete açık olduğu belirli zaman aralıkları veya bir sürücünün belirli vardiya saatleri.
- Maliyetler: Bir aracı çalıştırmanın veya bir gönderimi atlamanın maliyeti. API'nin temel hedeflerinden biri, uygun maliyetli bir rota planı oluşturmaktır.
- Sürücü molaları: Genellikle belirli bir çalışma süresinden sonra iş kanunları uyarınca sürücülerin dinlenmesi gereken sürelerdir.
İşletme hedeflerinizi belirleme
Kaynaklarınızı, görevlerinizi ve bunların sınırlamalarını belirledikten sonra işletmeniz için en önemli metrikleri belirlemeniz gerekir. Bu hedefler, kısıtlamalarla birlikte çalışır ve rota planlarken en önemli unsurlara karar vermenize yardımcı olur.
İşletme hedeflerine dair bazı örnekleri aşağıda bulabilirsiniz:
| Filo büyüklüğü | Mesafe | Time | Maliyet |
|---|---|---|---|
| Kullanılan araç sayısını en aza indirmek mi yoksa iş gününü daha erken bitirmek için tüm filonuzu kullanmak mı istiyorsunuz? | Yakıt tasarrufu yapmak için en kısa yolu mu yoksa otoyolların kullanılması nedeniyle daha uzun olabilecek daha hızlı bir rotayı mı tercih edersiniz? | Toplam çalışma saatini en aza indirmek mi yoksa belirli saatlerde varmaya öncelik vererek rotada geçirilen süreyi uzatmak mı istiyorsunuz? | Ücretler ve yakıt gibi operasyonel giderleri en aza indirmek mi yoksa katı teslim tarihlerine uymak için daha yüksek maliyetleri kabul etmek mi istiyorsunuz? |
Verilerinizi eşleme
Verilerinizi topladıktan sonra API'nin özellikleriyle eşleşecek şekilde eşleyin. Bu sayede optimize edici, işletmenizin gerçeklerini dikkate alan bir rota planı döndürmek için gereken tüm bilgileri alır.
Probleminizin kapsamını belirleme bölümünde eşlediğiniz kaynakları, görevleri, kısıtlamaları ve hedefleri eşlemek için sonraki tablolardaki parametreleri kullanın.
Değişken eşleme
| Gerçek hayattan kavram | API parametresi | Açıklama |
|---|---|---|
| Sürücü veya araç | model.vehicles[] |
Filonuzdaki tek bir aracı temsil eder. |
| Depo konumları |
vehicles[].startWaypointvehicles[].endWaypoint
|
Aracın rotasına başladığı ve rotasını bitirdiği konum. |
| Çalışma saatleriniz |
model.globalStartTimemodel.globalEndTime
|
Tüm filonun çalışması için en erken başlangıç zamanı ve en geç bitiş zamanı. |
| Görev veya paket | model.shipments[] |
Bir işi temsil eder. pickup, delivery veya her ikisi olabilir. |
| Görev konumu |
pickups[].arrivalWaypointdeliveries[].arrivalWaypoint
|
İşin yapıldığı coğrafi konum. |
| Hizmet süresi |
pickups[].durationdeliveries[].duration
|
Seyahat süresi hariç olmak üzere, görevi tamamlamak için konumda harcanan süre (ör. yük boşaltma). |
Kısıtlama eşleme
| Gerçek hayattaki kısıtlama | API parametresi | Açıklama |
|---|---|---|
| Araç kapasitesi | vehicles[].loadLimits |
Araç kapasitesi için katı veya esnek sınırı ayarlar. Bir gönderinin loadDemand değeri kalan sınırı aşarsa atanmaz. |
| Paket boyutu | shipments[].loadDemands |
Bir sevkiyatın tükettiği araç kapasitesi miktarı. |
| Araç kısıtlaması | shipments[].allowedVehicleIndices |
Bir gönderiyi yalnızca belirli araçlar veya sürücüler tarafından teslim alınabilecek ya da teslim edilebilecek şekilde kısıtlar. |
| Çalışma saatleri | shipments[].pickups[].timeWindows veya shipments[].deliveries[].timeWindows |
Bir konumun ziyaret edilebileceği saatleri ayarlar. Bir araç bu zaman aralığında varamazsa sevkiyat atlanır. |
| Vardiya uzunluğu sınırı | vehicles[].routeDurationLimit |
Genel bitiş zamanından bağımsız olarak, belirli bir sürücünün ne kadar süre çalışabileceğine dair kesin veya esnek bir sınır (ör. maksimum 8 saat) belirler. |
| Sürücü molaları | vehicles[].breakRule |
Belirli çalışma saatlerinden sonra zorunlu molalar gibi belirli dinlenme kurallarını uygular. |
| Yol kısıtlamaları | vehicles[].travelMode |
Seyahat modunu (ör. DRIVE veya BICYCLE) belirtir. Bu, rotayı yasal yollarla kısıtlar ve seyahat sürelerini hesaplamak için kullanılan hızları belirler. |
Hedef eşleme
| Gerçek hayattaki hedef | API parametresi | Açıklama |
|---|---|---|
| Filo boyutunu en aza indirme | vehicles[].fixedCost |
Araç kullanımı için tek seferlik bir maliyet uygular. Yüksek bir sabit maliyet, rotanın toplam mesafeyi veya çalışma süresini artırmak yerine daha az araç kullanmaya öncelik vermesine neden olur. |
| Mesafeyi en aza indirme | vehicles[].costPerKilometer |
Kat edilen her kilometre için bir maliyet uygular. Yakıt tasarrufu yapmak ve aşınmayı azaltmak için daha kısa rotalara öncelik verir. |
| Toplam süreyi en aza indirme | vehicles[].costPerHour |
Aracın aktif olduğu her saat için (seyahat ve bekleme süresi dahil) bir maliyet uygular. Daha hızlı tamamlamaya öncelik verir. |
| Sürüş süresini en aza indirme | vehicles[].costPerTraveledHour |
Özellikle hareket halinde geçirilen süre için bir maliyet uygular. Bu sayede, trafikte bekleme (pahalı) ile durakta bekleme(potansiyel olarak daha ucuz) arasında ayrım yapılır. |
| Belirli görevlere öncelik verme | shipments[].penaltyCost |
Belirli bir gönderi atlanırsa maliyet uygular. Bu değeri yüksek olarak ayarlamak, kritik görevlerin isteğe bağlı görevlere göre önceliklendirilmesini sağlar. |
İsteği oluşturma ve yanıt alma
Route Optimization API'yi kullanarak rota planı oluşturmak için aşağıdaki adımları uygulayın:
- Ortamınızı yapılandırma: Google Cloud projenizi oluşturun, API'yi etkinleştirin ve kimlik doğrulamasını yapılandırın. Talimatlar için Başlangıç bölümüne bakın. Bu adımı yalnızca bir kez uygulamanız yeterlidir.
- İsteği gönderme: Önceki bölümde tanımlanan veri eşlemeyi kullanarak istek gövdesini oluşturun. Uç noktalar, üstbilgiler ve istek biçimlendirme hakkında bilgi edinmek için API isteği gönderme başlıklı makaleyi inceleyin.
- Yanıtı anlama: API'den yanıt aldıktan sonra rota planını ve her parametrenin ne anlama geldiğini anlayın. Yanıtları yorumlama başlıklı makaleyi inceleyin.
Rota planınızı hassaslaştırma
Gerçek dünyadaki lojistik süreçlerini API maliyetlerine ve kısıtlamalarına dönüştürmek karmaşık bir görevdir. İlk rota planınız, işletme hedeflerinize veya sürücü beklentilerinize uymayabilir. Rota planınızı hassaslaştırmak, döndürülen rotalarınızı test etme ve hedeflerinize ulaşan bir kurulum bulana kadar parametrelerinizi ayarlama sürecidir.
Hedefleri ve kısıtlamaları ayarlama
Oluşturulan rota planı ihtiyaçlarınızı karşılamıyorsa farklı sonuçlar elde etmek için belirli parametreleri değiştirebilirsiniz. Parametreleri sıkılaştırmak veya gevşetmek, rota planında çelişen hedeflerin nasıl çözüleceğini değiştirir. Parametreleri gevşetmek, rota planlarınızda hatalara neden olan parametreleri keşfetmenin etkili bir yoludur.
Aşağıdaki tabloda, sık karşılaşılan yönlendirme sorunları ve bunları çözmek için ayarlayabileceğiniz parametreler listelenmiştir.
| Senaryo | Parametre | Ayarlama | Açıklama |
|---|---|---|---|
| Önemli bir gönderi atlandı | shipments[].penaltyCost |
Değerini artırın veya diğer gönderilere ceza maliyetleri ekleyin. | Gönderi isteğe bağlıysa öncelik vermek için ceza maliyetini artırın. Gönderim zorunluysa (ceza maliyeti yoksa) diğer, daha az kritik gönderimlere ceza maliyetleri ekleyin. Bu sayede, isteğe bağlı hale gelen bu gönderimler için araç zamanı ve kapasitesi harcanmaz ve önemli gönderimler için daha fazla kaynak ayrılabilir. |
| Zamanlama nedeniyle gönderim atlandı | softStartTime/softEndTime |
Esnek zaman aralıkları ekleme | Katı zaman aralıkları, bir dakika bile geciken görevleri iptal eder. Esnek zaman aralıkları, sürücünün görevi tamamlayamaması yerine bir "maliyet" ödeyerek planlanan zamandan biraz farklı bir zamanda varmasına olanak tanır. |
| Ağırlık nedeniyle gönderim atlandı | loadLimits[].softMaxLoad ve costPerUnitAbove |
Yumuşak yük talepleri ekleme | Bir aracın, bir paketi geride bırakmak yerine ideal kapasitesini biraz aşmasına (ceza karşılığında) olanak tanır. |
| Filo aşırı yüklendiği için gönderim atlandı | model.vehicles[] veya shipments[].timeWindows |
Araç ekleyin veya zaman aralıklarını esnetin | Mevcut filo için çok fazla gönderi varsa (özellikle yoğun saatlerde) iş yükünü dağıtmak için daha fazla araç ekleyin veya teslimat aralıklarını genişletin. |
| Rotalar çok uzun veya verimsiz | vehicles[].costPerKilometer/costPerHour |
Maliyet ekleme veya maliyet değerini artırma | API'ye seyahatin pahalı olduğunu bildirerek filonun daha sıkı rotalar oluşturması için uzak ve izole durakları bırakmasını teşvik eder. |
| Sürücü vardiyaları çok uzun | vehicles[].routeDurationLimit veya model.vehicles[] |
Süre sınırları ekleyin veya araç ve sınır ekleyin | Sürücünün yolda geçirdiği toplam süreye kesin bir sınır (ör. 8 saat) koyar. Çözücüyü iş yükünü daha büyük bir filoya dağıtmaya zorlamak için süre sınırları da uygulamadığınız sürece, yalnızca araç eklemek rotaları kısaltmaz. |
Rota planını güncelleme
Genellikle bir rota planını güncellerken temel planı aynı tutmanız gerekir. Örneğin, aktif bir sürücünün programına teslim alma işlemi ekleyebilirsiniz. Bunu yapmak için ekleme parametrelerini kullanın. Bu parametreler, API'ye önceki çözümünüze dayalı bir başlangıç noktası sağlayarak sıfırdan yeni bir plan hesaplamak yerine mevcut planı değiştirmesine olanak tanır.
Aşağıda, ekleme parametreleriyle rota planını güncellemenin farklı yolları verilmiştir:
- Önceki bir yanıttaki rotaları yeni isteğinizin
injectedFirstSolutionRoutesalanına iletin. Bu, optimizasyon aramasını hızlandırır ve günlük operasyonlar başlamadan önce yeniden planlama yapmak (ör. son dakika gönderilerini entegre etmek) için kullanışlıdır. injectedSolutionConstraintalanını kullanarak değişiklik derecesini kontrol edin. Bu, işlemler devam ederken kullanışlıdır. Sürücünün mevcut sırasını korumanıza veya planın zaten yürütülmüş olan kısımlarını düzeltmenize olanak tanır.interpretInjectedSolutionsUsingLabelsdeğerinitrueolarak ayarlayarak güncellenen rotanın doğru araca atanmış olarak kalmasını sağlayın. Bu, deneme sırasında gönderi ve araç eklerken veya kaldırırken faydalıdır. Çünkü rotaları dizinler yerine etiketleri kullanarak eşleştirir. Bu durumda tüm araç ve kargo etiketlerinin benzersiz olması gerekir.
Rota planınızı entegre etme
Nihai rota planınız, kısıtlamalarınıza ve hedeflerinize uyarken kaynaklarınızın ve görevlerinizin optimize edilmiş yönetimini temsil eden bir veri nesnesidir. Bu rota planını sisteminize entegre ederek günlük operasyonlarınızda kullanın. Bu genellikle filo yöneticileri için rota planınızı görselleştirmeyi ve sürücülere adım adım talimatlar göndermeyi içerir.
Görselleştirme
Filo yöneticilerinin rota planınızı doğrulayıp izlemesine olanak tanımak için rota planınızı aşağıdaki şekillerde görselleştirebilirsiniz:
Filo yöneticilerinin rota planınızı doğrulayıp izlemesine izin vermek için planı kontrol paneli haritasında gösterebilirsiniz. Mevcut geliştirme aşamanıza bağlı olarak rota planınızı aşağıdaki şekillerde görselleştirebilirsiniz:
- Kod kullanmadan keşfedin: API'nin verilerinizi harita üzerinde fiziksel yollara nasıl dönüştürdüğünü görmek için açık kaynaklı Route Optimization uygulamasını kullanabilirsiniz. Bu web uygulaması, kod yazmadan önce senaryolar oluşturmanıza, kısıtlama parametrelerini ayarlamanıza ve elde ettiğiniz rota planlarını görsel olarak oluşturmanıza olanak tanıyan bir keşif aracıdır.
- Ziyaret sırasını görüntüleme: Optimizasyon ve sevkiyat planlarınızı kendi sisteminizde değerlendirmek için ziyaret sırasını harita üzerinde numaralandırılmış noktalar olarak gösterebilirsiniz. Bunun için API yanıtının her rotasındaki
visitsdizisini bulun. Bu dizideki öğeler, sürücünün bunları yürütmesi gereken sıraya göre sıralanır. Bu listede yineleme yapabilir, her durağın konum koordinatlarını almak içinshipmentIndexkullanabilir ve harita kitaplığınızı kullanarak haritada numaralandırılmış işaretçileri listedeki sıralarına göre oluşturabilirsiniz. - Fiziksel rotayı çizme: Optimizasyon aracının neden belirli bir sırayı seçtiğini anlamak için planlanan rotayı harita üzerinde tam olarak görselleştirebilirsiniz. Bu çoklu çizgi, planlama ve değerlendirme için amaçlanan yolu temsil eder, sürücünün gerçek zamanlı olarak izlediği rotayı göstermez. Her rota için bir
encodedPolylinealanı almak üzere isteğinizdepopulatePolylines: truedeğerini ayarlayın ve Maps JavaScript API'dekigoogle.maps.geometry.encoding.decodePath()yöntemini kullanarak bu alanın kodunu çözün.
Sürücülere sevk etme
Navigasyon SDK'sını kullanarak adım adım yol tarifini sürücü uygulamanıza entegre edebilir veya Google Haritalar tüketici uygulamasına derin bağlantılar sağlayabilirsiniz.
- Navigasyon SDK'sı: Özel bir sürücü uygulamanız varsa uygulama içi adım adım rehberlik için Android veya iOS için Navigasyon SDK'sını entegre edebilirsiniz.
API yanıtındaki görev bilgilerini sisteminize entegre edebilir ve navigasyon için SDK'yı kullanabilirsiniz. API yanıtındaki rotaları SDK'ya iletmek için isteğinizde
populateTransitionPolylines: truedeğerini ayarlayın. Bu işlem, yanıttaki her geçiş için birrouteTokenoluşturur. - Fleet Engine: Gelişmiş filo yönetimi için API tarafından oluşturulan rota planını Fleet Engine'a aktararak rota uygulamasını gerçek zamanlı olarak izleyebilirsiniz. API, değerlendirme için amaçlanan yolun çoklu çizgisini sağlarken Filo Motoru, planlanan ziyaret sıranızı canlı araç takibiyle eşleştirir.