Distance matrix, çok sayıda başlangıç ve çok sayıda hedef arasındaki seyahat süreleri ile mesafelerin oluşturduğu bir ızgaradır. Her "en yakın mağaza" sıralamasının, her teslimat sevkiyat kararının ve her rota optimizasyon çözücüsünün arkasındaki veri yapısıdır. Bir uygulama sürüş süresine göre çok sayıda aday arasından en iyiyi seçmek zorunda kaldığında, altta bir distance matrix iş başındadır.
Bu rehber, bir distance matrix'in gerçekte ne olduğunu, seyahat süresinin düz çizgi mesafesinden nasıl farklı olduğunu, üretim sistemlerinde nerelerde kullanıldığını ve girdi kümesi birkaç noktayı aştığında ekipleri hangi tuzakların ısırdığını açıklar.
Distance Matrix Gerçekte Nedir
En basit haliyle distance matrix iki boyutlu bir tablodur. Satırlar başlangıçlar, sütunlar hedeflerdir ve her hücre iki sayı tutar: bir mesafe ve bir süre. N başlangıç ve M hedefle matris N çarpı M hücreye sahiptir. 25 sürücü ve 25 işle yapılan bir istek, tek çağrıda 625 hücre üretir.
Bu hücrelerdeki değerler, gerçek bir yol ağı grafiğinde dolaşan bir routing motorundan gelir. Her başlangıçtan her hedefe en hızlı yolu seçer, segment maliyetlerini toplar ve toplamı döndürür. Bu, iki koordinat arasında düz çizgi çizen ve binaların, nehirlerin ve tek yönlü caddelerin var olduğunu yok sayan haversine hesaplamasından temelde farklıdır.
Bir koordinat çifti, iki noktanın nerede olduğunu söyler. Distance matrix ise aralarında yol almanın gerçekten neye mal olduğunu söyler.
Distance ve Duration
Üç farklı sayı sıklıkla "distance" olarak adlandırılır ve bunları karıştırmak routing kodundaki en yaygın hatadır.
Haversine distance, iki enlem-boylam çifti arasındaki büyük daire mesafesidir. Hesaplaması hızlıdır, ağ çağrısı gerektirmez ve sürmeyi içeren her görev için yanlıştır. 2 km haversine mesafesi, geçemeyeceğiniz nehri hesaba kattığınızda 7 km'lik bir sürüş olabilir.
Yol ağı mesafesi, gerçek sürülebilir yolun uzunluğudur. Tek yönlü caddeleri, dönüş kısıtlamalarını ve yol grafiğinin topolojisini hesaba katar. Distance matrix API'sinin distance alanında döndürdüğü budur.
Trafikli duration, mevcut veya tahmini trafik koşullarında yolculuğun ne kadar süreceğidir. 12 km'lik bir otoyol segmenti 02:00'de altı dakika, 17:30'da yirmi beş dakika sürer. ETA'larla ilgilenen üretim sistemleri trafik farkındalıklı duration ister ve bir kalkış zamanı iletir, böylece routing motoru sıkışıklığı doğru modelleyebilir.
Sıralama ve sevkiyat için duration neredeyse her zaman distance'tan üstündür. Bir sürücü, yakın olan iş 800 metre daha uzaktaysa ve sürüşten dört dakika kazandırıyorsa bunu önemsemez.
Distance Matrix Nerede Kullanılır
Distance matrix'ler, lojistik ve konum farkındalıklı özelliklerin çoğunun altında sessizce çalışır.
- Teslimat sürücüsü ataması: bekleyen her sipariş, mevcut her sürücüye karşı eşleştirilir. Sevkiyatçı, araç kapasitesi ve vardiya kısıtlamalarına uyan en düşük süreye sahip hücreyi seçer
- Filo sevkiyatı ve dengeleme: ride-hailing ve son kilometre platformları, araçları binicilerin yakınında tutmak için araçlar ile talep bölgeleri arasındaki matrisleri her birkaç saniyede bir hesaplar
- Mağaza ve mekân locator sıralaması: locator, haversine'a göre en yakın beş mağazayı döndürmek yerine kullanıcının konumundan adaylara küçük bir matris hesaplar ve sürüş süresine göre sıralar
- Ölçekte ETA hesaplamaları: aynı anda birçok siparişi olan marketplace'ler, binlerce tek rota isteği yerine ETA'ları matris çağrılarına toplar
- VRP çözücüleri: vehicle routing problem çözücüleri (OR-Tools, jsprit, ticari optimizerler) girdi olarak tam bir maliyet matrisi gerektirir. Routing çözümünün kalitesi, beslediğiniz matrisin kalitesiyle sınırlıdır
- Lokasyon seçimi ve bölge planlaması: analistler, toplam sürüş süresini en aza indiren depoyu seçmek için aday lokasyonlar ile müşteri kümeleri arasındaki matrisleri hesaplar
Tüm bu durumlarda matris toplu hesaplama ilkesi olarak çalışır. Bir sistemin "çok sayıda adaydan en iyisini" seçmesini, N çarpı M tek tek routing çağrısı maliyetini ödemeden mümkün kılar.
Üretimdeki Tuzaklar
Distance matrix'ler ilk gün kolaydır, ardından hızla zorlaşır.
Asimetri varsayılandır. Gerçek yol ağlarında tek yönlü caddeler, bölünmüş yollar ve asimetrik dönüş maliyetleri vardır. (A, B) hücresi nadiren (B, A) hücresine eşittir. Belleği korumak için matrisi simetrik kabul etmek, sevkiyat sistemlerinde ters yönlü routing'in klasik nedenlerinden biridir.
N çarpı M maliyeti. 100'e 100'lük bir matris 10.000 hücredir. 500'e 500'lük bir matris 250.000 hücredir. Maliyet ve gecikme kuadratik büyür. Üretim sistemlerinin çoğu matrisleri parçalara böler (50'ye 50 veya 100'e 100), istekleri paralelleştirir ve sabit bir depo kümesi ile sabit bir mağaza kümesi arasındaki matris gibi sık değişmeyen sonuçları cache'ler.
Günün saatine göre değişkenlik. 03:00'te hesaplanan bir matris 17:00'de geçerli değildir. Sevkiyat mantığınız trafiğe bağlıysa, karar anında trafik farkındalıklı bir matris isteyin veya küçük bir zaman aralıklı matris kümesini önceden hesaplayın (sabah yoğun saat, sakin saat, akşam yoğun saat) ve doğru olanı seçin.
Batching ve rate limit. Distance matrix API'leri istek başına değil eleman başına ücretlendirme yapar ve çoğu sağlayıcı tek çağrı boyutunu sınırlar. Ölçekte keşfetmek yerine ilk günden chunking ve back-pressure planlayın.
Koordinat kalitesi içeride, çöp dışarıda. Bir matris, onu besleyen koordinatlar kadar iyidir. Bölünmüş bir otoyolun yanlış tarafına düşen bir geocode, çılgınca yanlış bir duration üretir. Matris isteğine girmeden önce girdi koordinatlarını doğrulayın.
MapAtlas'ta Distance Matrix
MapAtlas Distance Matrix API, gerçek bir Avrupa ve global yol ağı üzerinde tam N'ye M'lik seyahat süresi ve mesafe matrisleri hesaplar. Otomobil, kamyon, bisiklet ve yaya profillerini destekler, kalkış zamanlı trafik farkındalıklı istekleri kabul eder ve gerçek sevkiyat ile optimizasyon iş yüklerinin gerektirdiği batch boyutları için kurulmuştur.
Sıralamanın ötesindeki iş yükleri için Distance Matrix API, Optimize Route API ile doğal olarak birlikte çalışır; bu API bir matris ve bir durak kümesi alıp toplam sürüş süresini en aza indiren sıralı bir rota döndürür. Ayrıca aday kümesini matris çağrısından önce küçülten "X dakikada ulaşılabilen her şey" filtreleri için Isochrone API ile de eşleşir.
Distance matrix gösterişli değildir. Sadece bir sayı ızgarasıdır. Ama "çok sayıda adaydan en iyisini bul" sorusunu N çarpı M routing kabusundan tek bir toplu isteğe dönüştüren sayı ızgarasıdır ve bu tek veriyi doğru almak, gerçek bir lojistik ürününü haritada beş pinli bir demodan ayıran şeydir.
Sıkça Sorulan Sorular
Distance matrix nedir?
Distance matrix, bir başlangıç kümesi ile bir hedef kümesi arasındaki seyahat süreleri ve mesafelerinin oluşturduğu N'ye M'lik bir ızgaradır. Her hücre tek bir soruyu yanıtlar: i başlangıcından j hedefine gitmek ne kadar sürer ve mesafe nedir? Modern distance matrix API'leri değerleri düz çizgi mesafeleri olarak değil gerçek bir yol ağı üzerinde hesaplar; bu sayede tek yönlü caddeleri, dönüş kısıtlamalarını ve sürülebilir geometriyi hesaba katar.
Distance ile duration arasındaki fark nedir?
Distance, yol ağı boyunca metre veya kilometre cinsinden ne kadar yol kat ettiğinizdir. Duration ise saniye cinsinden ne kadar sürdüğüdür; hız limitlerini, trafiği ve yol sınıfını hesaba katar. İkisi birbirinin yerine kullanılamaz. İki rota aynı mesafeye ve çok farklı sürelere sahip olabilir ve üretim kullanım senaryolarının çoğu (ETA, sevkiyat, sıralama) duration ile ilgilenir. İyi bir distance matrix API, her hücre için her ikisini de döndürür.
Tek tek rota yerine ne zaman distance matrix kullanmalıyım?
Birçok adayı karşılaştırmanız gerektiğinde distance matrix kullanın: elli mağazadan en yakın beşini sıralamak, yirmi sürücüden en yakın olanına teslimat atamak veya bir vehicle routing problem çözücüsünü beslemek gibi. Tek bir routing endpoint'ini N'ye M kez çağırmak yavaş ve pahalıdır. Bir matrix endpoint'i aynı veriyi tek istekte, toplu hesaplama için optimize edilmiş şekilde döndürür.
Distance matrix simetrik midir?
Gerçek yol ağlarında neredeyse hiçbir zaman değildir. A'dan B'ye sürüş, tek yönlü caddeler, bölünmüş otoyollar, dönüş kısıtlamaları ve asimetrik trafik nedeniyle B'den A'ya sürüşle nadiren aynıdır. Üretim distance matrix API'si üçgen yarım değil, tam N'ye M'lik bir ızgara döndürür. Belleği koruyacağım diye matrisi daraltırsanız, sürücüleri yolun yanlış tarafına yönlendirirsiniz.

