Grafikleri (D *, D * -Lite, LPA *, vb.) Değiştirmek için son teknoloji yol bulma algoritmaları nasıl farklılık gösterir?


96

Son yıllarda A * 'dan çok daha hızlı grafik değişimlerine karşılık olarak en iyi yolu hesaplayabilen çok sayıda yol bulma algoritması geliştirilmiştir - bunlar nelerdir ve bunlar nasıl farklılık gösterir? Farklı durumlar için mi yoksa bazıları eskimiş başkaları mı?


Bunlar şimdiye kadar bulabildiklerim:

Bunların hangisinin özel sorunum için geçerli olduğundan emin değilim - gerekirse hepsini okuyacağım, ancak birileri bir özet yazabilirse bu bana çok zaman kazandıracak.


Benim özel problemim: Başlangıç, bitiş ve bazı duvarları olan bir ızgaram var. Şu anda en baştan sonuna kadar en iyi yolu bulmak için A * kullanıyorum.

image2

Kullanıcı daha sonra bir duvarı hareket ettirecek ve tüm yolu tekrar hesaplamalıyım. "Move-duvar /-yolu yeniden hesaplamak" adım arka arkaya birçok kez olur, bu yüzden çabuk A * tam yineleme çalıştırmak zorunda kalmadan en iyi yolu yeniden hesaplamak mümkün olacak bir algoritma arıyorum.

Yine de A * 'da bir değişiklik aramıyorum - tamamen ayrı bir algoritma olabilir.


3
D * 'ye baktın mı? Bu artan bir algoritma ve doğru hatırlıyorsam tam olarak böyle bir durumla başa çıkmalıyım. Bir zamanlar onu tesadüfen çevrede rastgele yürüteçlerin bulunduğu bir robot gördüm.
Juho,

7
@Kaveh: Dinamik yol bulma algoritmalarında "araştırma düzeyinde" en son teknolojiye bir genel bakış sorulmuyor. Field-D * 5 yaşından küçük ve LEARCH 3 yaşından küçük ..
BlueRaja - Danny Pflughoeft

7
Bunun neden bu forum için uygun bir soru olmadığından emin değilim. bu hiçbir şekilde yerleşik ve eski bir konu değil
Suresh Venkat

5
@ BlueRaja-DannyPflughoeft Ayrıca bunun iyi ve araştırma düzeyinde bir soru olduğunu düşünüyorum. Yorumuma dayanarak bir cevap ekleyeceğim ve biraz genişleteceğim.
Juho

4
@ BlueRaja-DannyPflughoeft Reddit bağlantısı var.
U2EF1

Yanıtlar:


77

Bu yüzden gazetelere göz gezdirdim ve bu da parıldadığım şeydi. Konuyla ilgili daha bilgili biri varsa, lütfen yanılıyorsam beni düzeltin (veya kendi cevabınızı ekleyin ve bunun yerine kabul edeceğim!) .

Her bir kağıda linkler yukarıda soru-postada bulunabilir.

  • Basit yeniden hesaplamalar
    • D * (aka Dynamic A * ) (1994): İlk çalıştırmada D *, A * 'ya çok benzer bir şekilde çalışır ve en hızlı şekilde en iyi yolu bulur. Bununla birlikte, ünite baştan sona hareket ederken, grafik değişirse, D * o ünitenin konumundan en iyi yolu hızlı bir şekilde yeniden hesaplayabilir, bu ünitenin konumundan sadece A * çalıştırmaktan çok daha hızlıdır. Bununla birlikte, D *, son derece karmaşık olduğu ününe sahiptir ve daha basit olan D * -Lite tarafından tamamen ortadan kaldırılmıştır.
    • Odaklanmış D * (1995): Daha hızlı / "daha gerçek zamanlı" olması için D * 'ye bir gelişme. D * -Lite ile herhangi bir karşılaştırma bulamıyorum, ancak bunun daha eski ve D * -Lite hakkında çok daha fazla konuştuğuna göre, D * -Lite'in bir şekilde daha iyi olduğunu varsayalım.
    • DynamicSWSF-FP (1996): Her düğümden bitiş düğümüne olan mesafeyi saklar. Tüm mesafeleri hesaplamak için büyük bir başlangıç ​​kurulumuna sahiptir. Grafikte değişiklik yapıldıktan sonra, yalnızca mesafeleri değişen düğümleri güncelleyebilir. Hem A * hem de D * ile ilgisi yoktur. Her değişiklikten sonra birden fazla düğümden bitişe kadar olan mesafeyi bulmak istediğinizde kullanışlıdır; Aksi takdirde, LPA * veya D * -Lite tipik olarak daha faydalıdır.
    • LPA * / Artımsal A * (2001): LPA * (Hayatboyu Planlama A *) ayrıca Artan A * olarak bilinen (ve bazen karışıklığa, LPA adlı diğer algoritma hiçbir ilişkisi olmasına rağmen "LPA" gibi) bir olduğunu DynamicSWSF-FP ve A * kombinasyonu. İlk çalıştırmada, A * ile tamamen aynı. Bununla birlikte, grafikte küçük değişiklikler yapıldıktan sonra, aynı başlangıç ​​/ bitiş çiftinden sonraki aramalar, A * 'ya kıyasla incelenmesi gereken düğüm sayısını büyük ölçüde azaltmak için önceki çalışmalardan elde edilen bilgileri kullanabilir. Bu tam olarak benim sorunum, bu yüzden LPA * sesler benim için en uygun seçimdir. LPA *, D * 'dan farklıdır çünkü her zaman aynı başlangıçtan aynı sonuca kadar en iyi yolu bulur; başlangıç ​​noktası hareket ederken kullanılmaz(ilk en iyi yol boyunca hareket eden üniteler gibi) . Ancak...
    • D * -Lite (2002): Bu algoritma D * taklit etmek için LPA * kullanır; yani, ilk en iyi yol boyunca hareket ettikçe ve grafik değiştikçe bir birimin yeni en iyi yolunu bulmak için LPA * kullanır. D * -Lite, D * 'dan çok daha basit olarak kabul edilir ve her zaman en az D * kadar hızlı çalıştığı için, tamamen D *' yı tamamen kullanmıştır . Böylece, D * kullanmak için hiçbir sebep yoktur; bunun yerine D * -Lite kullanın.
  • Herhangi bir açılı hareket
    • Alan D * (2007): Bir ızgaraya hareketi sınırlamayan bir D * -Lite çeşidi; yani, en iyi yol ünitenin ızgara noktaları arasında yalnızca 45- (veya 90- derece) değil, herhangi bir açıyla hareket etmesini sağlayabilir. NASA tarafından Mars gezicileri için yol bulmak için kullanıldı.
    • Theta * (2007): Alan D * 'den daha iyi (daha kısa) yollar sunan bir A * çeşididir. Bununla birlikte, D * -Lite yerine A * 'ya dayandığından, D * Alanının yaptığı hızlı replaning yeteneklerine sahip değildir. Ayrıca bakınız .
    • Artımlı Phi * (2009): Her iki dünyanın da en iyisi. Theta * 'nın artımlı olan bir sürümü (aka hızlı yeniden planlamaya izin verir)
  • Hedef Noktalarını Taşıma
    • GAA * (2008): GAA * (Genelleştirilmiş Uyarlamalı A *) , hareketli hedef noktalarını işleyen bir A * çeşididir. "Hareketli Hedef Uyarlamalı A *" adlı daha önceki bir algoritmanın genelleştirilmesidir.
    • GRFA * (2010): GFRA * (Genelleştirilmiş Saçak Alma A *) , FRA * adlı başka bir algoritmadan gelen teknikleri kullanarak , GAA * 'nın keyfi grafiklere (yani 2D ile sınırlı değil) genelleştirilmesi gibi görünüyor .
    • MTD * -Lite (2010): MTD * -Lite (Hareketli Hedef D * -Lite) , hızlı-hedefli hareketli hedef aramaları yapmak için "Genelleştirilmiş Saçak Alma A * 'nın arkasındaki prensibi kullanan D * Lite'ın bir uzantısıdır.
    • Tree-AA * (2011): (???) Bilinmeyen alanların aranması için bir algoritma gibi görünüyor, ancak bu bölümdeki diğer tüm algoritmalar gibi Adaptive A * 'ya dayanıyor, bu yüzden buraya koydum. Bu bölümdeki diğerleriyle nasıl karşılaştırıldığından emin değil.
  • Hızlı / Alt-optimum
    • Her Zaman D * (2005): Bu, D * -Lite'ın "Her Zaman" varyantıdır, D * -Lite'ı Anytime Repairing A * adlı bir algoritma ile birleştirerek yapılır . Bir "Her Zaman" algoritması, herhangi bir zaman kısıtlaması altında çalışabilen bir algoritmadır - başlangıçta çok hızlı bir şekilde çok düşük bir yol bulacaktır, daha sonra o yolda daha fazla zaman verildiğinde daha iyi hale gelecektir.
    • HPA * (2004): HPA * (Hiyerarşik Yol Bulma A *) , RTS (gerçek zamanlı strateji) video oyunlarında olduğu gibi, büyük bir grafikte çok sayıda ünite yolunu bulmak içindir . Hepsinin farklı başlangıç ​​konumları ve potansiyel olarak farklı bitiş yerleri olacak. HPA * , tüm bu birimler için "en yakın" yolları hızlı bir şekilde bulmak için her birinde ayrı ayrı A * çalıştırmaktan daha hızlı bir şekilde hiyerarşiye böler . Ayrıca bakınız
    • PRA * (2005): Anladığım kadarıyla PRA * (Kısmi İyileştirme A *) , HPA * ile aynı problemi çözüyor ama farklı bir şekilde. Her ikisi de "benzer performans özelliklerine" sahiptir.
    • HAA * (2008): HAA * (Hiyerarşik Açıklamalı A *) , bazı birimlerin bazı arazilerde sınırlı bir şekilde gezinmesine izin veren bir HPA * genellemesidir (örneğin, bazı birimlerin içinden geçebileceği ancak daha büyük olanların yürüyemediği küçük bir yoldur); veya sadece uçan birimlerin geçebileceği bir delik;
  • Diğer / Bilinmeyen
    • LPA (1997): LPA (Döngüsüz yol bulma algoritması) , sadece diğer algoritmaların burada çözdüğü problemlerle ilgili olarak marjinal olarak ilgili bir yönlendirme algoritması gibi görünüyor . Sadece bu makalenin kafa karıştırıcı (ve yanlış) Internet'teki çeşitli yerlerinde LPA'yı tanıtan bildiri * olarak tanımlandığı için atıfta bulunulmasından bahsediyorum.
    • LEARCH (2009): LEARCH, robotlara kendi başına en uygun yolların nasıl bulunacağını öğretmek için kullanılan makine öğrenme algoritmalarının bir kombinasyonudur. Yazarlar, daha iyi sonuçlar elde etmek için LEARCH'i Alan D * ile birleştirmeyi önermektedir.
    • BDDD * (2009): ??? Kağıda erişemiyorum.
    • SetA * (2002): ??? Bu, görünüşe göre, grafiğin "ikili karar diyagramı" (BDD) modelini arayan bir A * çeşididir ? Bazı durumlarda "A * 'dan daha hızlı birkaç mertebeden siparişler verdiğini " iddia ediyorlar . Ancak, doğru anlıyorsam, bu durumlar grafikteki her düğümün çok fazla kenarı olduğunda ne olur?

Bütün bunlar göz önüne alındığında, LPA * benim sorunum için en uygun gibi görünüyor .


Peki .. Bu makaleyi ayrıca bazı algoritmaları karşılaştıran @lhrios tarafından buldum .
mg007

Bunun eski olduğunu biliyorum, ancak Alan D * tanımınızdaki küçük bir kusuru fark etmeye değer olduğunu düşünüyorum. Normal D *, "bir ızgara" ile sınırlandırılmamıştır, ayrı bir grafik ile sınırlandırılmıştır. Kağıdın yaptığı nokta, A *, D * vb'nin çalışmasını sağlamak için sürekli bir alanı parçalara ayırmanız gerektiğidir, bu da hareket edebileceğiniz açıları sınırlar. Alan D * bu kısıtlamayı ortadan kaldırır ve ardışık hallere ayrık bir şekilde değil sürekli bir şekilde davranmanıza izin verir (az ya da çok hile uygulanır). Basitçe bir 2D ızgarayı örnek olarak kullanır, D * / A * etc hiçbir şekilde bir ızgaraya bağlı değildir.
LinearZoetrope

Alan D * 'nın bir ızgara ile sınırlı olduğunu belirtmeliyim, ancak makalede 3B versiyonda çalıştıklarından bahsedilmektedir. Bu, kullandığı enterpolasyondan kaynaklanmaktadır. Halen A * ve D * 'nın rasgele sayıda ardışık devlete sahip grafikler üzerinde çalışması, Alan D *' nin D * 'nin ızgara tabanlı planlamayı kullandığı senaryolar için yalnızca bir gelişme olduğunu gösteriyor.
LinearZoetrope

Alan D * ve Theta * / Artımlı Phi * arasındaki önemli bir fark, Alan D * 'nın her kare için benzersiz ağırlıklara sahip olabileceği, ancak Theta * ve Artımlı Phi *' nin ziyaret edilebilecek tüm kareler için aynı ağırlığa sahip olması ile sınırlı olmasıdır. Bu nedenle, Artımlı Phi * Alan D * 'den üstün değildir.
HelloGoodbye

1
@Jsor: İşte Alan D * 'nin 3B versiyonu: 3D Alan D - JPL Robotics
HelloGoodbye 7:15

16

D *, D * -Lite veya bu kategorideki artımlı algoritmalardan herhangi birini kullanırken büyük bir uyarı var (ve bu uyarının nadiren literatürde belirtilmiş olduğuna dikkat etmek gerekir). Bu tür algoritmalar ters arama kullanır. Yani, hedef düğümden maliyetleri, dışa doğru yayılan bir dalgalanma gibi hesaplarlar. Kenarların maliyetleri değiştiğinde (örneğin, örneğinize bir duvar ekler veya kaldırırsınız), yalnızca değişikliklerden etkilenen keşfedilen (aka 'ziyaret edilen') düğümlerin alt kümesini güncellemek için çeşitli etkili stratejiler vardır.

En büyük uyarı, hedeflere göre bu değişikliklerin yerinin, algoritmaların etkinliği için muazzam bir fark yaratmasıdır. Çeşitli makalelerde ve tezimde, bu artan algoritmaların herhangi birinin en kötü durum performansının tüm bilgileri bir kenara atmaktan ve düz eski A * gibi artımlı olmayan bir şeyle baştan başlamaktan daha kötü olmasının tamamen mümkün olduğunu gösterdim .

Değişen maliyet bilgisi, genişleyen arama cephesinin çevresine ('ziyaret edilen bölge) yakın olduğunda, birkaç yolun değişmesi gerekir ve artan güncellemeler hızlı olur. Uygun bir örnek, vücuduna takılı sensörleri olan mobil bir robottur. Sensörler dünyayı sadece robotun yanında görüyor ve bu yüzden de değişiklikler bu bölgede. Bu bölge hedefin değil aramanın başlangıç ​​noktasıdır ve bu nedenle her şey yolunda gider ve algoritmalar değişikliklerin düzeltilmesi için en uygun yolu güncellemede çok etkilidir.

Değişen maliyet bilgileri aramanın amacına yakın olduğunda (veya senaryonuz yalnızca başlangıç ​​değil hedef değiştirme konumlarını görürse), bu algoritmalar feci bir yavaşlamaya maruz kalır. Bu senaryoda, kaydedilen bilgilerin neredeyse tamamı güncellenmelidir, çünkü değişen bölge hedefe o kadar yakındır ki, önceden hesaplanmış tüm yolların değişikliklerden geçmesi ve yeniden değerlendirilmesi gerekir. Ek bilgi saklama ek yükü ve artımlı güncellemeler yapmak için yapılan hesaplamalar nedeniyle, bu ölçekte yapılan yeniden değerlendirme yeni bir başlangıçtan daha yavaştır.

Örnek senaryonuz, kullanıcının istediği duvarı taşımasına izin verdiği için, D *, D * -Lite, LPA * vb. Kullanıyorsanız bu sorunla karşılaşacaksınız. Algoritmanızın zaman performansı kullanıcıya bağlı olarak değişecektir. giriş. Genel olarak, "bu kötü bir şey" ...

Örnek olarak, Alonzo Kelly'nin CMU'daki grubu, algı bilgilerini gerçek zamanlı olarak paylaşan, yer robotlarını havadan robotlarla birleştirmeye çalışan PerceptOR adlı harika bir programa sahipti. Bir kara taşıtının planlama sistemine gerçek zamanlı maliyet güncellemeleri sağlamak için bir helikopter kullanmaya çalıştıklarında, bu soruna çarptılar, çünkü helikopter kara taşıtının önünde uçabiliyordu, maliyetin hedefe daha yakın olduğunu görebiliyordu ve böylece yavaşlıyordu algoritmalarıyla. Bu ilginç gözlemi tartıştılar mı? Hayır. Sonunda, yönettikleri en iyisi, helikopterin yer aracının doğrudan tepesine uçmasını sağlamaktı - onu dünyanın en pahalı sensör çubuğu yaptı. Tabii, küçük davranıyorum. Ama kimsenin konuşmak istemediği büyük bir problem - ve yapmalılar,

Bunu tartışan sadece bir avuç kağıt var, çoğunlukla benim tarafımdan. Bu soruda listelenen orijinal makalelerin yazarları veya öğrencileri tarafından yazılan makalelerden, bu problemden bahseden sadece bir tanesini düşünebilirim. Likhachev ve Ferguson, gerekli güncellemelerin ölçeğini tahmin etmeye çalışmayı ve eğer artımlı güncellemenin yeni bir başlangıçtan daha uzun süreceği tahmin edildiğinde saklanan bilgilerin temizlenmesini önermektedir. Bu oldukça mantıklı bir çözüm, ancak başkaları da var. Doktora, çok çeşitli hesaplama problemleri arasında benzer bir yaklaşımı genelleştirir ve bu sorunun kapsamı dışındadır, ancak bu algoritmaların çoğuna ve daha fazlasına kapsamlı bir genel bakışı olduğu için referansları faydalı bulabilirsiniz. Bkz http://db.acfr.usyd.edu.au/download.php/Allen2011_Thesis.pdf?id=2364 detaylar için.


1
Bu detayları eklediğiniz için teşekkür ederiz :) Uygulamamda duvar, sonuna kadar sık ​​sık başa doğru hareket eder. BFS, A * ve LPA'yı * uyguladım; A * aslında BFS'den biraz daha yavaştı (boşluklarım sınırlandırılma eğilimindeydi, bu nedenle A * yalnızca BFS'den biraz daha az düğüm arar; bu arada BFS yalnızca bir sıraya göre daha hızlı olması için uygulanabilecek bir kuyruğa ihtiyaç duyar) , ancak LPA * kullanılarak ortalama iki kat daha hızlı olur.
BlueRaja - Danny Pflughoeft

9

Ana fikir, ilk hesaplanan rota engellendiğinde önceki hesaplamalardan faydalanabilen artan bir algoritma kullanmaktır. Bu genellikle robotlar, navigasyon ve planlama bağlamında araştırılır.

Koenig & Likkachev, Bilinmeyen Arazilerde Navigasyon için Hızlı Başlangıç, IEEE Robot İşlemleri, Vol. 21, No. 3, Haziran 2005 , D * Lite’i sunar. D * 'in D * Lite'ın her zaman D * kadar hızlı olduğu anlamında modası geçmiş olduğunu söylemek güvenli görünüyor. Ek olarak, D * karmaşıktır, anlaşılması, analiz edilmesi ve genişletilmesi zordur. Şekil 9, D * Lite için sahte kodu verir ve Tablo 1, BFS, Geriye A *, İleri A *, DynamicSWSF-P ve D * ile karşılaştırıldığında D * Lite ile deneysel sonuçları gösterir.

Listelenen yeni algoritmaları bilmiyorum (Herzaman D *, Alan D *, LEARCH). Çok yakın bir zamanda, D * Lite'ı rastgele yürüteçleri olan bir ortamda planlamak için kullanan bir robot gördüm. Bu anlamda D * Lite'ın hiçbir şekilde modası geçmiş olduğunu düşünmüyorum. Pratik probleminiz için, her zamanki mühendislik yöntemini denemenin bir zararı olmadığını tahmin ediyorum: biraz yaklaşın ve gereksinimlerinize uymuyorsa, başka bir şey deneyin (daha karmaşık).


4

Hızla keşfedilen randomize ağaçları veya RRT'leri hakkında bir şeyler eklemek isterim. Temel fikrin tüm internet üzerinden iyi bir tartışması var, ancak Wikipedia sayfasındaki bağlantılarla ve Kuffner ve LaValle'in konuyla ilgili orijinal makaleleriyle başlamak muhtemelen güvenlidir.

RRT'lerin en önemli özelliği, boğulmadan son derece yüksek boyuttaki gerçek değerli alanlarla baş edebilmeleridir . Dinamikleri idare edebilirler, optimal değillerdir ancak olasılıkla tamamlanmışlardır (hesaplama süresi sonsuza kadar giderse mümkün olursa başarılı olurlar) ve hareketli hedefleri idare edebilirler. Statik olmayan alanlarda çalışmalarına izin veren bazı uzantılar var, bunlardan en iyisi aşağıda bağlandığım Çok Parçalı RRT çalışması gibi görünüyor.


0

Uzaklık boşlukları denilen veri yapıları bu tür problemleri ele almaktadır. Bununla birlikte, çoğu araştırma sonucu yalnızca statik grafikler içindir.

Eğer grafikler ızgara ise (ve bu nedenle düzlemselse), bazı dinamik veri yapıları mevcut (sabitlerin söz konusu uygulama için yeterince küçük olup olmadığının açık değil):

Kesin en kısa yollar:

Jittat Fakcharoenphol, Satish Rao: Düzlemsel grafikler, negatif ağırlık kenarları, en kısa yollar ve yakın doğrusal zaman. J. Comput. Sist. Sci. 72 (5): 868 - 889 (2006)

Yaklaşık en kısa yollar:

Philip N. Klein, Sairam Subramanian: Düzlemsel Grafiklerdeki En Kısa Yollar İçin Tamamen Dinamik Bir Yaklaşım Şeması. Algoritma 22 (3): 235-249 (1998)

Ittai Abraham, Shiri Chechik, Cyril Gavoille: Düzlemsel grafikler için yasaklanmış mesafe etiketleri ile tamamen dinamik yaklaşık mesafe boşlukları. STOC 2012: 1199-1218


Maalesef, eğer sadece statik grafikler üzerinde çalışıyorlarsa, "böyle problemleri ele alırlar" derken ne demek istiyorsunuz? Sorulan sorun özellikle statik olmayan grafiklerle ilgili.
BlueRaja - Danny Pflughoeft

vurguyu değiştirmeme izin verin: çoğu sonuç yalnızca statik grafikler içindir. bazı dinamik veri yapıları var. ardından bu dinamik veri yapılarının bir listesi var.
Christian Sommer

0

Okulda karınca kolonisi optimizasyonu ile uğraşıyordum . Bazı metinlerde sürekli grafikler, yönlendirme ağları vb. Değiştirmek için bir çözüm olarak tanıtıldı. Mühendislik çözümü değil, karıncaların iyi ve kötü yolları işaretlemek için feromonları yayarak engellerin etrafından nasıl geçtiğine dair bir uyarlama yapıldı. Sorununun işe yarayıp yaramadığını bilmiyorum, ama ilginç bir bakış açısı olduğunu düşünüyorum.

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.