1 पॉइंट द्वारा GN⁺ 2023-12-30 | 1 टिप्पणियां | WhatsApp पर शेयर करें

कण जीवन सिम्युलेशन

  • परमाणुओं जैसे कणों के बीच आकर्षण और प्रतिकर्षण के सरल नियमों का उपयोग करके आदिम कृत्रिम जीवन का सिम्युलेशन करने वाला एक सरल प्रोग्राम।
  • GUI elements को छोड़कर, कोड एक पेज से भी कम है।
  • वीडियो ट्यूटोरियल और मार्गदर्शन नीचे देखा जा सकता है।

और जानें (YouTube वीडियो ट्यूटोरियल)

  • YouTube वीडियो ट्यूटोरियल का लिंक उपलब्ध है।

ऑनलाइन डेमो (JavaScript संस्करण)

  • 2D और 3D लाइव डेमो के लिंक उपलब्ध हैं।

इंटरफ़ेस (C++ संस्करण)

उदाहरण परिणाम

पुन: उत्पन्न किए जा सकने वाले कुछ रोचक पैटर्न

  • इन पैटर्नों को पुन: उत्पन्न करने के लिए parameters का बिल्कुल समान होना ज़रूरी नहीं है।
  • रोचक पैटर्न पाने का सबसे अच्छा तरीका पहले random parameters की खोज करना है।
  • कोई रोचक पैटर्न मिलने पर धीरे-धीरे fine-tuning करने की कोशिश करें।
  • local maxima पर अटके रहने से बचने के लिए कभी-कभी parameters में बड़े jump किए जा सकते हैं।

उपयोग कैसे करें

  • इस repository को डाउनलोड करके unzip करें, फिर /particle_life/bin/ फ़ोल्डर में जाएँ और particle_life.exe पर क्लिक करें।

कोड

  • source code C++, JavaScript, Python में उपलब्ध है।
  • YouTube वीडियो ट्यूटोरियल का लिंक उपलब्ध है।
  • यदि आप C++ प्रोग्राम में योगदान देना चाहते हैं, तो core algorithm "/particle_life/src/ofApp.cpp" की पहली 100 लाइनों में है।
  • बाकी हिस्सा openFrameworks लाइब्रेरी द्वारा दिए गए GUI components और rendering controls हैं।
  • शुरू करने के लिए इस repository और openFrameworks लाइब्रेरी को डाउनलोड करें, फिर openFrameworks के projectGenerator का उपयोग करके /particle_life/ फ़ोल्डर को project में import करें।
  • या नया openFrameworks project बनाएँ, उसमें ofxGui जोड़ें, और बने हुए project files को यहाँ दिए गए /src/ फ़ोल्डर से बदल दें।
  • अब आप C++ कोड compile कर सकते हैं।

अन्य ports

  • Godot, Rust, Go-1, Go-2, Go-3, Python, Lua, QB64-PE, WebGL, Java, C# Winforms, FreeBasic आदि कई भाषाओं में port किए गए versions की सूची उपलब्ध है।

JavaScript कोड उदाहरण

  • JavaScript code example और optimized version particle_life.html फ़ाइल देखी जा सकती है।

संबंधित विषय

  • कण जीवन सिम्युलेशन, आदिम सूप - evolution, Conway का Game of Life, cellular automata, self-organizing patterns आदि पर विवरण।
  • यह प्रोजेक्ट Jeffery Ventrella के Clusters से प्रेरित है, और collision detection लागू नहीं करने के कारण यह real time में हज़ारों कणों का सिम्युलेशन कर सका।
  • GUI controls जोड़कर parameters को real time में आसानी से fine-tune और explore करना संभव बनाया गया, जिससे बहुत सरल संबंध मॉडल से पहले कभी न देखे गए पैटर्न सामने आए।
  • यह कोड शैक्षिक सामग्री के रूप में शुरू हुआ था, और इसका लक्ष्य non-programmers तथा आम जनता को यह दिखाना था कि complexity, simplicity से उत्पन्न हो सकती है।

करने योग्य सूची

  1. parameters को save और load करने की सुविधा जोड़ना (ताकि लोग रोचक मॉडल आसानी से साझा कर सकें)
  2. अधिक particle types जोड़ने की सुविधा (अभी यह चार particle types पर स्थिर है)
  3. वर्तमान में सबसे बड़ा bottleneck nested for loop है जो सभी कणों के बीच pairwise distance की गणना करता है, इसलिए computational complexity quadratic है।
  4. बिंदु 3 के विकल्प के रूप में, pairwise distance calculation इतनी parallelizable है कि इसे GPU पर गणना किया जा सकता है।
  5. स्क्रीन का आकार बदलने की सुविधा जोड़ना और boundary checks में सुधार करना (तेज़ गति वाले कई कण स्क्रीन की सीमा से बाहर जा सकते हैं)।
  6. parameters पर अधिक सूक्ष्म नियंत्रण देने वाला अधिक intuitive UI जोड़ना।
  7. random button जोड़ना, या इससे बेहतर, एक सरल meta-rule रखना जो शुरुआती rules को लगातार बदलता रहे ताकि patterns local maxima में फँसे बिना बदलते रहें।
  8. parameters चुनने और optimize करने के लिए evolutionary algorithm का उपयोग करना बेहतर तरीका हो सकता है, लेकिन इसके लिए fitness function लिखना होगा। फिलहाल इस प्रोग्राम के क्षेत्र में fitness function क्या होना चाहिए, यह ज्ञात नहीं है।

GN⁺ की राय

  • यह प्रोजेक्ट यह दृश्य रूप से दिखाने में बहुत मूल्यवान है कि जटिल जीवन-जैसी घटनाएँ सरल नियमों से कैसे उत्पन्न हो सकती हैं।
  • programming और artificial life research में रुचि रखने वाले शुरुआती software engineers के लिए यह एक रोचक परिचयात्मक सामग्री हो सकती है।
  • कई भाषाओं में port किए गए versions उपलब्ध होने से, यह विभिन्न programming languages की समझ बढ़ाने में मदद कर सकता है।

1 टिप्पणियां

 
GN⁺ 2023-12-30
Hacker News की राय
  • स्कूल में अपने पहले coding project के रूप में मैंने Conway का Game of Life किया था, लेकिन black-and-white उबाऊ लगा, इसलिए RGB "genes" जोड़े और parents के रंग मिलाकर mutation दिया। बोर्ड पर कब्ज़ा करती हुई "factions" को देखना मज़ेदार है।
  • सबसे दिलचस्प नतीजा यह था कि कुछ समय बाद बड़े, अस्थिर clumps और स्थिर clumps बनते थे, और फिर सिस्टम उसी अवस्था में रुक जाता था। उससे पहले, उम्मीद के मुताबिक objects को मिलते और एक-दूसरे में merge होते देखा गया।
  • मैंने हाल ही में कुछ ऐसा ही बनाया, लेकिन यह version सब कुछ WebGL shaders में करता है और simulation state को textures/uniforms में रखता है। यह ज़्यादा particles को simulate और render कर सकता है, लेकिन कुछ unsupported WebGL extension features इस्तेमाल करता है, इसलिए यह हर device पर नहीं चल सकता।
  • यह John Conway के Game of Life का अधिक complex version है, और यह हैरान करने वाला है कि छोटे scale पर life-जैसे forms कितनी आसानी से बन जाते हैं, जबकि ऐसा लगता है कि हमारे universe के parameters life formation को कठिन बनाते हैं।
  • संबंधित लिंक:
  • Conway के Game of Life में रंग-बिरंगे 'genes' मिलाना ऐसा लगता है जैसे rainbow palette से coding करना, और clumps ऐसे लगते हैं जैसे अपना छोटा-सा drama करके फिर बस आराम करने लगते हों। Simulation में शानदार movement और forms उभरते हैं, जैसे characters की जगह shapes वाली कोई mini superhero movie हो।
  • मैंने "Altphy" नाम का एक 3D experiment शुरू किया था, लेकिन real-time processing के लिए यह बहुत complex है, इसलिए यह इरादे के मुताबिक काम नहीं करता। लगा कि code के कुछ हिस्से या ideas कभी आगे विकसित हो सकते हैं, इसलिए साझा कर रहा हूँ।
  • मैंने Godot 4 में compute shaders का उपयोग करके ऐसा ही कुछ करने की कोशिश की थी। अगर रुचि हो तो इसे देखना recommend करूँगा।
  • मैं 3D JS version देख रहा हूँ, और यह शायद मूल Conway के Game of Life या 90s के Primordial Life screensaver के बाद से मेरी पसंदीदा चीज़ हो सकती है। मैं shader support जोड़ने पर विचार करने का सुझाव दूँगा। इसका धीमा और "ज़्यादा blobby" version full-screen में चलते हुए देखना चाहूँगा। शायद यह Mac को हीटर भी बना दे, लेकिन फिलहाल वह भी bonus है।
  • काम बहुत शानदार है, लेकिन अफ़सोस है कि मैं इसे दीवार पर लगे TV पर नहीं चला सकता। पहले मैंने "Particle Life" को physicists के लिए किसी T-shirt brand समझ लिया था, और मुझे उम्मीद थी कि T-shirts पर ऐसे slogans होंगे जैसे: "आपकी बात सुनने के बाद अब मुझे लगता है कि आप बस quantum field में एक बदकिस्मत vibration भर हैं, इसलिए आप जो भी कहते हैं उसे नज़रअंदाज़ करना मुझे पूरी तरह जायज़ लगता है।"