🦕 生命游戏试验
Conmajia © 2012, 2018
Updated Mar. 3, 2018
Life Game
Initiated on July 23, 2012
Updated on March 3, 2018
我一直对人工智能很感兴趣,苦于数学基础太差,理论方面的东西理解起来十分吃力. 最近又翻出以前的学习目标:人工生命. 名字挺悬乎,其实很多人都曾和它有过交集,就算没有用到它进化出的好物种——智能机器人,至少也应该听过甚至中过它进化的恶劣物种——蠕虫病毒.
说起人工生命和计算机,就要从计算机历史的最开始说起. 因为计算机之父冯·诺依曼和他的小组成员勃克斯分别撰写过题为《自我繁衍的自动机理论》和《细胞自动机论文集》的文章,堪称人工生命最初的狂人.
背景故事就不说了,可以参考文献1、2.
框架搭建
目前框架已搭建好,世界大小30x40.
经典世界规则如下:
- 生命视野为1(8格)
- 生命承受力为3
- 生命在3时复活
- 生命在2时不变
- 其余情况死亡
如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;在其它情况下,该细胞为死.
我的世界规则如下:
- 生命只有上帝创建
- 生命视野为1(8格)
- 生命承受力3(否则死亡)
- 生命不可复活
由于经典规则中所有生命都有机会复活,所以在经典实现里,世界都是被填满了生命的,通过颜色等「隐藏」死亡的生命,使之「看起来」消失了. 我打算设计的是一个模仿真实的世界规则,所以世界里空白的地方不能有生命存在.
图1是试验截图.
进展情况
28 May, 2012
- 今天尝试将世界地图封装为控件,失败. 功能上实现了,但原来24%的CPU负荷直接飙升到了2530%,开销相当大. 具体原因似乎是嵌套调用和太多参数传递的问题. 地图控件的架构设计也很浪费资源,为每个地图点缓存了一个
Color
,待解决. - 在生物逻辑上加入了自然老化、休息和饥饿捕食的规则. 使用了仿真自然随机数发生器来模拟一切和自然概率有关的现象,如攻击判定、进攻或逃跑等. 图2是改进后的试验截图.
图中的颜色含义如表1所示.
颜色 | 含义 |
---|---|
健康 | |
亚健康 | |
饥饿 | |
濒死 | |
死亡 |
迈向生命
在增加了健康因素,实验体会主动觅食,接近并攻击较弱的实验体.
在进化的过程中,出现了一些有意思的现象:
- 有的细胞在非常健康(HP>80+)的时候,也会追着弱小的实验体咬,杀死实验体后,HP增加不到5点,而代码中,标称值是在HP<70时才开始觅食,且会整个吃掉尸体。
- 有的实验体甚至有了那么一点点的智力(或者说仅仅是种本能). 比如图3里这个第6392代的家伙,它只要吃饱了,就会绕场一周,而且总是往墙上撞,企图逃跑.
The End. \(\Box\)
参考文献
- 生命游戏,百度百科,链接
if(jQuery('#no-reward').text() == 'true') jQuery('.bottom-reward').addClass('hidden');