1 poin oleh GN⁺ 2024-04-29 | 1 komentar | Bagikan ke WhatsApp
  • Program simulasi evolusi mobil menggunakan algoritma genetika

    • Tujuannya adalah menggunakan algoritma genetika untuk mengembangkan bentuk roda dua acak menjadi mobil melalui beberapa generasi
    • Berbasis pada BoxCar2D, tetapi ditulis ulang dari awal dan hanya menggunakan mesin fisika yang sama (box2d)
    • Menggunakan library seedrandom.js karya David Bau
  • Kontrol dan pengaturan

    • Tersedia fitur Save/Restore Population untuk menyimpan dan memulihkan populasi saat ini secara lokal
    • Toggle Surprise dapat mematikan dan menyalakan gambar untuk meningkatkan kecepatan simulasi
    • New Population memulai ulang hanya populasi mobil sambil mempertahankan trek yang sama
    • Trek yang sama selalu dihasilkan dengan seed yang sama, sehingga bisa bersaing dengan teman
    • Mutation rate adalah probabilitas setiap gen pada tiap individu bermutasi ke nilai acak saat generasi baru lahir
    • Mutation size adalah rentang perubahan yang dapat terjadi pada tiap gen; makin kecil angkanya, makin dekat ke nilai asli
    • Elite clones berarti n mobil terbaik yang akan disalin ke generasi berikutnya
    • View top replay menjeda simulasi saat ini dan menampilkan mobil dengan performa terbaik
  • Grafik

    • Merah: skor tertinggi di setiap generasi
    • Hijau: rata-rata 10 mobil terbaik di setiap generasi
    • Biru: rata-rata seluruh generasi
  • Komposisi genom

    • Bentuk (1 per titik sudut, total 8 gen)
    • Ukuran roda (1 per roda, total 2 gen)
    • Posisi roda (1 per roda, total 2 gen)
    • Kepadatan roda (1 per roda, total 2 gen) - semakin gelap, semakin padat
    • Kepadatan sasis (1 gen) - semakin gelap, semakin padat
  • Hal tambahan

    • Simulasi tidak deterministik, jadi mobil terbaik mungkin tidak selalu menunjukkan performa yang konsisten
    • Kompleksitas medan meningkat seiring jarak
    • Kini kodenya tersedia di GitHub beserta kontribusi komunitas

1 komentar

 
GN⁺ 2024-04-29
Komentar Hacker News

Ringkasannya sebagai berikut:

  • Proyek ini dibuat 20 tahun lalu, dan berkat Ruffle masih bisa dijalankan di browser
  • Karena sifat algoritme genetika, begitu desain yang unggul muncul pada suatu titik, desain itu cenderung terus mendominasi pada generasi berikutnya. Perlu dicoba mengatur tingkat mutasi dan besar mutasi
  • Setelah 280m, ada bug kecil di mana jalannya menghilang sehingga mobil-mobil jatuh ke lubang tanpa akhir
  • Tombol "Surprise" bisa ditekan untuk melewati banyak generasi dengan cepat. Menarik untuk mengamati proses evolusi dari waktu ke waktu sambil menyesuaikan tingkat mutasi dan besar mutasi
  • Akan menarik jika kendaraan memiliki gen untuk "compliance" sehingga bisa mengimplementasikan suspensi. Pada sebagian besar percobaan, bentuknya cenderung berkonvergensi menjadi mirip motor Tron
  • Medannya tidak berubah meskipun generasinya berganti
  • Ini juga sudah beberapa kali diperkenalkan di diskusi HN sebelumnya (boxcar2d serupa, tetapi diimplementasikan tanpa Flash)
  • Mengingatkan pada kenangan menghabiskan berjam-jam bermain Boxcar 2D saat masih kecil
  • Menarik untuk membayangkan apakah hal seperti ini juga memungkinkan di lingkungan simulasi berbasis fisika 3D. Penasaran apakah algoritme genetika bisa digunakan untuk menemukan bentuk aerodinamis baru seperti drone di dalam simulasi