Criando "vida artificial" em um computador

Olá pessoal. No artigo, quero descrever meu experimento sobre a criação de "vida artificial" em um computador.

Como Ă© isso?

a imagem é clicável

Um ambiente virtual é criado no computador com suas próprias regras e o primeiro ser vivo simples é lançado. Vou chamá-los de bots. Bots podem morrer ou sobreviver e gerar filhotes. O descendente pode ser um pouco diferente do ancestral.

Bem, então a evolução e a seleção natural são tomadas como trabalho.

E eu sĂł posso assistir o desenvolvimento do mundo.

Quanto mais inesperadas para o criador e as opções de desenvolvimento mundial forem mais diversas, mais bem-sucedido o experimento pode ser considerado.

O comportamento dos bots Ă© controlado pelo cĂłdigo escrito neles.

É o código que é o genoma responsável pelo comportamento do bot e que mudará durante a evolução.

A estrutura interna do cĂłdigo Ă© a coisa mais interessante no projeto.

O código deve ser simples e suportar várias modificações (alteração acidental de qualquer elemento no código) acima de si, sem erros de sintaxe.

Voltaremos ao cĂłdigo mais tarde, primeiro descreverei o prĂłprio mundo.

Descrição do "mundo dos bots"


O mundo é um campo quadrado bidimensional. Horizontal, ele é fechado em um círculo, ou seja, se o bot ultrapassar a borda esquerda, ele aparecerá no lado direito. Acima e abaixo do movimento é limitado pela parede. O mundo, como concebido, é uma seção de um reservatório, quanto mais alto, mais energia pode ser obtida do Sol. Na metade inferior, a energia do Sol não está mais disponível. Na verdade, isso já é suficiente. Comecei a experimentar exatamente esse mundo.

Então ele adicionou "minerais" na parte inferior dos quais você pode obter energia. Quanto mais profundo, mais "minerais" o bot pode obter. Depois disso, a parte inferior do mundo também começou a ser povoada.

Os robôs podem se mover em oito direções e sondar células adjacentes.
Os robôs podem comer outros robôs localizados em uma célula adjacente.

Os robĂ´s acumulam energia e, quando acumulam uma quantidade determinada, o clone deles brota deles.
O mesmo programa é escrito no clone e no pai, mas em um caso em cada quatro alterados aleatoriamente um byte no programa. Isso pode não afetar o comportamento do clone de forma alguma, uma vez que nem todos os comandos no programa do genoma são executados, a maior parte do genoma pode não estar envolvida. Também pode causar uma deterioração ou melhoria na capacidade do bot de sobreviver neste mundo. No primeiro caso, o bot morrerá ou não poderá deixar muitos descendentes. Se as habilidades do bot melhorarem, é mais provável que haja mais descendentes, o que substituirá os vizinhos menos bem-sucedidos.

Bots não morrem de velhice. Um bot pode morrer se suas reservas de energia caírem abaixo de zero, se for consumido por outro bot e se tiver acumulado a quantidade máxima de energia, ele deve brotar de um descendente, mas é cercado por todos os lados e não pode fazer isso. Após a morte, se não foi comido, o bot se transforma em produtos orgânicos, que começam a afundar até encontrar um obstáculo. Depois disso, os orgânicos permanecem no limbo. Outros bots podem comer produtos orgânicos.

Aqui, dei uma breve idéia do mundo virtual dos bots, suficiente para entender mais material. Na verdade, o mundo em si não é tão importante, você pode experimentar com mundos diferentes. É muito mais interessante como o gene do código funciona.

Genoma do cĂłdigo


- . — ( ). ( ), , , . , , . 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/pt418545/


All Articles