Hallo an alle. In dem Artikel möchte ich mein Experiment zur Schaffung von „künstlichem Leben“ auf einem Computer beschreiben.
Wie sieht es aus?
Das Bild ist anklickbarAuf dem Computer wird eine virtuelle Umgebung mit eigenen Regeln erstellt und das erste einfache Lebewesen freigegeben. Ich werde sie Bots nennen. Bots können sterben oder überleben und Nachkommen geben. Der Nachkomme kann sich geringfügig vom Vorfahren unterscheiden.
Nun, dann werden
Evolution und
natürliche Auslese als Arbeit genommen.
Und ich kann nur die Entwicklung der Welt beobachten.
Je unerwarteter die Möglichkeiten für den Schöpfer und die Weltentwicklung sind, desto erfolgreicher kann das Experiment betrachtet werden.
Das Verhalten von Bots wird durch den darin geschriebenen Code gesteuert.
Es ist der Code, der das Genom ist, das für das Verhalten des Bots verantwortlich ist und das sich während der Evolution ändert.
Die interne Struktur des Codes ist das Interessanteste im Projekt.
Der Code sollte einfach sein und verschiedenen Änderungen (versehentliches Ändern eines Elements im Code) über sich selbst ohne Syntaxfehler standhalten.Wir werden später auf den Code zurückkommen. Zuerst werde ich die Welt selbst beschreiben.
Beschreibung der "Welt der Bots"
Die Welt ist ein zweidimensionales quadratisches Feld. Horizontal wird es in einem Kreis geschlossen, dh wenn der Bot über den linken Rand hinausgeht, wird er auf der rechten Seite angezeigt. Oberhalb und unterhalb der Bewegung wird die Bewegung durch die Wand begrenzt. Die Welt ist, wie gedacht, ein Abschnitt eines Reservoirs. Je höher, desto mehr Energie kann von der Sonne gewonnen werden. In der unteren Hälfte steht die Energie der Sonne nicht mehr zur Verfügung. Eigentlich reicht das schon. Ich begann mit einer solchen Welt zu experimentieren.
Dann fügte er „Mineralien“ hinzu, an deren Grund man Energie gewinnen kann. Je tiefer, desto mehr "Mineralien" kann der Bot bekommen. Danach begann auch der untere Teil der Welt zu bevölkern.
Bots können sich in acht Richtungen bewegen und benachbarte Zellen untersuchen.
Bots können andere Bots essen, die sich in einer benachbarten Zelle befinden.
Bots sammeln Energie und wenn sie eine bestimmte Menge ansammeln, knospen ihre Klone von ihnen.
Im Klon wird das gleiche Programm wie im übergeordneten Programm geschrieben, in einem Fall jedoch von vier zufällig geänderten Bytes im Programm. Dies kann das Verhalten des Klons in keiner Weise beeinflussen, da nicht alle Befehle im Genomprogramm ausgeführt werden und der größte Teil des Genoms möglicherweise nicht beteiligt ist. Es kann auch zu einer Verschlechterung oder Verbesserung der Überlebensfähigkeit des Bots in dieser Welt führen. Im ersten Fall stirbt der Bot entweder oder kann nicht viele Nachkommen hinterlassen. Wenn sich die Fähigkeiten des Bots verbessern, ist es wahrscheinlicher, dass mehr Nachkommen zurückbleiben, was weniger erfolgreiche Nachbarn verdrängt.
Bots sterben nicht an Alter. Ein Bot kann sterben, wenn seine Energiereserven unter Null fallen, wenn er von einem anderen Bot gefressen wird und wenn er die maximale Energiemenge angesammelt hat, muss er einen Nachkommen abknospen, ist aber von allen Seiten umgeben und kann dies nicht. Wenn es nach dem Tod nicht gegessen wurde, verwandelt sich der Bot in organische Stoffe, die zu sinken beginnen, bis er auf ein Hindernis stößt. Danach bleibt die organische Substanz in der Schwebe. Andere Bots können Bio essen.
Hier gab ich eine kurze Vorstellung von der virtuellen Welt der Bots, die ausreichte, um weiteres Material zu verstehen. Eigentlich ist die Welt selbst nicht so wichtig, man kann mit verschiedenen Welten experimentieren. Es ist viel interessanter, wie das Code-Gen funktioniert.
Code-Genom
- . — ( ). (
), , , . , , . 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 , . , . , , , .
, , .
, , .
,
«».
«» , .
, , - . . .
- , .
, , ( ).
-, , , , . , , .
, , .
-, , .
, . 93 « ». . , - .
, .
Pixilangyadi.sk/d/rLamoeyt3NBRwLRomanoBruno Java
GitHub.