Last updated: 28 May, 2012
© 野比 2012 版权所有
(本文为个人学习笔记,知识浅薄,供大家乐乐)
欢迎对这方面感兴趣的爱好者一起研究。
寻求技术指导。
联系QQ 1429013154
我一直对人工智能很感兴趣,苦于数学基础太差,很多理论方面的东西理解起来十分吃力。最近又翻出以前的学习目标:人工生命衍化。名字挺悬乎,其实很多人都曾和它有过交集,就算没有用到它进化出的好物种——智能机器人,至少也应该听过甚至中过它进化的恶劣物种——蠕虫病毒。
说起人工生命和计算机,就要从计算机历史的最开始说起。因为计算机之父冯·诺依曼和他的小组成员勃克斯分别撰写过题为《自我繁衍的自动机理论》和《细胞自动机论文集》的文章,堪称人工生命最初的狂人。
背景故事就不说了,记在这里。
人工生命之父——Chris Langton
生命游戏百科
框架搭建
目前框架已搭建好。标准WinForm 2.0,C#编写。世界大小30x40。
我的架构和经典架构不同。下面把世界法则对比一下。
经典世界法则如下:
- 生命视野为1(8格)
- 生命承受力为3
- 生命在3时复活
- 生命在2时不变
- 其余情况死亡
如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变
在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)
我的世界法则如下:
- 生命只有上帝创建
- 生命视野为1(8格)
- 生命承受力3(否则死亡)
- 生命不可复活
由于经典法则中所有生命都有机会复活,所以在网上下载的经典实现和绝大部分爱好者实现里,世界都是被填满了生命的,通过颜色等「隐藏」死亡的生命,使之「看起来」消失了。我打算设计的是一个模仿真实的世界法则,所以世界里该空白的地方就不能有生命存在。
这是框架截图。
下一步的工作
- 自然随机数(natrual simulation)
- 研究并修改世界法则
- 增加食物概念,生命存活由健康度决定
- 邻居可以「杀死」受害者
- 每个生命增加动态属性列表
- 属性相近的生命有类似的行为
- 属性相近的生命会互相靠拢
- 修改框架,使法则脚本化
需要请教和研究的知识点
- 怎么实现记忆(先实现1bit)
- 怎么引入进化(最简单的神经网络学习)
- 怎么实现脚本机制(纠结C#还是Lua)
- 简单易行的插件机制(SD架构?MEF?)
- Rule Engine
网上的资源
一个用C#实现的标准规则生命游戏(ysg8422am@csdn)
Langton蚂蚁的一个粗略实现(vxbb@bccn)
进展情况
28 May, 2012
1.今天尝试将世界地图封装为控件,失败了。功能上实现了,但原来2~4%的CPU负荷直接飙升到了25~30%,开销相当大。具体原因似乎是嵌套调用和太多参数传递的问题。而且地图控件的架构设计也很浪费资源,为每个地图点缓存了一个Color。此问题留待以后解决。
2.在生物逻辑上加入了自然老化、休息和饥饿捕食的规则。使用了仿真自然随机数发生器来模拟一切和自然概率(不像System.Random那么突变)有关的现象,如攻击判定、进攻或逃跑等。
图中Legend如下
迈向生命的第一缕曙光
在增加了健康因素,实验体会主动觅食,接近并攻击较弱的实验体。
在进化的过程中,出现了一些有意思的现象。
有的细胞在非常健康(HP>80+)的时候,也会追着弱小的实验体「咬」,杀死实验体后,HP增加不到5点,而代码中,标称值是在HP<70时才开始觅食,且会整个吃掉尸体。
有的实验体甚至有了那么一点点的「智力」(或者说仅仅是种本能),比如这个第6392代的家伙,它只要吃饱了,就会「绕场一周」,而且总是往墙上撞,企图逃跑。
随机数和记忆的加入,立刻让世界变得绚丽,变化多端。
(未完待续)
分享到:
相关推荐
功能强大的细胞自动机 内置数百种规则和演化图景。具体操作可参考百度词条生命游戏
生命游戏(细胞自动机)。包含源代码,下载后请自行编译。
一个Lua写的原细胞自动机,又称生命游戏....人工智能课作业
并且在生命游戏的基础上进行了一定的扩展,增加了系统复杂性,给定了简单的初始状态以此进一步研究细胞自动机在复杂系统中所表现的能力,为细胞自动机及生命游戏的后续研究奠定基础。结论:计算机实现的细胞自动机在...
细胞自动机
基于细胞自动机的信号控制交叉口交通流模拟
设计了一种嵌套式细胞自动机用于伪随机序列发生,并且用将该伪随机序列应用于实际加密中,取得了很好的效果
细胞自动机的java实现,最大数量为1366*768, 每次为随机的细胞颜色,使用mvc,面向对象的设计,拓展性不错。
win32 api 开发的 细胞自动机分裂过程
NULL 博文链接:https://t1174779123.iteye.com/blog/1997391
细胞自动机理论及其在密码中的应用是一个很完整的论文
这是浙江大学翁恺老师在课堂上演示的细胞自动机程序,本人在阅读的时候添加了很多代码注释,现发布供大家学习。
使用C++实现的二维生命游戏,对于理解元胞自动机原理有很大的帮助。
元胞自动机实现生命游戏
提出一种基于耦合混沌系统和细胞自动机的加密方法。耦合混沌系统比单一混沌系统具有更复杂的动力学特性, 可以增大密钥空间, 提高加密系统的安全性; 利用耦合触发细胞自动机实现明文分块的并行加密, 提高加/解密速度,...
JAVA模拟细胞自动机,介绍了细胞自动机的模型与研究的应用
一个很好的matlab仿真程序,简单地模拟了J Conway的生命游戏原理
在本文中,我们提出了一种利用神经细胞自动机(NCA)生成图像(或其他艺术品)的新方法。我们没有逐个训练基于单个图像的NCA,而是将该思想与变分自动编码器(VAE)相结合,从而探索了一些应用,如图像恢复和风格...
元胞自动机,生命游戏,模拟生命过程 java