Boylam ve enlem koordinatları verilen optimize edilmiş bir yürüyüş listesini nasıl oluşturursunuz?


10

Önümüzdeki birkaç hafta boyunca düzinelerce gönüllünün kapı vurma promosyonu düzenleyeceği siyasi bir kampanya üzerinde çalışıyorum. Adları, adresleri ve uzun / lat koordinatlarını içeren bir liste verildiğinde, optimize edilmiş bir yürüyüş listesi oluşturmak için hangi algoritmalar kullanılabilir.


3
Çapraz gönderi zayıf bir formda görünüyor. Bu neden SQL etiketli?
Hava

(Yaklaşık) gezici satıcı problemini (TSP) çözün ...
Debasis

Son zamanların ötesinde, coğrafya nasıl bir yer? Izgaralı bir şehir mi? Cul-de-sacs içine daha küçük yollar ile neredeyse ağaç şeklinde bir banliyösü? BÜYÜK bir etkisi vardır.
Spacedman

Yanıtlar:


6

Steve Kallestad'ın söylediği gibi, bu bir TSP problemidir ve yaklaşık çözümler bulmak için harika ücretsiz çözücüler vardır.

Aradıklarınız için çok fazla iş olabilir, ancak koordinatlarınız arasında gerçek yürüme mesafelerini bulmak için bu çözücülerden birini Google Haritalar API'sı ile birlikte kullanmayı deneyebilirsiniz: https://developers.google.com/maps / belge / yön / # DirectionsRequests

(Bu API'yi hiç kullanmadım, bu yüzden ne kadar kolay veya etkili olacağını bilmiyorum)


4

İnsanlar Gezgin Satıcı Sorunu ile yakından ilgili bir şey görüyor ve çözülemeyeceğini düşünüyor.

Bu konuda iyi çalışmalar yapıldı ve hepsi bir çözümün mevcut olmadığını göstermiyor. Parametrelere ve istenen çözüme bağlı olarak, işe yarayacak bir şey bulabilirsiniz.

OpenOpt python kütüphanesine bir göz atmak isteyebilirsiniz .

Bakılacak diğer bir kaynak da TSP Çözücü ve Jeneratör olacaktır .

R kullanıyorsanız, mevcut bir TSP paketi vardır .

Aslında probleminize bir çözüm uygulamak burada ele alınması için biraz fazla, ama bu iyi bir başlangıç ​​noktası sağlamalıdır. Bu paketler içinde ve sizin için sağladığım bağlantılar içindeki belgelerde, oldukça geniş çeşitlilikte algoritmik stratejiler olduğunu göreceksiniz. Küçük bir coğrafi bölgeniz ve küçük bir "satış görevlileri" grubunuz olduğundan, makul bir zaman dilimi içinde bir stratejiyi hesaplamak için gereken hesaplama gücü masaüstünüzde bulunmalıdır.

Pratik olarak, kesinlikle en uygun stratejiyi bulmanıza gerek yoktur. Sadece çok iyi birine ihtiyacın var. En az boğucu görünen bir TSP paketi seçin ve bir deneyin.


Steve K ile bununla mücadele etmenin anahtarının yaklaşık olarak optimal veya sadece iyi rota stratejilerini hedeflemek olduğuna katılıyorum. Çoğu zaman "en iyi" ve "yeterince iyi" arasındaki fark fazla değildir.
MrMeritology

Tabii ki optimum bulunabilir, tüm olasılıkları yinelemek evrenin yaşından daha uzun sürebilir. Cevabınız bundan bahsetmiyor.
Spacedman

2

@SpacedMan'ın bir yorumda belirttiği gibi , sokak düzeninin yürüyüş listesinin optimizasyonu üzerinde büyük bir etkisi olacaktır. Sorunuzun başlığına yalnızca "enlem ve boylam" eklediniz; ancak bu sorunun çözülmesi bir "yürüyüş listesi" ne değil "karga gibi uçanlar listesine" yol açar.

Sokak düzeninize, mesafeleri tanımlayan kenar ağırlıkları olan bir grafik olarak bakmak ve tüm gerekli adresler arasında en kısa geçişi bulmaya çalışmak, sorununuzu " En kısa yol sorunu " olarak düşünmenize yol açacaktır . Dijkstra'nın algoritması en iyi bilinen çözümdür (başkaları da vardır); saf uygulamasında , adres listelerinizin orta büyüklükte olması durumunda kabul edilebilir O (n 2 ) ile yakınsar . Aksi takdirde, yukarıdaki bağlantılarda optimize edilmiş sürümlere bakın.

Kütüphaneler ve kaynakların sorunu ele almaya başlaması için, dilleri veya platformları belirtmediğiniz için , açık sokak haritaları wiki'sinde yönlendirme çözücülerinin derlenmesine ve genel olarak çerçeveleri ve kütüphaneleri sayfasına işaret edeyim .


1

İşte çılgın bir fikir: mahalleleri bilen ve daha önce kapıdan kapıya iş yapan gönüllülerle konuşun. Tavsiye ve fikirlerini alın. Muhtemelen hiçbir algoritmanın üretmeyeceği konusunda fikir sahibi olacaklar ve bu değişiklikler bilgisayar tarafından oluşturulan herhangi bir rota listesi için değerli olacaktır. Bir örnek: Yavaş ışıklarla veya ışıksız yoğun seyahat edilen sokaklardan geçmekten kaçının. Başka bir örnek: aynı sokağın karşı tarafında çalışan gönüllü çiftleri, yalnızca o sokakta çalışan bir gönüllüden daha güvenli hissedeceklerdir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.