خلق "حياة مصطنعة" على الكمبيوتر

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

كيف تبدو؟

الصورة قابلة للنقر

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

حسنًا ، يُؤخذ التطور والانتقاء الطبيعي كعمل.

ولا يسعني إلا أن أشاهد تطور العالم.

كلما كانت خيارات التطوير غير المتوقعة للمنشئ والعالم أكثر تنوعًا ، كلما كانت التجربة أكثر نجاحًا.

يتم التحكم في سلوك الروبوتات بواسطة الرمز المكتوب فيها.

الكود هو الجينوم المسؤول عن سلوك البوت والذي سيتغير أثناء التطور.

الهيكل الداخلي للكود هو الشيء الأكثر إثارة للاهتمام في المشروع.

يجب أن يكون الرمز بسيطًا ويتحمل التعديلات المختلفة (التغيير العرضي لأي عنصر في الرمز) فوق نفسه دون أخطاء في بناء الجملة.

سنعود إلى الرمز لاحقًا ، أولاً سأصف العالم نفسه.

وصف "عالم الروبوتات"


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

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

يمكن أن تتحرك البوتات في ثمانية اتجاهات وتستكشف الخلايا المجاورة.
يمكن للبوت أن تأكل السير الأخرى الموجودة في زنزانة مجاورة.

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

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

لقد قدمت هنا فكرة موجزة عن عالم الروبوتات الافتراضي ، وهو ما يكفي لفهم المزيد من المواد. في الواقع العالم ليس مهمًا جدًا ، يمكنك تجربة عوالم مختلفة. من المثير للاهتمام كيف يعمل الجين الشفري.

كود الجينوم


- . — ( ). ( ), , , . , , . 64 . , . , ( ) . , . . 64 , 64 ( 0 63).



. 23. «». , , , . . , , , . , «», . -.



, 1 63. , 0, «», 1. 1 — 63. , . 63 «», . . , , 64.

, .

. , 8 , .

64 (0..63) . .



, 25 «». 25 (), . , . 0 63, 8. , 8 . 8 (0..7) — , . (64) 8. . , , , .

, , . . , « », .

, « ?» , , , , , . 1 1000, 0 63. , , 15. :

0, 15, 30, 45, 60 ...... 945.

. .



() 10.

№10. 33, « ?».
(+1), , .

14*15=210

210, +2.
23. .

10+23=33.

33 №33

, 210, +3.
8. .

10+8=18.

18 №18

, «», « », «», « » . , , , .



() 7.
№7. 26, «».
(+1), , .

18 % 8 = 2

, , , +2.
0. .

7+0=7.

№7. , .

.

, +3.
3. .

7+3=10.

10 №10 , , .

, +4.
43. .

7+43=50. 50 №50
, +5. 24. . 7+24=31.

31 №31

, +6.
59. .

7+59=66.

66. , 64 2 №2

, , . . . , .

, - , . , , .

.

. , . : «», «», «», « » . ( , «», «», « ?» ) 15 , .

, .


, . , , , . , «» «» , . 25 . , , , ,

. , , «».

.

. , «» , .
.

, , , , .



. «»,







. - .

.



( ) .
, «» . , 4 8.



. , , .

. , .

. . , .



. , . , . , ( , ).



, , , . .



. , . . (-) .

, 7- , , , . , RomanoBruno Java. . .

, , . .

, « ». - .







21 . , .



347 , .



2000 , . , . , , , .

, , .


, , .

, «». «» , .
, , - . . .

- , .

  • .
  • , ret
  • .

<> , , . , . , .</>


, , ( ). -, , , , . , , .

, , .

-, , .


, . 93 « ». . , - .


, .

Pixilang
yadi.sk/d/rLamoeyt3NBRwL

RomanoBruno Java GitHub.

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


All Articles