Rota planı yaşam döngüsü

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.

Aşağıdaki metinde açıklanan rota planının yaşam döngüsünü gösteren akış şeması

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:

  1. 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.
  2. 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.
  3. Talep oluşturma ve rota planı alma: Verilerinizi API'ye girin ve optimize edilmiş rota planınızı alın.
  4. 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.
  5. 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
  • Sayı: Kaç aracınız var?
  • Konumlar: Araçlar nereden başlayıp nerede bitiyor?
  • Zaman: Araç sürücülerinin çalışma saatleri nedir?
  • Kapasite: Araçlarınızın sınırları nelerdir?
  • Maliyetler: Filonuzu işletmenin maliyetleri nelerdir?
  • Konumlar: Teslim alma ve teslimat noktaları nerede?
  • Talepler: Paketlerin ağırlığı veya boyutu nedir?
  • Kısıtlamalar: Teslimat için belirli zaman aralıkları var mı?
  • Hizmet süresi: Sürücünün park edip yükü boşaltması ne kadar sürer?
  • Koşullar: Gönderi için belirli bir araç türü veya sürücü gerekiyor mu?

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[].startWaypoint
vehicles[].endWaypoint
Aracın rotasına başladığı ve rotasını bitirdiği konum.
Çalışma saatleriniz model.globalStartTime
model.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[].arrivalWaypoint
deliveries[].arrivalWaypoint
İşin gerçekleştiği coğrafi konum.
Servis süresi pickups[].duration
deliveries[].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:

  1. 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.
  2. İ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.
  3. 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 injectedFirstSolutionRoutes alanı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.
  • injectedSolutionConstraint alanı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.
  • interpretInjectedSolutionsUsingLabels değerini true olarak 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 visits dizisini 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 üzere shipmentIndex öğ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 encodedPolyline alanı almak üzere isteğinizde populatePolylines: true değerini ayarlayın ve Maps JavaScript API'deki google.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: true değerini ayarlayın. Bu işlem, yanıttaki her geçiş için routeToken oluş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.