Bu proje, Deep Q-Learning (DQN) kullanarak Snake oyununu oynamayı öğrenen bir yapay zeka uygulamasıdır. OpenAI Gym framework'ü üzerine inşa edilmiş ve Pygame kullanılarak görselleştirilmiştir.
- Python 3.7 ve üzeri
pygame
numpy
gym
tensorflow/keras
(DQN Ajansı için)
Proje, ana bileşenleri, eğitim süreci ve yapılandırma dosyalarını içerir. Proje dosya yapısı aşağıdaki gibidir:
main.py
: Projeyi başlatan ana dosyaconfig/
: Yapılandırma dosyalarının bulunduğu klasörgame/
: Oyun mantığı ve görselleştirme dosyalarıgame_logic.py
: Oyun mantığını içeren dosyarenderer.py
: Oyun görselleştirme dosyası
ai/
: Yapay zeka ajanı ve hafıza dosyalarıagents.py
: DQN ajanını içeren dosyamemory.py
: Deneyim tekrar oynatma hafızasını içeren dosyanetworks.py
: Sinir ağı modelini içeren dosya
docs/
: Dokümantasyon dosyaları
SnakeGame
sınıfı, OpenAI Gym çerçevesini kullanarak oyun ortamını oluşturur.
reset()
: Oyunu başlangıç durumuna getirir.step(action)
: Belirli bir aksiyonu uygular ve yeni durum ile ödülü döndürür.render()
: Oyun durumunu görselleştirir.
Oyun durumu 7 boyutlu bir vektör ile temsil edilir:
- Yukarı yönde tehlike (0/1)
- Aşağı yönde tehlike (0/1)
- Sol yönde tehlike (0/1)
- Sağ yönde tehlike (0/1)
- Yemeğin X koordinatı (normalize edilmiş)
- Yemeğin Y koordinatı (normalize edilmiş)
- Yılanın normalize edilmiş uzunluğu
Oyundaki 4 olası aksiyon şunlardır:
- 0: Yukarı
- 1: Aşağı
- 2: Sol
- 3: Sağ
- Yemek yeme: +10 puan
- Çarpışma: -10 puan
- Her hareket: -0.1 puan
Eğitim süreci şu adımları takip eder:
- Ortamı sıfırla
- Mevcut durumu gözlemle
- Epsilon-greedy stratejisi ile aksiyon seç
- Aksiyonu uygula ve yeni durumu gözlemle
- Deneyimi hafızaya kaydet
- Belirli aralıklarla öğrenme
- Bölüm bitene kadar 2-6 adımlarını tekrarla
Projeyi çalıştırmak için terminal ya da komut satırına aşağıdaki komutu yazabilirsiniz:
python main.py
config/config.py
dosyasından aşağıdaki parametreler ayarlanabilir:
- Oyun pencere boyutları
- Hücre boyutu
- FPS (Frames Per Second)
- Batch size
- Öğrenme oranı, gamma, epsilon gibi DQN öğrenme parametreleri
Projenin eğitim ve değerlendirilmesi sırasında aşağıdaki metrikler takip edilir:
- Skor: Yılanın yediği yemek sayısı
- Toplam Ödül: Bölüm boyunca toplanan toplam ödül
- Yüksek Skor: Şimdiye kadarki en yüksek skor