Sezgisel arama algoritmaları birçok kullanım alanı olan çok geniş ve detaylı bir konu. Türkçe olarak çok fazla içerik bulunmayan bu konu ile ilgili yol planlama alanında kullanılan ufak bir kısmını ve ağırlıklı olarak D* Lite algoritmasını temel bir fikir vermesi adına sizler ile paylaşmak istiyorum.
A* Algoritması
A* Algoritması başlangıç düğümünden bitiş düğümüne olan en az maliyetli yolu bulmada kullanılır [33]. A* ilk olarak 1968 yılında kullanılmıştır [34]. GBFS’nin olduğu gibi sezgisel arama algoritmasıdır. A yıldız(A*) Algoritmasında farklı olarak bilinen bir gerçek değer vardır. Bu değer sezgisel tahmin değerine eklenerek sezgisel fonksiyon hesaplanır [35].
En kısa yol hesaplanırken; toplam maliyet işlevi f(x), uzaklık işlevi g(x) ile buluşsal (heuristic) işlev h(x) toplanarak elde edilir [36].
f(x) = g(x)+ h(x)
Yol maliyet işlevi g(x), başlangıç düğümünden üzerinde bulunulan düğüm arasındaki yol uzunluğu ile hesaplanır [36]. h(x) işlevi buluşsal işlev olarak adlandırılır, bu işlev ise üzerinde bulunulan düğüm ile bitiş düğümüne bakılarak bulunur. h(x) bitiş düğümüne kadar olan düz bir çizgiyi temsil edebilir, fiziksel olarak ise iki nokta arasındaki mümkün olan en kısa mesafedir [37].
![A* Algoritması ile yolun belirlenmesi A* Algoritması ile yolun belirlenmesi [36].](https://mrsbyte.com/wp-content/uploads/2020/07/SAA-1-300x216.png)
Dijkstra Arama Algoritması
Algoritma işleyişini bir örnek üzerinden inceleyelim.
2. O = {1, 2, 4, 5}; C = {S} (1,2,4,5‘in geri dönüş düğümleri S)
3. O = {1, 4, 5}; C = {S, 2} (C içerisine düğüm eklenmiyor)
4. O = {1, 5, 3}; C = {S, 2, 4} (1, 2, 4’ün geri dönüş düğümleri S; 5’in geri dönüş düğümü 4)
5. O = {5, 3}; C = {S, 2, 4, 1}
6. O = {3, G}; C = {S, 2, 4 1} (Hedef düğüme S -> 4 -> 5 -> G şeklindeki yol izlenerek ulaşılır.) [38].
Burada S başlangıç düğümü, G hedef düğümü temsil etmektedir. O (Open) ise açılan düğümleri, C (Close) kapanan düğümleri listeler.
Bu algoritmada çözümün uzunluğuna göre arama alanı üssel olarak büyümektedir.
D* Algoritması
D* Algoritması, 1994 yılında Anthony Stentz [39] tarafından tanıtılmıştır. D* adı “Dinamik A” teriminden gelmektedir. Çünkü D Algoritması çalışırken ark maliyetlerinin değişebilmesi dışında A* gibi davranır.
D* (Dinamik A) Algoritması, kısmen bilinen, bilinmeyen veya değiştirilen alanlarda yol planlaması yapabilir. D ve varyantları mobil robot ve özerk araç navigasyonu için yaygın olarak kullanılmaktadır.
D* Algoritmasının yürütülmesi, ilk planlama ve yeniden planlama aşamalarına ayrılabilir. Robotun başlangıç konumunda durması durumunda ilk planlama yapılır ve robotun hareketi sırasında değişen engellerin olduğu düğümleri tespit etmesi durumunda yeniden planlama yapılır.
A* gibi, D*, “OPEN list” (var olan listeyi temsilen “AÇIK liste”) olarak bilinen düğümlerin bir listesini tutar. Düğümler birkaç durumdan birine sahip olarak işaretlenmiştir [40].
- YENİ (NEW), düğüm AÇIK(OPEN) listesinde hiç bulunmuyor demektir.
- AÇIK(OPEN), düğümün şu anda AÇIK(OPEN) listesinde olduğu anlamına geliyor.
- KAPALI(CLOSE), düğüm artık AÇIK(OPEN) listede değil.
- Maliyetinin AÇIK(OPEN) listesindeki en son fiyattan daha yüksek olduğunu belirten düğüm işareti: ARTIŞ(RAISE)
- DÜŞÜŞ(LOWER), düğümün maliyetinin AÇIK(OPEN) listesindeki en son fiyattan düşük olduğunu gösterir [40].
D* Algoritması optimaldir. Geniş ve karmaşık alanlarda daha verimlidir. Geri dönük hesaplama maliyetinden kaçınır [38].
Odaklanmış (Focused) D* Algoritması
Odaklanmış D* Algoritması sezgisel g (X, R) fonksiyonu ile robotun R konumundan X konumuna kadar tahmini bir yol maliyeti olduğunu belirtir. Bu algoritma genellikle robotun; tutarsızlıkları bulduktan bir süre sonra hareket ettiğini varsayar [38].
D* Lite Algoritması
Özerk araç navigasyon problemini çözmek için D* Lite Algoritması tasarlanmıştır. Koenig’in, artımlı aramayı içeren A* araştırmasının bir türevi olan, Yaşam Boyu Planlama A* (Lifelong Planning A*) uyarlamasıdır. Artımlı arama yöntemleri, her arama görevini sıfırdan çözerek mümkün olandan çok daha hızlı bir şekilde benzer sorunlara çözümler bulmak için önceki aramalardan gelen bilgileri yeniden kullanır.
D* Lite Yöntemi, D* yöntemi ile aynı şekilde davranır, ancak algoritma olarak D‘dan farklıdır. Bu yöntem basittir, kesin olarak analiz edilebilir, genişletilebilir ve D kadar verimlidir.
D* Lite A* ‘a dayanır. Bekleyen düğümleri öncelik sırasına göre saklar. Düğümler nesnel fonksiyon değerlerine göre artan sırada saklanır. Haritada değişiklikler meydana geldiğinde çözüm yollarını aşamalı olarak arar. Hızlı yeniden planlama yapar. D* ile benzer işlevselliktedir ama daha basit bir algoritmaya sahiptir [38].
D*Lite Algoritması düğüm başına iki maliyet tahmini tutar;
g -> nesnel fonksiyon değeri. Biz ne biliyorsak ona dayanır. (adım sayısı gibi)
rhs -> nesnel fonksiyon değerinin bir adımlık görünüş tahmini.
Tutarlılık tanımı ise şu şekilde yapılır;
Tutarlı -> g = rhs
Tutarsız -> g ≠ rhs
Tutarsız düğümler işlenmek için öncelik kuyruğuna (open list) alınır. Geri dönüş düğümü bilgisi tutulmaz [38].
Grafikte a’dan b’ye yönlendirilmiş bir kenar var ise b’nin a’nın ardılı olduğu ve a’nın b’nin öncülü olduğu söylenir [38].
Açık listedeki bir düğümün anahtarı/önceliği g’lerin minimumudur ve rhs değeri ile sezgisel fonksiyon değeri olan h’ın toplamıdır [38].
Daha iyi anlaşılması için aşağıdaki örneğin adımları ile incelenmesi faydalı olacaktır.
1 = 0 + 1
Açık listeden tekrar minimum değere sahip olan öğe açılır. (1,0) aşırı tutarlıdır (g > rhs) bu yüzden g = rhs olarak güncellenir.
Yol oluşturulurken başlangıç durumundan g değerlerinin derecesi izlenir.
(2,2)’nin komşularından biri (3,3)’tür, bu düğümün rhs değeri 4,8’dir. Bu değer (2,2) ‘den değil artık (2,3) ’ten gelmektedir, hala tutarlı durumda olduğu için açık listeye alınmaz.
(2,2)’ nin diğer bir komşusu (3,2) ‘dir. (2,2) ‘nin geçiş maliyetinin artması nedeniyle (3,2)’ nin geçiş maliyeti (2,3) ’ün g değerine göre hesaplanır, yeni g değeri 5,2 olur. g ≠ rhs olduğundan tutarsızdır, bu sebeple açık listeye alınır.
İterasyonlar takip edilerek açık listeden minimum değere sahip eleman (3,2) seçilir. g < rhs olduğundan düşük tutarlıdır. g = ∞ olarak güncellenir ve düğüm genişletilir. Değerler güncellenir, (4,2) tutarsız hale gelir. (3,1) güncellenir, hala tutarsızdır. (4,1) ‘in rhs değeri değişmez ancak şuan (3,1) ‘in g değerine göre hesaplanmaktadır.
Açık listeden minimum değere sahip olan (3,1) düğümü seçilir. g < rhs olduğundan düşük tutarlıdır, g = ∞ olur. Düğüm genişletilir. Değerler güncellenir. (4,1) güncellenir ama hala tutarsız olduğundan açık listeden çıkarılmaz. (3,0) ve (4,0) güncellenir, g = rhs olduğundan tutarlıdırlar bu yüzden açık listeden çıkarılırlar. (3,1) açıldıktan sonra da hala tutarsız olduğundan açık listede kalır.
- Her seferinde tüm komşu düğümleri düşünmeden rhs değerini güncelle
- Tüm açık listeyi yeniden sıralamadan rahat hareket ettikçe aramayı yeniden odaklama[38]
Daha detaylı bilgi için kaynaklara göz atabilirsiniz.
Kaynaklar
33. Hart, P. E., Nilsson, N. J. ve Raphael, B. “Correction to “A Formal Basis for the Heuristic Determination of Minimum Cost Paths”, SIGART Newsletter, (1972), 28-29.
34. Hart, P.E., Nilsson N.J. ve B. Raphael, “A formal basis for the heuristic determination of minimum cost paths”, Systems Science and Cybernetics, IEEE Transactions on, 1968. 4(2): p. 100-107.
35. Yao, J., ve arkş. “Path planning for virtual human motion using improved A* star algorithm”, Information Technology: New Generations (ITNG), 2010 Seventh International Conference on. 2010. IEEE.
36. Arıcı, V., “Engellerin Bulunduğu Ortamda Gezgin Robotun En İyi Yolu Bulması ve İzlemesi”, Tez(Yüksek Lisans)– Başkent Üniversitesi, Fen Bilimleri Enstitüsü, 2008.
37. Viet, N.H., Vien, N.A., Lee, S. ve Chung, T., “Obstacle Avoidance Path Planning for Mobile Robot Based on Multi Colony Ant Algorithm Advances in Computer-Human Interaction”, Automation and Systems, (2008).
38. Ayorkor Mills-Tettey, Vincent Lee-Shue Jr. Prasad Narendra Atkar, Kevin Tantisevi, Robotic Motion Planning: A* and D* Search, Robotics Institute 16-735, http://www.cs.cmu.edu/~motionplanning/
39. Stentz, A., “The D* Algorithm for Real-Time Planning of Optimal Traverses.”, CARNEGIE-MELLON UNIV PITTSBURGH PA ROBOTICS INST, 1994.
Bir yanıt yazın