在计算机上创建“人工生活”

大家好 在这篇文章中,我想描述一下我在计算机上创建“人造生活”的实验。

看起来像什么?

图片是可点击的

使用自己的规则在计算机上创建虚拟环境,并释放第一个简单的生物。 我称它们为机器人。 僵尸可能死亡或存活并繁殖后代。 后代可能与祖先略有不同。

好了, 进化自然选择就成为工作了。

我只能看着世界的发展。

对于创作者来说,越是意料之外的事情,世界发展的选择就越多样化,那么实验就可以越成功。

机器人的行为由其中编写的代码控制。

它是负责机器人行为的基因组代码,在进化过程中会发生变化。

代码的内部结构是项目中最有趣的事情。

该代码应该是简单的,并且可以承受自身上方的各种修改(代码中任何元素的意外更改),而不会出现语法错误。

稍后我们将返回代码,首先我将描述世界本身。

“机器人世界”的描述


世界是一个二维的正方形场。 水平将其封闭成一个圆圈,也就是说,如果漫游器超出左侧边缘,它将显示在右侧。 上下移动受墙的限制。 按照设想,世界是水库的一部分,越高,从太阳获得的能量就越多。 在下半部分,太阳的能量不再可用。 实际上,这已经足够了。 我开始尝试这样的世界。

然后,他在底部添加了“矿物质”,您可以获取能量。 机器人可以获取的越深,越“矿物质”。 此后,世界的下部也开始有人居住。

机器人可以沿八个方向移动并探测相邻的单元格。
机器人可以吃掉相邻单元中的其他机器人。

机器人积累能量,当它们积累一定数量时,它们的克隆就会从中萌芽。
克隆中将同父程序一样写入同一程序,但在一种情况下,程序中随机更改了四个字节中的一个字节。 这可能不会以任何方式影响克隆的行为,因为并非基因组程序中的所有命令都已执行,因此大多数基因组可能不会涉及。 它也可能导致机器人在这个世界上生存的能力下降或提高。 在第一种情况下,机器人会死亡或无法留下许多后代。 如果机器人的能力得到提高,则很可能留下更多的后代,这将取代不太成功的邻居。

机器人不会死于晚年。 如果一个机器人的能量储备低于零,被另一个机器人吃掉并且已经积累了最大的能量,则它可能会死掉,但它应该被后代萌芽,但是四面楚歌,不能这样做。 死亡后,如果未被食用,该机器人会变成有机物,然后开始下沉直至遇到障碍。 之后,有机物仍然处于边缘状态。 其他机器人可以吃有机食品。

在这里,我简要介绍了机器人的虚拟世界,足以了解更多内容。 实际上,世界本身并不那么重要,您可以尝试不同的世界。 编码基因的工作原理更加有趣。

代码基因组


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


All Articles