1 पॉइंट द्वारा GN⁺ 2024-04-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Genetic algorithm का उपयोग करने वाला कार evolution simulation प्रोग्राम

    • इसका उद्देश्य genetic algorithm का उपयोग करके random 2-wheel shapes को पीढ़ियों के दौरान कारों में evolve करना है
    • यह BoxCar2D पर आधारित है, लेकिन शुरू से लिखा गया है, और केवल वही physics engine (box2d) इस्तेमाल करता है
    • David Bau की seedrandom.js लाइब्रेरी का उपयोग किया गया है
  • Controls और settings

    • इसमें Save/Restore Population फीचर है, जिससे मौजूदा population को local में save और restore किया जा सकता है
    • Surprise toggle के जरिए drawing को बंद/चालू करके simulation की speed बढ़ाई जा सकती है
    • New Population ट्रैक को बनाए रखते हुए केवल कार population को फिर से शुरू करता है
    • एक ही seed से हमेशा वही track बनता है, इसलिए दोस्तों के साथ competition संभव है
    • Mutation rate वह संभावना है कि नई generation बनते समय हर individual का हर gene random value में mutate होगा
    • Mutation size वह range है जिसमें हर gene mutate हो सकता है; संख्या जितनी छोटी होगी, उतना ही वह मूल value के करीब होगा
    • Elite clones से मतलब उन शीर्ष n कारों से है जिन्हें अगली generation में copy किया जाएगा
    • View top replay मौजूदा simulation को pause करके सबसे बेहतर प्रदर्शन करने वाली कार दिखाता है
  • Graph

    • लाल: हर generation का highest score
    • हरा: हर generation की शीर्ष 10 कारों का औसत
    • नीला: सभी generations का औसत
  • Genome संरचना

    • आकार (हर vertex पर 1, कुल 8 genes)
    • wheel size (हर wheel पर 1, कुल 2 genes)
    • wheel position (हर wheel पर 1, कुल 2 genes)
    • wheel density (हर wheel पर 1, कुल 2 genes) - जितना गहरा, density उतनी अधिक
    • chassis density (1 gene) - जितना गहरा, density उतनी अधिक
  • अतिरिक्त बातें

    • simulation deterministic नहीं है, इसलिए सबसे अच्छी कार हमेशा एक जैसा प्रदर्शन नहीं कर सकती
    • दूरी के साथ terrain की complexity बढ़ती है
    • अब यह code GitHub पर community contributions के साथ उपलब्ध है

1 टिप्पणियां

 
GN⁺ 2024-04-29
Hacker News राय

संक्षेप में यह इस प्रकार है:

  • यह प्रोजेक्ट 20 साल पहले बनाया गया था, और Ruffle की बदौलत आज भी ब्राउज़र में चल सकता है
  • genetic algorithm की प्रकृति के कारण, किसी बिंदु पर कोई अच्छा डिज़ाइन दिखने लगे तो बाद की पीढ़ियों में उसके लगातार प्रभावी बने रहने की प्रवृत्ति होती है। mutation rate और mutation size सेटिंग्स को समायोजित करके देखना चाहिए
  • 280m के बाद सड़क नहीं रहती, इसलिए कारें एक छोटे bug की वजह से अंतहीन गड्ढे में गिर जाती हैं
  • Surprise बटन दबाकर कई पीढ़ियों को तेज़ी से पार किया जा सकता है। mutation rate और mutation size को बदलते हुए समय के साथ evolution की प्रक्रिया देखना दिलचस्प है
  • अगर वाहन में compliance के लिए कोई gene हो ताकि suspension लागू किया जा सके, तो यह दिलचस्प होगा। ज़्यादातर रन में यह Tron bike जैसी आकृति पर converge करने की प्रवृत्ति दिखाता है
  • पीढ़ियाँ बदलने पर भी terrain नहीं बदलता
  • पहले की HN चर्चाओं में भी इसका कई बार ज़िक्र हुआ है (boxcar2d जैसा, लेकिन Flash के बिना लागू किया गया)
  • बचपन में Boxcar 2D के साथ घंटों बिताने की याद ताज़ा हो गई
  • यह जानना रोचक होगा कि क्या 3D physics-आधारित simulation environment में भी ऐसा कुछ संभव है। यह भी दिलचस्प है कि क्या simulation में drone जैसी नई aerodynamic आकृतियों को खोजने के लिए genetic algorithm का उपयोग किया जा सकता है