/Q-Learning-YazLab

Finding the optimum path between obstacles in a 50x50 (optional) matrix with the Q-Learning algorithm.

Primary LanguagePython

Q-Learning

YazLab 5. Proje

Daha fazla bilgi için --> Proje Raporu

Giriş

Bu projede ilk olarak açılan arayüzde kullanıcıdan başlangıç ve bitiş konumlarına atama yapmak için veri alındı. Daha sonra ise alınan bu veriler doğrultusunda rastgele engellerden ve geçişlerden oluşan bir çevre (matris) tanımlandı ve bunun ardından rastgele oluşturulan çevreye göre bir ödül tablosu (reward table) oluşturuldu. Elde ettiğimiz çevre ve ödül tablosu üzerinden Q-Learning algoritması kullanılarak Q-table dolduruldu. Algoritma, geliştiriciler tarafından belirlenen süre boyunca çalıştırıldı ve doldurulan Q-table doğrultusunda optimum yol (rota) bulunarak arayüz üzerinde bu yol gösterildi. Ardından da bölüm başına elde edilen ödül ve atılan adım sayısına bağlı olarak iki adet grafik çizdirildi. En son ise engellerin, geçişlerin ve başlangıç-bitiş noktalarının konumları “engel.txt” içerisine yazdırıldı.

Proje İsterleri

Burada robotun Q learning algoritması kullanarak engel sütunlarından kaçması ve beyaz alanlardan geçerek doğru yol alması gerekiyor. Aşağıdaki verilen matrisleri gerçek ortamdaki bir yol olarak düşünün. Robotumuz mavi kareden başlayıp kırmızı kutulara çarpmadan bitiş kısmına en kısa(maliyetle) yoldan ulaşırsa başarılı sayılacaktır. Ajan, herhangi bir beyaz kareden başlayarak sağa, sola, aşağı, yukarı ve çapraz hareket edebilir. Atılan adımlar belirleyici olmalı ve engele çarpışmadıkça başarılı olur. Robot en son duvara geldiğinde robot sadece aşağı hareket ederek istenilen noktaya “37” gelecektir. Sonuç olarak robot başlangıç noktasından istenilen hedefe gelinceye kadar hiçbir engele çarpmadan ve en kısa yolu bularak ödülü alır. Rr: ajan[1,2,8] karelere çarparsa işlem bitirir. Aksi takdirde, diğer her kareden herhangi bir işlem yapmak rs ödüllendirilir.

unknown

İndirim faktörü γ = 0.9, kırmızıya çarparsa -5 ödül puanı,yeşil bitiş noktasına +5, diğer geçişlere +3 ödül puanı olarak hesaplanacaktır.

  • Verilen 50 * 50’lİk matriste her bir kullanıcı kendine özgü engel oluşturup,matristeki değerleri random olarak atayacaktır.Bu matris değerlerini engel.txt dosyasına yazdırılacak.Örnek gösterim (1,1,K).
  • Grafiksel ara yüzde belirlenen yollar, engeller ve duvarlar gösterilecektir.
  • Kullanıcı tarafından bir grafiksel arayüz tasarlanacak, bu ara yüzde ajan başlangıç noktası, hedef noktası istenecektir.
  • Herhangi bir başlangıç noktasından hedef noktaya ulaşıncaya kadar ajanın yaptığı kazançların/maliyetin(episode via cost) ve bölüm adım sayısının (episode via step) grafiği çizdirecek.
  • Sonuç olarak ise başlangıç karesinden hedef kareye giden en kısa yol grafiksel ara yüzde gösterilerek yol planı grafik üzerinde çizdirilecek.

Yöntem

Bu projede izlenilen yol aşağıda anlatılmıştır: İlk olarak “Tkinter” modülü kullanılarak başlangıç-bitiş noktalarının konumları kullanıcıdan alınmıştır.
input

Başla butonuna basıldığında girilen konum değerleri doğrultusunda uygulama çalışmaya başlayacaktır. Daha sonra Q-Learning gerçekleştirilmesi için rastgele bir çevre oluşturulur.

1

Oluşturulan çevreye alınan girdi doğrultusunda başlangıç-bitiş noktaları eklenir.

2

Hemen ardından her şeyiyle tamamlanmış çevre baz alınarak bir ödül tablosu (reward table) oluşturulur.

3

Elde edilen çevre ve ödül tablosu doğrultusunda

4

şeklinde olan Q-Learning formülü kullanılarak algoritma çalışmaya başlar. Algoritma sonucu bölüm başına elde edilen ödül ve atılan adım sayısı

5

üstte görüldüğü gibi tasarlanmış olup

6

şeklinde görülmektedir.
İsterlerden biri olan “engel.txt” içerisine yazdırma işlemi

7

şeklinde yapılmakta ve

unknown2

şeklinde görülmektedir.

ekran

En sonunda ise Q-Learning algoritması ile elde edilen optimum yol (rota) Pygame modülü kullanılarak görselleştirilmiş hali üstte gösterildiği gibi kullanıcıya sunulur.

Kaba Kod

  • Kullanıcı metin kutularını doldurdu ve “Başla” butonuna tıkladı.
  • Ajanın öğrenme işlemini yapacağı ortam (çevre) oluşturuldu.
  • “engel.txt” dosyası oluşturuldu ve dol-duruldu.
  • Ajan Q-Learning algoritmasını kullana-rak hareket etmeye başladı ve bu doğrultu-da Q-table içeriğini doldurdu.
  • Ajan engele çarptı ve başa döndü (bu adım öğrenme işlemi tamamlanana kadar sürekli tekrarlandı).
  • Yapılan hareketler sonucu optimum rota (yol) elde edildi.
  • Plot table ve optimum yolun gösterildiği arayüz kullanıcıya sunuldu.

Referanslar