1 puan yazan GN⁺ 2024-04-29 | 1 yorum | WhatsApp'ta paylaş
  • Genetik algoritma kullanan otomobil evrimi simülasyon programı

    • Amaç, genetik algoritma kullanarak rastgele 2 tekerlekli şekilleri nesiller boyunca otomobillere evrimleştirmektir
    • BoxCar2D temel alınmış olsa da sıfırdan yazılmıştır ve yalnızca aynı fizik motorunu (box2d) kullanır
    • David Bau'nun seedrandom.js kütüphanesi kullanılır
  • Kontroller ve ayarlar

    • Mevcut popülasyonu yerelde kaydedip geri yükleyebilen Save/Restore Population özelliği vardır
    • Surprise anahtarıyla çizimi kapatıp açarak simülasyon hızı artırılabilir
    • New Population, parkuru koruyup yalnızca otomobil popülasyonunu yeniden başlatır
    • Aynı seed ile her zaman aynı parkur oluşturulur; böylece arkadaşlarla rekabet etmek mümkündür
    • Mutation rate, yeni nesil doğarken her bireyin her geninin rastgele bir değere mutasyona uğrama olasılığıdır
    • Mutation size, her genin mutasyona uğrayabileceği aralıktır; sayı küçüldükçe özgün değere daha yakın olur
    • Elite clones, bir sonraki nesle kopyalanacak en iyi n otomobili ifade eder
    • View top replay, mevcut simülasyonu duraklatır ve en yüksek performanslı otomobili gösterir
  • Grafik

    • Kırmızı: her neslin en yüksek skoru
    • Yeşil: her nesildeki en iyi 10 otomobilin ortalaması
    • Mavi: tüm neslin ortalaması
  • Genom yapısı

    • Şekil (köşe başına 1, toplam 8 gen)
    • Tekerlek boyutu (tekerlek başına 1, toplam 2 gen)
    • Tekerlek konumu (tekerlek başına 1, toplam 2 gen)
    • Tekerlek yoğunluğu (tekerlek başına 1, toplam 2 gen) - koyulaştıkça yoğunluk artar
    • Şasi yoğunluğu (1 gen) - koyulaştıkça yoğunluk artar
  • Ek bilgiler

    • Simülasyon deterministik olmadığından en iyi otomobil her zaman tutarlı performans göstermeyebilir
    • Mesafeye göre arazi karmaşıklığı artar
    • Kod artık GitHub'da, topluluk katkılarıyla birlikte kullanılabilir

1 yorum

 
GN⁺ 2024-04-29
Hacker News görüşleri

Özetle şöyle:

  • Bu proje 20 yıl önce yapıldı ve Ruffle sayesinde hâlâ tarayıcıda çalışabiliyor
  • Genetik algoritmaların doğası gereği, bir noktada iyi bir tasarım ortaya çıktığında sonraki nesillerde baskın kalma eğilimi gösteriyor. Mutasyon oranı ve mutasyon büyüklüğü ayarlarını kurcalamak gerekebilir
  • 280 m sonrasında yol olmadığı için arabaların sonsuz bir çukura düştüğü küçük bir hata var
  • Surprise düğmesine basarak hızlıca birçok nesilden geçilebiliyor. Mutasyon oranı ve mutasyon büyüklüğünü ayarlayıp zaman içindeki evrim sürecini izlemek ilginç
  • Araçlarda süspansiyonu gerçekleştirebilecek bir compliance geni olsaydı ilginç olurdu. Çoğu çalıştırmada sonuçların Tron motosikleti benzeri bir şekle yakınsadığı görülüyor
  • Nesiller değişse de arazi değişmiyor
  • Daha önceki HN tartışmalarında da birkaç kez paylaşılmıştı (boxcar2d'ye benziyor ama Flash olmadan uygulanmış)
  • Çocukken Boxcar 2D ile saatler geçirdiğime dair anıları canlandırıyor
  • Bunun 3D fizik tabanlı simülasyon ortamlarında da mümkün olup olmayacağını merak ediyorum. Simülasyonda drone gibi yeni aerodinamik biçimleri keşfetmek için genetik algoritmaların kullanılıp kullanılamayacağı ilgi çekici