zoukankan      html  css  js  c++  java
  • 🦕 生命游戏试验

    Conmajia © 2012, 2018
    Updated 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. 生命游戏,百度百科,链接
  • 相关阅读:
    hdu 5366 简单递推
    hdu 5365 判断正方形
    hdu 3635 并查集
    hdu 4497 数论
    hdu5419 Victor and Toys
    hdu5426 Rikka with Game
    poj2074 Line of Sight
    hdu5425 Rikka with Tree II
    hdu5424 Rikka with Graph II
    poj1009 Edge Detection
  • 原文地址:https://www.cnblogs.com/conmajia/p/life-game-and-cellular-automata.html
Copyright © 2011-2022 走看看