YazLab 5. Proje
Daha fazla bilgi için --> Proje Raporu
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ı.
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.
İ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.
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.
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.
Oluşturulan çevreye alınan girdi doğrultusunda başlangıç-bitiş noktaları eklenir.
Hemen ardından her şeyiyle tamamlanmış çevre baz alınarak bir ödül tablosu (reward table) oluşturulur.
Elde edilen çevre ve ödül tablosu doğrultusunda
ş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ı
üstte görüldüğü gibi tasarlanmış olup
şeklinde görülmektedir.
İsterlerden biri olan “engel.txt” içerisine yazdırma işlemi
şeklinde yapılmakta ve
şeklinde görülmektedir.
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.
- 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.
- https://medium.com/deep-learning-turkiye/python-i%CC%87le-q-learning-ef6413aa896e
- https://medium.com/@sddkal/python-ve-makine-%C3%B6%C4%9Frenmesi-q-learning-temelleri-181d29326782
- https://towardsdatascience.com/a-beginners-guide-to-q-learning-c3e2a30a653c
- https://knowledge.dataiku.com/latest/kb/analytics-ml/reinforcement-learning-visual/reinforcement-learning-q-learning.html
- https://www.udemy.com/course/python-ile-yapay-zeka-adan-zye-reinforcement-learning/
- https://www.youtube.com/watch?v=qhRNvCVVJaA
- https://stackoverflow.com/
- https://www.geeksforgeeks.org/
- https://www.geeksforgeeks.org/python-add-image-on-a-tkinter-button/
- https://pythonbasics.org/tkinter-image/
- https://www.pygame.org/docs/
- https://docs.python.org/3/library/tk.html