Bu proje, NEAT (NeuroEvolution of Augmenting Topologies) algoritması ile eğitilen yapay zeka destekli bir otonom araç simülasyonudur. Araçlar, bir pist üzerinde sensör verilerini kullanarak kendi başlarına sürüş yapmayı öğrenirler. Proje, Python ve Pygame kütüphanesi ile geliştirilmiştir ve çoklu araç (multi-agent) desteği ile evrimsel öğrenme sürecini hızlandırır.
- Kurulum
- Kullanım
- Kod Yapısı
- NEAT Konfigürasyonu
- Sensör Sistemi
- Fitness Fonksiyonu
- Geliştirme ve İpuçları
- Kaynaklar
- Python 3.8+ yüklü olmalıdır.
- Gerekli kütüphaneleri yükleyin:
pip install pygame neat-python
- Proje dosyalarını aynı klasöre yerleştirin:
main.pyveyamain_multi.pycar.pytrack.png(pist görseli)red_car.png(araç görseli)neat_config.txt(NEAT ayar dosyası)
Not:
main.pytek araç,main_multi.pyise çoklu araç simülasyonu başlatır.
python main.pypython main_multi.py- Tam ekran başlar, çıkmak için
ESCtuşuna basabilirsiniz. - Simülasyon sırasında araçlar pistte otomatik olarak sürüş yapar ve öğrenir.
- Simülasyonun ana döngüsünü ve NEAT ile evrimsel öğrenmeyi yönetir.
main_multi.pyçoklu araç desteği ile her nesilde birden fazla aracı aynı anda eğitir.- Ekranda deneme sayısı, aktif araç sayısı, toplam süre ve en iyi süre gibi istatistikler gösterilir.
Carsınıfı, aracın fiziksel özelliklerini, hareketini, sensörlerini ve pistteki durumunu yönetir.- Araç görseli olarak
red_car.pngkullanılır ve boyutu 60x45 piksel olarak ayarlanmıştır. - Sensörler (ray casting) ile pistin sınırlarını algılar.
- Araç, kendi etrafında dönmeye başlarsa veya pist dışına çıkarsa "yanar" ve simülasyondan çıkar.
- NEAT algoritmasının tüm parametrelerini içerir.
- Giriş/çıkış sayısı, aktivasyon fonksiyonu, popülasyon büyüklüğü, mutasyon oranları gibi ayarlar burada yapılır.
- Pist haritası. Siyah alanlar pist, beyaz alanlar dış alan olarak kabul edilir.
- Araç görseli. Şeffaf arka planlı, tercihen üstten görünüşlü bir araba resmi olmalıdır.
neat_config.txt dosyasında önemli parametreler:
- num_inputs = 5: Araçta 5 sensör (ışın) bulunur.
- num_outputs = 1: Tek çıkış (direksiyon açısı).
- feed_forward = True: Ağ ileri beslemelidir.
- activation_default = tanh: Aktivasyon fonksiyonu.
- pop_size = 10/50: Popülasyon büyüklüğü (daha hızlı eğitim için düşük tutulabilir).
- mutation ve crossover oranları: Ağın evrimleşme hızını ve çeşitliliğini belirler.
Not: NEAT parametreleri ile oynamak, öğrenme başarısını ve hızını ciddi şekilde etkiler.
- Araçta 5 adet sensör (ışın) bulunur:
[-60, -30, 0, 30, 60]derece. - Her sensör, pistin sınırına olan mesafeyi normalleştirilmiş olarak ölçer.
- Sensör verileri, NEAT ağına giriş olarak verilir.
- Araç pistte ne kadar uzun süre hayatta kalırsa fitness puanı artar.
- Tur tamamlayan araçlar ekstra fitness puanı alır.
- Başlangıç düz mesafesini geçen araçlara küçük ödüller verilir.
- Araç pist dışına çıkarsa veya kendi etrafında dönmeye başlarsa "yanar" ve fitness artışı durur.
- Sensör Sayısı ve Açısı: Daha fazla/daha az sensör veya farklı açılar ile denemeler yapabilirsiniz.
- Fitness Fonksiyonu: Daha karmaşık ödül/ceza sistemleri ile daha iyi sonuçlar alınabilir.
- NEAT Parametreleri: Popülasyon büyüklüğü, mutasyon oranları, aktivasyon fonksiyonu gibi ayarlarla oynayarak farklı öğrenme dinamikleri elde edebilirsiniz.
- Pist Tasarımı: Farklı pist görselleri ile aracı farklı zorluklarda test edebilirsiniz.
- Görsel ve Performans: Araç görselini ve pist çözünürlüğünü değiştirerek simülasyonun görselliğini ve hızını etkileyebilirsiniz.
- Çoklu Araç:
main_multi.pyile aynı anda birden fazla aracı eğitmek, evrimsel süreci hızlandırır.
Her türlü soru ve katkı için iletişime geçebilirsiniz!
https://www.linkedin.com/in/mahmutesatkolay/
Proje yapım aşamasındadır tam bitmemiştir kodlar arası uyumsuzluk olabilir.