Bonjour à tous. Dans l'article, je veux décrire mon expérience sur la création d'une «vie artificielle» sur un ordinateur.
À quoi ça ressemble?
l'image est cliquableUn environnement virtuel est créé sur l'ordinateur avec ses propres règles et la première créature vivante simple est libérée. Je vais les appeler des bots. Les robots peuvent mourir ou survivre et donner une progéniture. Le descendant peut être légèrement différent de l'ancêtre.
Eh bien, l'
évolution et
la sélection naturelle sont considérées comme un travail.
Et je ne peux que regarder le développement du monde.
Plus le créateur est inattendu et plus les options de développement du monde seront diverses, plus l'expérience pourra être envisagée avec succès.
Le comportement des bots est contrôlé par le code qui y est écrit.
C'est le code qui est le génome qui est responsable du comportement du bot et qui va changer au cours de l'évolution.
La structure interne du code est la chose la plus intéressante du projet.
Le code doit être simple et résister à diverses modifications (changement accidentel de n'importe quel élément du code) au-dessus de lui-même sans erreurs de syntaxe.Nous reviendrons sur le code plus tard, je décrirai d'abord le monde lui-même.
Description du "monde des bots"
Le monde est un champ carré à deux dimensions. Horizontalement, il est fermé dans un cercle, c'est-à-dire que si le bot dépasse le bord gauche, il apparaîtra sur le côté droit. Au-dessus et en dessous, le mouvement est limité par le mur. Le monde, tel qu'il est conçu, est une section d'un réservoir, plus il est élevé, plus l'énergie peut être obtenue du Soleil. Dans la moitié inférieure, l'énergie du Soleil n'est plus disponible. En fait, cela suffit déjà. J'ai commencé à expérimenter avec un tel monde.
Il a ensuite ajouté des «minéraux» au fond desquels vous pouvez obtenir de l'énergie. Plus le bot est profond, plus le bot peut en obtenir. Après cela, la partie inférieure du monde a également commencé à être peuplée.
Les robots peuvent se déplacer dans huit directions et sonder les cellules adjacentes.
Les robots peuvent manger d'autres robots situés sur une cellule adjacente.
Les bots accumulent de l'énergie et lorsqu'ils accumulent une quantité donnée, leurs clones s'en échappent.
Le même programme est écrit dans le clone que dans le parent, mais dans un cas sur quatre, il a changé aléatoirement un octet dans le programme. Cela ne peut en aucun cas affecter le comportement du clone, car toutes les commandes du programme génome ne sont pas exécutées, la plupart du génome peut ne pas être impliqué. Il peut également entraîner une détérioration ou une amélioration de la capacité du bot à survivre dans ce monde. Dans le premier cas, le bot mourra ou ne pourra pas laisser de nombreux descendants. Si les capacités du bot s'améliorent, il est plus susceptible de laisser plus de progéniture, ce qui supplantera les voisins moins prospères.
Les robots ne meurent pas de vieillesse. Un bot peut mourir si ses réserves d'énergie tombent en dessous de zéro, s'il est mangé par un autre bot et s'il a accumulé la quantité maximale d'énergie, il doit repousser un descendant, mais il est entouré de tous côtés et ne peut pas le faire. Après la mort, s'il n'a pas été mangé, le bot se transforme en matière organique, qui commence à couler jusqu'à ce qu'il rencontre un obstacle. Après cela, les matières organiques restent dans les limbes. D'autres robots peuvent manger des produits biologiques.
Ici, j'ai donné une brève idée du monde virtuel des bots, suffisante pour comprendre davantage de matériel. En fait, le monde lui-même n'est pas si important, vous pouvez expérimenter avec différents mondes. Il est beaucoup plus intéressant de savoir comment fonctionne le gène code.
Génome de code
- . — ( ). (
), , , . , , . 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.