COSMIC. 7 سنوات

مرحبا يا هبر!

في عام 2012 ، كتبت منشورًا عن هوايتي - الكون: نمذجة تطور الكائنات الحية متعددة الخلايا


لقد مر ما يقرب من 7 سنوات منذ ذلك الحين ، عملت خلالها على تطوير هذا المشروع. اليوم أريد أن أخبركم قليلاً عن ما تعلمت القيام به وكيف أخطط لتطوير المشروع أكثر.

الدافع "التطور الكبير"


يعتبر Cosmos 2012 مثالاً رائعًا على الشعور بـ "تأثير الانغماس" من المشاهدة ، والتي كانت نقطة الانطلاق في تطوير الفكرة لجعل "محاكاة للحياة على GPU".

ومع ذلك ، لم يحدث هذا التطور هناك: يجب أن تتطور العملية باستمرار ، ولا تصل إلى حالة نهائية بعد دقائق قليلة من الإطلاق.

اتضح أن أصعب شيء هو تحقيق أطول تطور ممكن للأنواع التي "لم تتقارب مع حدود التطور" ، مما أدى إلى ظهور مجموعة متنوعة حقيقية من الأشكال. بعد ذلك ، سيكون من الممكن استكشاف هذه النماذج ، وبعد ذلك سيكون هناك اهتمام حقيقي بإدارة المحاكاة لعدة أيام ، أسابيع ، أشهر - في انتظار ظهور أشكال معقدة ومتطورة بشكل متزايد للدراسة.

فيزياء


يمكنك التفكير في أي فيزياء: باستخدام GPU ، يمكنك بناء مجموعة واسعة من النماذج مع عدد العناصر الكافية للعمليات التطورية في الوقت الحقيقي. أي مزيج من مبادئ تفاعل بعض "العناصر" ، "الذرات" ، "الخلايا" - ينشأ عن مُنشئ متطور للأشكال حيث يمكن لبعض المحاكاة المنظمة المعقدة أن تتجمع حرفيًا من لا شيء.

في البداية ، أردت إنشاء مادة متعددة الخلايا من شأنها أن تسمح للكون باللمس مباشرة مع بعضها البعض ، "دون المرور" ، مع وجود بنية من الكرات متصلة ببعضها البعض في فسيفساء ، على غرار الأنسجة الخلوية للكائنات الحية الحقيقية.

كان من الضروري أن تصبح الكائنات أكثر شبهاً بالكائنات الحية ، وظهر المعنى المادي في بنية أجسامها المختلفة. يمكنك "رسم" الجسم بالجلد ، والأطراف ، والعضلات ، والساقين ، والأعضاء الداخلية مع هذه الخلايا ، وستكون هذه الأجسام موجودة فعليًا وتتطور داخل المحاكاة.

كان أحد الأمثلة على CUDA SDK هو تحقيق تصادم الجسيمات الدائرية بناءً على الشبكة المكانية ، مما يسمح للجزيئات بالتفاعل فقط مع الجسيمات القريبة.

لقد اكتشفت كيف يعمل المثال الثلاثي الأبعاد - وكتبت محاكاة لـ 2D.
في ذلك الوقت GTX 580 ، سمح هذا بحساب 256 ألف جسيم في الوقت الفعلي.


CUDA + JavaScript


هناك مشكلة أخرى وهي أنه كان من المناسب بالنسبة لي التوصل إلى مفهوم كوني في جافا سكريبت ، في حين أن المحاكاة على نطاق واسع حقًا أصبحت ممكنة فقط على وحدة معالجة الرسومات.

حوالي 100 مرة أكثر ملاءمة وأسرع على JS.
وحوالي 1000 مرة أسرع على GPU.

كان الحل هو كتابة فيزياء تفاعل الجسيمات على CUDA ، وإتاحة الفرصة لإنشاء جزيئات والتحكم في المعلمات من JavaScript ، ودمج محرك Google V8 الذي ظهر بعد ذلك في المحاكاة كلغة برمجة.

لقد أضفت القدرة على توصيل الجسيمات بنفس "الأشرطة المطاطية" كما كانت متصلة في المسافات الأولى. نتيجة لذلك ، يمكن للمرء كتابة التعليمات البرمجية في البرنامج النصي للتحكم JS:

var ball1 = new Ball(); var ball2 = new Ball(); ball1.xy = [0,0]; ball1.rgb = [1,1,1]; ball2.xy = [1,0]; ball2.rgb = [1,1,1]; var link = new Link(ball1, ball2); 

وظهرت كرتان بيضاء على الشاشة ، متصلة ببعضها البعض بواسطة "شريط مطاطي".

بالفعل في هذا المستوى من تطوير المحرك ، ظهرت فرص مثيرة للاهتمام للتجارب في الفيزياء الافتراضية:


هيكل


بإضافة العديد من الخصائص إلى الكرات ، مثل قوة الرابطة والكتلة والحجم والمرونة - حصلت على مُنشئ يتحكم فيه جافا سكريبت ، حيث يمكنني رسم هياكل آلاف المخلوقات التي تتكون من خلايا ذات خواص فيزيائية مختلفة - وقد تم حساب كل ذلك بواسطة وحدة معالجة الرسومات في الوقت الفعلي.

كموازنة بين السعر والجودة ، تم اختيار شكل ناعم مبسط للأخطبوط.

يتم تحقيق كل عنصر من عناصر الجسم (الوسط ، الأطراف) بمساعدة الحد الأدنى الضروري من الكرات ، في حين يتم توزيع الحجم والكتلة بشكل طبيعي - حيث تتسرب الأطراف نحو الوسط - تصبح المسألة أكثر دواما وكثافة:


القدرة على الحركة


كانت الخطوة التالية هي خلق حركية الأجسام الكونية. كانت العضلات سهلة الصنع - كان يكفي لتشديد الروابط بين الكرات على طول الكفوف ، وهذا تسبب في تأثير تقلص العضلات.

تتصل الخلايا العصبية بالوكالة بهذه العضلات ، وإذا كانت هناك إشارة ، تنقبض العضلات. عضلات لكل طرف - أخطبوط ثنائي الأبعاد يمكن التحكم فيه بالكامل.

بمساعدة شبكة عصبية متكررة صغيرة تحور بشكل عشوائي (من 10 إلى 100 خلية عصبية) واختيار بسيط لأفضل الأفراد وفقًا للمعيار ، على سبيل المثال ، "من يمكنه التحرك أكثر" ، يمكنك استدعاء حركية الحركة الضرورية لكل شكل جسم فردي:


سفر التكوين


آخر شكل الجسم استكشاف بنشاط هو "hexoids". تتكون أجسام هذه المخلوقات من خلايا تشكل أشكالًا تعسفية من كرات من نفس الحجم على أساس شبكة غير صارمة قريبة من سداسية.

هذا النموذج مناسب تمامًا لدراسة التطور المتزامن لشكل الجسم وحركته "بالتزامن" ، مع تعظيم إمكانات التجارب مع الخلايا من أنواع مختلفة ، مع اختلاف القوة والوظيفة. على سبيل المثال ، يمكن أن تتكون الأجسام الكونية من مجموعات من الخلايا الصلبة التي تشكل إطار المخلوق والعضلات التي تحدد الهيكل في الحركة.

في المستقبل ، عند الانغماس في بيئة معقدة ، على أساس هذه المبادئ ، يمكن تطوير أشكال مختلفة بشكل واضح من المخلوقات - بعضها سيكون أكثر "مدرعة" ، والبعض الآخر مصمم للحركة السريعة ، والبعض الآخر لهجوم فعال ، إلخ.


الصيد والتربية


إذا تم تعليم الكون للبحث عن بعضهم البعض ، يمكن أن تظل كمية المادة في المحاكاة ثابتة ، في حين أن أجيال من المخلوقات ستنجح بعضها البعض.

ثم يمكن أن تتشكل سلاسل الغذاء المستقرة وتبدأ عملية كبيرة من التطور المشترك للأنواع المختلفة من الكائنات.

بالنسبة للتجربة الأولى ، استخدمت 4 أنواع من الخلايا:

  • خلية هضمية (ملونة) - عند لمس جسم كوني آخر ، يعض ​​قطعة
  • درع (ضوء) - قفص ميكانيكي أقوى لا يمكن عضه
  • النسيج الضام (الرمادي) - نسيج مرن ناعم
  • الخلية الحركية (المظلمة) - تسمح للمساحة بالتحرك بشكل أسرع

بمجرد أن يأكل الكون عددًا كافيًا من الخلايا ، فإنه "ينقسم" ، مكونًا نسخته المتحورة قليلاً.

تقوم مثل هذه العملية بالفعل بإنشاء نماذج ذات بنية وسلوك متباينين:



موطن


المساحة الفارغة الباردة ليست هي أفضل مكان للعيش فيه.

لإنشاء منطقة حيوية ، يمكنك استخدام مواد البناء الأساسية - جزيئات التربة والمياه والضوء والخلايا النباتية القادرة على النمو.

تلتصق جزيئات التربة مع بعضها البعض ، وتشكل منصة صلبة. قد تبلل التربة إذا حصلت عليها جزيئات الماء.

على التربة الرطبة ، في ضوء جيد ، يمكن أن تنمو النباتات. الكتلة النباتية هي المصدر الرئيسي للأغذية العضوية للأشكال الحيوانية.

الأجسام الحيوانية ، المتحللة ، تعيد المواد غير العضوية إلى النظام البيئي الحيوي.





PS


هذا مقال مراجعة ، لا تسمح أبعاده بالإفصاح المتماسك عن جميع المجالات التي يتطور فيها المشروع.

أنا الآن أعمل على مصمم تفاعلي كامل الميزات يمنحك الفرصة "للعب ألعاب الفضاء" في وضع الحماية ، وتصميم أنواع جديدة من المخلوقات ، ورسم النظم الإيكولوجية "في وضع الله" ومراقبة التطور في الوقت الحقيقي.

بالنسبة للجزء الفني ، لا يزال التقدم ثابتًا: منذ عام 2012 ، تغير نموذج التطوير 4 مرات ، حيث انتقل تدريجياً من مفهوم CUDA + JS الموضح في هذه المقالة إلى نماذج GPU ORM التي تعمل بالكامل على جانب GPU ولديها لغة الكائن الخاصة بها للإجراءات المخزنة.

هذا كل شيء ، شكرا لك على الاهتمام!

تابع تطوير المشروع ودعم التطوير هنا:

https://www.patreon.com/samadhi_toolbox

لا يزال هناك عدد قليل من مشاركات المدونة ، لكن إذا كان هناك مشتركون ، فأنا أعدك بنشرها ، على مدار 7 سنوات قمت بتجميع الكثير من المحتوى بدون ضمير

في الختام - فكرة العمل قليلا:

Source: https://habr.com/ru/post/ar458612/


All Articles