🦕 生命游戏试验

Conmajia © 2012, 2018
Mar. 3, 2018

Life Game

Initiated on July 23, 2012
Updated on March 3, 2018

我一直对人工智能很感兴趣,苦于数学基础太差,理论方面的东西理解起来十分吃力. 最近又翻出以前的学习目标:人工artificial生命life. 名字挺悬乎,其实很多人都曾和它有过交集,就算没有用到它进化出的好物种——智能机器人,至少也应该听过甚至中过它进化的恶劣物种——蠕虫病毒.

说起人工生命和计算机,就要从计算机历史的最开始说起. 因为计算机之父冯·诺依曼和他的小组成员勃克斯分别撰写过题为《自我繁衍的自动机理论》和《细胞自动机论文集》的文章,堪称人工生命最初的狂人.

背景故事就不说了,可以参考文献1、2.

框架搭建

目前框架已搭建好,世界大小30x40.

经典世界规则如下:

  • 生命视野为1(8格)
  • 生命承受力为3
  • 生命在3时复活
  • 生命在2时不变
  • 其余情况死亡

如果一个细胞周围有2个细胞为,则该细胞的生死状态保持不变;在其它情况下,该细胞为.

我的世界规则如下:

  • 生命只有上帝创建
  • 生命视野为1(8格)
  • 生命承受力3(否则死亡)
  • 生命不可复活

由于经典规则中所有生命都有机会复活,所以在经典实现里,世界都是被填满了生命的,通过颜色等「隐藏」死亡的生命,使之「看起来」消失了. 我打算设计的是一个模仿真实的世界规则,所以世界里空白的地方不能有生命存在.

图1是试验截图.

图1 生命游戏试验截图

进展情况

28 May, 2012

  1. 今天尝试将世界地图封装为控件,失败. 功能上实现了,但原来2~4%的CPU负荷直接飙升到了25~30%,开销相当大. 具体原因似乎是嵌套调用和太多参数传递的问题. 地图控件的架构设计也很浪费资源,为每个地图点缓存了一个Color,待解决.
  2. 在生物逻辑上加入了自然老化、休息和饥饿捕食的规则. 使用了仿真自然随机数发生器来模拟一切和自然概率有关的现象,如攻击判定、进攻或逃跑等. 图2是改进后的试验截图.
图2 改进的生命游戏试验截图

图中的颜色含义如表1所示.

表1 生命游戏试验图例
颜色含义
健康
亚健康
饥饿
濒死
死亡

迈向生命

在增加了健康因素,实验体会主动觅食,接近并攻击较弱的实验体.
在进化的过程中,出现了一些有意思的现象:

  1. 有的细胞在非常健康(HP>80+)的时候,也会追着弱小的实验体,杀死实验体后,HP增加不到5点,而代码中,标称值是在HP<70时才开始觅食,且会整个吃掉尸体。
  2. 有的实验体甚至有了那么一点点的智力(或者说仅仅是种本能). 比如图3里这个第6392代的家伙,它只要吃饱了,就会绕场一周,而且总是往墙上撞,企图逃跑.
图3 第6392代试验体截图

The End. \(\Box\)

参考文献

  1. 生命游戏,百度百科,链接
posted @ 2018-03-03 15:16 I.am.Conmajia 阅读(...) 评论(...) 编辑 收藏

© 2012-2019 Conmajia. 110110 ▲ Top ▲