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. 生命游戏,百度百科,链接
  • 相关阅读:
    阿里云 linux centos7安装tomcat
    定义全局的输入框获取焦点指令vfocus
    vue按enter键刷新页面 使用@submit.native.prevent阻止表单默认提交,添加在form标签上
    vue按键修饰符@keyup.enter.native
    阿里云 linux centos7中安装redis
    CRON表达式
    python定时执行nutch爬取任务
    Spring中设置bean作用域
    Cassandra 安装
    cassandra入门
  • 原文地址:https://www.cnblogs.com/conmajia/p/life-game-and-cellular-automata.html
Copyright © 2011-2022 走看看