1 คะแนน โดย GN⁺ 2024-04-29 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โปรแกรมจำลองวิวัฒนาการของรถยนต์ด้วยอัลกอริทึมพันธุกรรม

    • มีเป้าหมายเพื่อทำให้รูปร่าง 2 ล้อแบบสุ่มวิวัฒนาการเป็นรถยนต์ผ่านหลายชั่วรุ่นด้วยการใช้อัลกอริทึมพันธุกรรม
    • อ้างอิงจาก BoxCar2D แต่เขียนขึ้นใหม่ทั้งหมดตั้งแต่ต้น และใช้เพียงฟิสิกส์เอนจินเดียวกัน (box2d)
    • ใช้ไลบรารี seedrandom.js ของ David Bau
  • การควบคุมและการตั้งค่า

    • มีฟีเจอร์ Save/Restore Population สำหรับบันทึกและกู้คืนประชากรปัจจุบันไว้ในเครื่อง
    • สามารถปิดหรือเปิดการวาดภาพผ่านสวิตช์ Surprise เพื่อเพิ่มความเร็วของการจำลองได้
    • New Population จะรีสตาร์ตเฉพาะประชากรรถยนต์ โดยคงแทร็กเดิมไว้
    • แทร็กเดียวกันจะถูกสร้างขึ้นเสมอด้วย seed เดียวกัน ทำให้แข่งขันกับเพื่อนได้
    • Mutation rate คือความน่าจะเป็นที่ยีนแต่ละตัวของแต่ละสิ่งมีชีวิตจะกลายพันธุ์เป็นค่าสุ่มเมื่อชั่วรุ่นใหม่ถือกำเนิด
    • Mutation size คือช่วงที่ยีนแต่ละตัวสามารถกลายพันธุ์ได้ โดยยิ่งตัวเลขเล็กก็ยิ่งใกล้กับค่าเดิม
    • Elite clones หมายถึงรถยนต์อันดับสูงสุดจำนวน n คันที่จะถูกคัดลอกไปยังชั่วรุ่นถัดไป
    • View top replay จะหยุดการจำลองปัจจุบันชั่วคราวและแสดงรถยนต์ที่ทำผลงานดีที่สุด
  • กราฟ

    • สีแดง: คะแนนสูงสุดของแต่ละชั่วรุ่น
    • สีเขียว: ค่าเฉลี่ยของรถยนต์ 10 คันที่ดีที่สุดในแต่ละชั่วรุ่น
    • สีน้ำเงิน: ค่าเฉลี่ยของทุกชั่วรุ่น
  • องค์ประกอบของจีโนม

    • รูปร่าง (1 ยีนต่อจุดยอด รวมทั้งหมด 8 ยีน)
    • ขนาดล้อ (1 ยีนต่อล้อ รวมทั้งหมด 2 ยีน)
    • ตำแหน่งล้อ (1 ยีนต่อล้อ รวมทั้งหมด 2 ยีน)
    • ความหนาแน่นของล้อ (1 ยีนต่อล้อ รวมทั้งหมด 2 ยีน) - ยิ่งมืดยิ่งมีความหนาแน่นสูง
    • ความหนาแน่นของแชสซี (1 ยีน) - ยิ่งมืดยิ่งมีความหนาแน่นสูง
  • ข้อมูลเพิ่มเติม

    • การจำลองไม่เป็นแบบกำหนดแน่นอน จึงอาจทำให้รถยนต์ที่ดีที่สุดไม่แสดงประสิทธิภาพได้อย่างสม่ำเสมอ
    • ความซับซ้อนของภูมิประเทศจะเพิ่มขึ้นตามระยะทาง
    • ตอนนี้โค้ดเปิดให้ใช้งานบน GitHub พร้อมการมีส่วนร่วมจากชุมชนแล้ว

1 ความคิดเห็น

 
GN⁺ 2024-04-29
ความคิดเห็นจาก Hacker News

สรุปได้ดังนี้:

  • โปรเจ็กต์นี้ถูกสร้างขึ้นเมื่อ 20 ปีก่อน และยังคงรันได้ในเบราว์เซอร์ด้วย Ruffle
  • ด้วยลักษณะของ genetic algorithm เมื่อมีดีไซน์ที่โดดเด่นปรากฏขึ้น ณ จุดใดจุดหนึ่ง มันมักจะครองความเป็นหลักในรุ่นถัด ๆ ไป ควรลองปรับการตั้งค่าอัตราการกลายพันธุ์และขนาดของการกลายพันธุ์
  • หลังระยะ 280m จะไม่มีถนนแล้ว ทำให้มีบั๊กเล็ก ๆ ที่รถตกลงไปในหลุมไม่สิ้นสุด
  • สามารถกดปุ่ม "Surprise" เพื่อข้ามผ่านหลายรุ่นได้อย่างรวดเร็ว การปรับอัตราการกลายพันธุ์และขนาดของการกลายพันธุ์พร้อมสังเกตวิวัฒนาการตามเวลานั้นน่าสนใจมาก
  • ถ้าตัวรถมียีนเกี่ยวกับ "compliance" เพื่อจำลองระบบกันสะเทือนก็น่าจะน่าสนใจ โดยในการรันส่วนใหญ่มักลู่เข้าสู่รูปร่างคล้าย Tron bike
  • แม้รุ่นจะเปลี่ยนไป แต่ภูมิประเทศไม่เปลี่ยน
  • เคยถูกแนะนำใน HN discussion ก่อนหน้านี้หลายครั้งแล้ว (คล้ายกับ boxcar2d แต่ทำโดยไม่ใช้ Flash)
  • ทำให้นึกถึงความทรงจำตอนเด็กที่ใช้เวลาไปหลายชั่วโมงกับ Boxcar 2D
  • น่าสงสัยว่าอะไรแบบนี้จะทำได้หรือไม่ในสภาพแวดล้อมการจำลองที่อิงฟิสิกส์แบบ 3D และน่าสนใจว่า genetic algorithm จะสามารถใช้ค้นพบรูปทรงอากาศพลศาสตร์แบบใหม่ เช่น โดรน ในการจำลองได้หรือไม่