Bu sayfada, yönlendirme ihtiyaçlarınızı belirlemekten sisteminizde entegre bir rota planı oluşturmaya kadar, Rota Optimizasyonu API'si kullanılarak oluşturulan bir rota planının yaşam döngüsü açıklanmaktadır.
Rota planının aşamalarını uyguladığınızda aşağıdaki hedeflere ulaşabilirsiniz:
- Filo operasyonlarınızı haritalayın: 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 edin: Rota planınızı hedeflerinize ulaşacak ve günlük operasyonlarınızı iyileştirecek şekilde nasıl düzenleyeceğinizi öğ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.
Bir rota planının uygulama aşaması, API'yi ilk kez entegre ettiğinizde veya iş gereksinimleriniz önemli ölçüde değiştiğinde gerçekleşir. 1-5. aşamaları kapsar.
Günlük işlemler aşaması daha hafiftir ve iyileştirme en az düzeydedir. 2-4. aşamaları kapsar.
Bir rotanın yaşam döngüsü aşamaları şunlardır:
- Sorununuzun kapsamını belirleyin: API'yi kullanmaya başlamadan önce işlemlerinizle ilgili eksiksiz bir görünüm elde etmek için hedeflerinizi, kaynaklarınızı, görevlerinizi ve kısıtlamalarınızı belirleyip düzenleyin.
- Verilerinizi eşleyin: İşletmenizin gerçekliğini API parametrelerine çevirerek rota planının filonuzun nasıl çalışmasını istediğinizi yansıtmasını sağlayın.
- Talep oluşturma ve rota planı alma: Verilerinizi API'ye girin ve optimize edilmiş rota planınızı alın.
- Rota planınızı iyileştirin: 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ı yineleyin.
- Rota planını entegre edin: Rota planını mevcut sistemlerinize bağlayarak uygulanabilir navigasyon sağlayın.
Sorununuzun kapsamını belirleyin
API'yi kullanmadan önce günlük işlemlerinizin ayrıntılarını net veri kategorileri halinde düzenlemeniz gerekir. Bu sayede, mevcut kaynaklarınız ve görevleriniz, bunları kısıtlayan faktörler ve filonuzla ulaşmak istediğiniz hedefler konusunda net bir şekilde uygulama sürecinizi başlatabilirsiniz.
Kaynaklarınızı ve görevlerinizi belirleme
Rota planınızı yaparken önemli bir adım, kaynaklarınızı ve görevlerinizi (araçlarınız ve gönderileriniz) belirlemektir.
| Araçlar | Kargolar |
|---|---|
|
|
Kısıtlamalarınızı belirleme
Kısıtlamalarınız, araçlarınızı nasıl kullanabileceğiniz ve gönderilerinizi nasıl taşımanız gerektiğiyle ilgili sınırlar ve kısıtlamalardır. Bunlar işlemlerinizin çoğunu belirler ve optimize edilmiş bir rota planı oluştururken hayati önem taşır.
Kısıtlamalar genellikle iki kategoriye ayrılır:
| Kesin kısıtlamalar | Yumuşak kısıtlamalar |
|---|---|
| Bunlar aşılamayan sınırlardır. Örneğin, bir kamyon maksimum kapasitesinden daha fazla ağırlık taşıyamaz ve bir sürücü, mağaza kapandıktan sonra teslimat yapamaz. | Bunlar, gerekirse ihlal edilebilen tercihlerdir ve genellikle ceza maliyetiyle sonuçlanı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şabilirsiniz. |
Yaygın 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 yerin ziyaret için 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ı: Sürücülerin belirli bir çalışma saatinden sonra iş kanunları uyarınca genellikle zorunlu olan dinlenme süreleri.
İş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 olan şeye karar vermenize yardımcı olur.
İşletme hedeflerine dair bazı örnekler:
| Filo büyüklüğü | Mesafe | Saat | 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ıttan tasarruf etmek için en kısa yolu mu yoksa otoyolların kullanılması nedeniyle daha uzun olabilecek daha hızlı bir rotayı mı tercih ediyorsunuz? | Çalışılan toplam süreyi en aza indirmek mi istiyorsunuz yoksa belirli zamanlarda varışa öncelik vererek yolda geçirilen süreyi uzatmak mı istiyorsunuz? | Ücret ve yakıt gibi işletme giderlerini en aza indirmek mi yoksa katı son tarihlere 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 haritalandırın. Bu sayede optimizasyon aracı, işletmenizin gerçekliğini dikkate alan bir rota planı döndürmek için gereken tüm bilgilere sahip olur.
Sorununuzun 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 hayattaki 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
|
Filo genelinin operasyonuna başlanabilecek en erken ve operasyonun bitirilebileceği en geç zaman. |
| Görev veya paket | model.shipments[] |
Bir işi temsil eder. pickup, delivery veya her ikisi de olabilir. |
| Görev konumu |
pickups[].arrivalWaypointdeliveries[].arrivalWaypoint
|
İşin gerçekleştiği coğrafi konum. |
| Servis süresi |
pickups[].durationdeliveries[].duration
|
Seyahat süresi hariç, görev tamamlanırken (ör. boşaltma) konumda geçirilen süre. |
Kısıtlama eşleme
| Gerçek hayattaki kısıtlamalar | API parametresi | Açıklama |
|---|---|---|
| Araç kapasitesi | vehicles[].loadLimits |
Araç kapasitesi için kesin veya esnek sınırı ayarlar. Bir gönderinin loadDemand değeri kalan limiti aşıyorsa bu gönderi atanmaz. |
| Paket boyutu | shipments[].loadDemands |
Bir gönderinin kullandığı 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 yeri ziyaret etmek için uygun saatleri ayarlar. Bu süre içinde teslimat noktasına ulaşamayan araçlar için gönderim 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 ilişkin kesin veya esnek bir sınır belirler (örneğin, maksimum 8 saat). |
| Sürücü molaları | vehicles[].breakRule |
Belirli dinlenme kurallarını (ör. belirli bir süre çalıştıktan sonra zorunlu molalar) uygular. |
| Yol kısıtlamaları | vehicles[].travelMode |
Seyahat şeklini (ör. DRIVE veya BICYCLE) belirtir. Bu, rotayı yasal yollarla sınırlar 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 maliyet uygular. Yüksek sabit maliyet, bir 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 |
Gidilen her kilometre için maliyet uygular. Yakıt ve aşınma maliyetini azaltmak için daha kısa rotalara öncelik verir. |
| Toplam süreyi en aza indirme | vehicles[].costPerHour |
Aracın etkin olduğu her saat için (seyahat ve bekleme süresi dahil) maliyet uygulanır. Daha hızlı tamamlamaya öncelik verir. |
| Sürüş süresini en aza indirme | vehicles[].costPerTraveledHour |
Özellikle hareket etme süresi için bir maliyet uygular. Bu, trafikte oturma (pahalı) ile durakta bekleme(daha ucuz olabilir) arasında ayrım yapar. |
| Belirli görevlere öncelik verme | shipments[].penaltyCost |
Belirli bir gönderim atlanırsa maliyet uygulanır. Bu ayarı yüksek olarak ayarladığınızda kritik görevlere isteğe bağlı görevlerden daha fazla öncelik verilir. |
İsteği oluşturma ve yanıt alma
Rota planı oluşturmak için Rota Optimizasyonu API'sini kullanma aşağıdaki adımları içerir:
- Ortamınızı yapılandırın: Google Cloud projenizi oluşturun, API'yi etkinleştirin ve kimlik doğrulamayı yapılandırın. Talimatlar için Başlangıç başlıklı makaleyi inceleyin. Bu adımı yalnızca bir kez uygulamanız gerekir.
- İsteği gönderin: Önceki bölümde tanımlanan veri eşlemeyi kullanarak istek gövdesini oluşturun. Uç noktalar, üstbilgiler ve istek biçimlendirmesi hakkında bilgi edinmek için API isteği oluşturma başlıklı makaleyi inceleyin.
- Yanıtı anlama: API'den yanıt aldıktan sonra rota planını ve her bir parametrenin ne anlama geldiğini anlayın. Yanıtı yorumlama başlıklı makaleyi inceleyin.
Rota planınızı hassaslaştırın
Gerçek dünyadaki lojistiği API maliyetlerine ve kısıtlamalarına dönüştürmek karmaşık bir görevdir. İlk rota planınız, işletme hedeflerinizle veya sürücü beklentilerinizle eşleşmeyebilir. Rota planınızı iyileştirmek, döndürülen rotalarınızı test etme ve hedeflerinize ulaşmanızı sağlayacak 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. Parametrelerin sıkılaştırılması veya gevşetilmesi, rota planında çakışan hedeflerin nasıl çözüldüğünü değiştirir. Parametrelerin gevşetilmesi, 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 atlanıyor | shipments[].penaltyCost |
Değerini artırın veya diğer gönderimlere ceza maliyetleri ekleyin | Gönderim isteğe bağlıysa öncelik vermek için ceza maliyetini artırın. Gönderim zorunluysa (ceza maliyeti yoksa) ceza maliyetlerini diğer, daha az kritik gönderimlere ekleyin. Bu sayede, önemli gönderi için araç zamanı ve kapasitesi boşaltılarak bu gönderiler isteğe bağlı hale getirilir. |
| Zamanlama nedeniyle gönderim atlandı | softStartTime/softEndTime |
Esnek zaman aralıkları ekleme | Kesin zaman aralıkları, bir dakika bile geciken görevleri bırakır. Esnek zaman aralıkları, sürücünün görevi başarısız kılmak yerine "maliyet" ödeyerek programa göre biraz geç gelmesine olanak tanır. |
| Ağırlık nedeniyle kargo atlandı | loadLimits[].softMaxLoad ve costPerUnitAbove |
Yavaş yükleme talepleri ekleme | Bir paketi geride bırakmak yerine, aracın 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ç ekleme veya rahatlatıcı zaman aralıkları | Mevcut filonun taşıyabileceğinden ç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 değerlerini artırma | API'ye seyahatin pahalı olduğunu bildirerek filonun daha kısa rotalar oluşturması için uzak ve izole durakları bırakmasını sağlar. |
| Sürücü vardiyaları çok uzun | vehicles[].routeDurationLimit veya model.vehicles[] |
Süre sınırları ekleme veya araç ve sınır ekleme | Sürücünün yolda geçirdiği toplam süreye katı bir üst sınır (örneğin, 8 saat) uygular. Çözücünün iş yükünü daha büyük filo genelinde dağıtmasını zorlamak için süre sınırları da uygulamazsanız yalnızca araç eklemek rotaları kısaltmaz. |
Rota planını güncelleme
Genellikle bir rota planını temelini değiştirmeden güncellemeniz gerekir. Örneğin, etkin bir sürücünün programına bir teslim alma işlemi eklemeniz gerekebilir. Bunu yapmak için, API'ye önceki çözümünüze göre bir başlangıç noktası sağlayan ve yeni bir planı sıfırdan hesaplamak yerine mevcut planı değiştirmesine olanak tanıyan ekleme parametrelerini kullanın.
Aşağıda, bir rota planını ekleme parametreleriyle güncelleyebileceğiniz farklı yöntemler verilmiştir:
- Önceki bir yanıttaki rotaları yeni isteğinizin
injectedFirstSolutionRoutesalanına iletin. Bu işlem, optimizasyon aramasını hızlandırır ve günlük işlemler başlamadan önce yeniden planlama yapmak (ör. son dakika gönderilerini entegre etmek) için kullanışlıdır. injectedSolutionConstraintalanını kullanarak değişim derecesini kontrol edin. Bu özellik, işlemler zaten devam ederken kullanışlıdır. Sürücünün mevcut sırasını korumanıza veya planın halihazırda yürütülmüş kısımlarını düzeltmenize olanak tanır.interpretInjectedSolutionsUsingLabelsdeğerinitrueolarak ayarlayarak güncellenen rotanın doğru araca atanmaya devam etmesini sağlayın. Bu, gönderi ve araç ekleme veya kaldırma işlemlerinde deneme yaparken kullanışlıdır. Çünkü rotaları dizinler yerine etiketleri kullanarak eşleştirir. Bu, tüm araç ve kargo etiketlerinin benzersiz olmasını gerektirir.
Rota planınızı entegre etme
Sonlandırılmış rota planınız, kısıtlamalarınızı ve hedeflerinizi takip ederken 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 izin vermek 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 rota planınızı bir 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 yazmadan keşfedin: API'nin verilerinizi haritada fiziksel yollara nasıl dönüştürdüğünü görmek için açık kaynaklı Rota Optimizasyonu uygulamasını kullanabilirsiniz. Bu web uygulaması, senaryolar oluşturmanıza, kısıtlama parametrelerini ayarlamanıza ve herhangi bir kod yazmadan önce ortaya çıkan rota planlarınızı görsel olarak oluşturmanıza olanak tanıyan keşif amaçlı bir araçtır.
- Ziyaret sırasını görüntüleme: Kendi sisteminizdeki optimizasyon ve dağıtım planlarınızı değerlendirmek için ziyaret sırasını haritada numaralandırılmış noktalar olarak gösterebilirsiniz. Bunu yapmak için API yanıtının her rotasında
visitsdizisini bulun. Bu dizideki öğeler, sürücünün bunları uygulaması gerektiği şekilde sıralanır. Bu listede yineleme yapabilir, her durak için konum koordinatlarını almak üzereshipmentIndexöğesini kullanabilir ve listedeki sıraya göre haritada numaralandırılmış işaretçiler oluşturmak için harita kitaplığınızı kullanabilirsiniz. - Fiziksel rotayı çizin: Optimizasyon aracının neden belirli bir sırayı seçtiğini anlamak için planlanan rotayı harita üzerinde görselleştirebilirsiniz. Bu çoklu çizgi, sürücünün gerçek zamanlı olarak kullandığı rotayı değil, planlama ve değerlendirme için amaçlanan yolu gösterir. 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 kodu çözün.
Sürücülere gönderme
Navigation SDK'yı 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.
- Navigation SDK: Özel bir sürücü uygulamanız varsa uygulama içi adım adım yol tarifi için Android için Navigation SDK veya iOS'i entegre edebilirsiniz.
API yanıtındaki görev bilgilerini sisteminize entegre edebilir ve gezinme 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çinrouteTokenoluşturur. - Fleet Engine: Gelişmiş filo yönetimi için API tarafından oluşturulan rota planını Fleet Engine'e aktararak rota yürütmeyi gerçek zamanlı olarak izleyebilirsiniz. API, değerlendirme için amaçlanan yolun bir çoklu çizgisini sağlarken Fleet Engine, planlanan ziyaret sıranızı canlı araç takibiyle eşleştirir.