Hola a todos En el artículo quiero describir mi experimento sobre la creación de "vida artificial" en una computadora.
¿Cómo se ve?
la imagen es clicableSe crea un entorno virtual en la computadora con sus propias reglas y se lanza la primera criatura viviente simple. Los llamaré bots. Los bots pueden morir o sobrevivir y dar descendencia. El descendiente puede ser ligeramente diferente del antepasado.
Bueno, entonces la
evolución y
la selección natural se toman como trabajo.
Y solo puedo ver el desarrollo del mundo.
Cuanto más inesperadas para el creador y las opciones de desarrollo mundial sean más diversas, más exitoso puede considerarse el experimento.
El comportamiento de los bots está controlado por el código escrito en ellos.
Es el código que es el genoma el responsable del comportamiento del bot y que cambiará durante la evolución.
La estructura interna del código es lo más interesante del proyecto.
El código debe ser simple y soportar varias modificaciones (cambio accidental de cualquier elemento del código) sobre sí mismo sin errores de sintaxis.Volveremos al código más tarde, primero describiré el mundo mismo.
Descripción del "mundo de los bots"
El mundo es un campo cuadrado bidimensional. Horizontal está cerrado en un círculo, es decir, si el bot va más allá del borde izquierdo, aparecerá en el lado derecho. Arriba y abajo, el movimiento está limitado por la pared. El mundo, tal como se concibe, es una sección de un reservorio, cuanto más alto, más energía se puede obtener del Sol. En la mitad inferior, la energía del Sol ya no está disponible. En realidad, esto ya es suficiente. Empecé a experimentar con un mundo así.
Luego agregó "minerales" en la parte inferior de los cuales puede obtener energía. Cuanto más profundo, más "minerales" puede obtener el bot. Después de eso, la parte más baja del mundo también comenzó a poblarse.
Los bots pueden moverse en ocho direcciones y sondear células adyacentes.
Los bots pueden comer otros bots ubicados en una celda adyacente.
Los bots acumulan energía y cuando acumulan una cantidad dada, su clon brota de ellos.
El mismo programa está escrito en el clon que en el padre, pero en un caso de cada cuatro cambió aleatoriamente un byte en el programa. Esto puede no afectar el comportamiento del clon de ninguna manera, ya que no se ejecutan todos los comandos en el programa del genoma, la mayoría del genoma puede no estar involucrado. También puede causar un deterioro o una mejora en la capacidad del robot para sobrevivir en este mundo. En el primer caso, el bot morirá o no podrá dejar muchos descendientes. Si las habilidades del robot mejoran, es más probable que deje más descendencia, lo que suplantará a los vecinos menos exitosos.
Los bots no mueren de vejez. Un bot puede morir si sus reservas de energía caen por debajo de cero, si es comido por otro bot y si ha acumulado la cantidad máxima de energía, debería brotar de un descendiente, pero está rodeado por todos lados y no puede hacer esto. Después de la muerte, si no se comió, el bot se convierte en orgánico, que comienza a hundirse hasta que encuentra un obstáculo. Después de eso, la materia orgánica permanece en el limbo. Otros bots pueden comer productos orgánicos.
Aquí di una breve idea del mundo virtual de los bots, suficiente para comprender más material. En realidad, el mundo en sí no es tan importante, puedes experimentar con mundos diferentes. Es mucho más interesante cómo funciona el gen del código.
Código genoma
- . — ( ). (
), , , . , , . 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.