人工生命

开源项目初稿
授权协议 Apache
开发语言 Java
所属分类 企业应用、 教学科研相关
软件类型 开源软件
地区 国产
投 递 者 尹乐邦
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

人工生命 v1.0

这是一个以“造人”为终极目标的项目,并不是一个实用的、可以马上在实际中使用的项目,目前还处于初始阶段,作者本人也处于探索中,希望有兴趣者能加入,早日在码云上创造出一个真正意义上的人工生命。

简介 | Introduce 

目前人工智能的研究主要集中在算法上,下面这张图看了有什么感觉:

绝对是四个字:  一脸懵逼。(原贴位于[这里]) 
对于普通程序员来说,是不可能学会上述知识树的所有、甚至是一小部分的知识的,但好在目前神经网络研究还有另一条路可以走,就是模拟大自然,利用优胜夯汰、随机变异、用进废退这三大原则,用计算机的高速度来让电脑自动生成最优神经网络脑模型,而不是手工从算法着手来模拟人脑,这是一个捷径,因为不用花太多时间去研究算法(模式识别的成果可以引用,但仅限于此,人类的算法不应该干涉电脑生成的网络模型),只需要花时间在模拟环境和编制简单的用进废退逻辑即可,这是程序员所擅长的。大自然从来就不懂什么是算法,聪明如我等程序员,难道还不如蠢笨的大自然? 从单细胞进化到多细胞、从青蛙进化到人类,这是一个漫长的、随机的进化过程,但在超级电脑上跑可能只要几天时间,就可能得到一个相当不错的脑模型。当然电脑速度越快、容量越大、环境模拟的越真实,则优胜夯汰后形成的脑结构就越复杂,错的脑模型都被自然淘汰掉了。 从算法着手搭建,还是从模拟环境着手自动进化,这是创建人工生命的两个大方向,第一个方向可以说是一条死路,因为它不具备算法自改进、变异、遗传(算法的压缩)功能。模拟环境的难点在于环境本身必须足够复杂、正确。而且必须循序渐进,与脑的进化同步,如果把一群青蛙扔到猴子的模拟环境中,则所有青蛙都会被自然淘汰掉,项目就无法进行下去了。 目前的项目只是搭建了一个框架,语言为Java,利用Swing作图环境,构建一个500x500象素点的虚拟环境、并模拟一群草履虫的优胜夯汰,来获取第一个具备自进化功能的人工生命体,具体脑(即电脑生成的神经网络)的实现算法还需要以后加入。现诚心邀请有兴趣加入的同学一起来加入,完成第一个初步目标:造出一个真正意义上的人工生命:草履虫。

短期目标 | Sort-term Goals

第一个初步目标:造出一个真正意义上的人工生命:草履虫。它必须具备以下前四个特点:

  • 脑结构由电脑生成:神经网络由电脑算法生成,但是电脑算法仅限于模拟环境,而不是直接参与搭建神经网络,就好象大自然只负责拍死不合格的生命,它从不主动参与设计大脑。 

  • 脑结构可遗传:类似于生物的DNA,电脑生成的脑结构(神经网络),可通过简单的算法规则描述,并且此算法规则可以压缩成较短的片段存储,并参与到下一代草履虫的构建。

  • 脑结构可变异:算法规则可以变异,下一代生成的草履虫在脑结构上与上一代总体相似,但存在部分变异。

  • 适应环境:草履虫能够在模拟的虚拟环境下存活下来,环境有微小的变化,能够自适应环境,并一代代生存将适应这种环境的能力遗传下来。

  • 用进废退:这是一个假想,对于生物来说,存在这样一种现象,就是用的多的器官,容易发生变异(例如经常嚼槟榔,容易发生口腔癌变),有理由相信这不是偶然现象,而是生物在进化过程中的一个有用的功能,以便于更快地变异,以适应环境,并很可能这种变异会通过遗传细胞(变异的算法规则)影响到下一代。 

理论 | Theory

为什么明明是个电脑程序,只要满足上述四个特点就可以称之为"真正"的人工生命? 这一点我不想多说,大家可以百度一下"zhangrex 人工生命"就知道我的观点了:意识从来就不存在,意识只是一种现象。风吹、树动和风吹、添衣,都只是一种现象而已,生命本质上是一种现象,换句话说,只要表现出生命现象的事物,就可以称其为生命了,不管它是高等还是低等,不管它的物质存在基础是怎样的。作为一个二十年前就思考人工智能(可能比在座的各位年龄都长)者的话,请仔细思考一下这个观点。哲学上、理论上对智能、意识的研究是很无聊的,相当于在研究"无"到底是什么,不必多纠缠在理论和算法上。是的,用模拟环境得到的人工神经网络模型,我们确实无法掌控它的算法是怎样生成的,但是我们知道,这符合大自然创造生命的规律。

项目架构 | Architecture

这是一个Java项目,分为Application、Env、Frog三个模块: 
Application模块: 用于项目的启动、关闭等基础服务。 
Env模块: 目前是一个500x500象素点的虚拟空间,由Swing生成画像,这是程序员唯一可以控制的区域。
Frog: 这是人工生命的主体,目前起名叫青蛙,其实叫什么都一样。它具备以下器官:
    Leg: 与运动神经元相连,Leg的激活将导致Frog移动,Leg有五个方向:上下左右停
    Mouth: 只有一个动作:eat 用来食用虚拟空间出现的虚拟食物,它是一个感觉器官,而不是一个运动器官,Frog本身具有一个能量字段,进食后能量字段会增加,运动或随时间流逝能量将减少,能量耗尽则Frog死亡。
    Brain: 有眼、脑细胞、脑区、基因等对象   

文档 | Documentation

见项目主页

作者其它开源项目 | Other Project

期望 | Futures

欢迎发issue提出更好的意见或提交PR,帮助完善人工生命项目。

版权 | License

Apache 2.0

关注我 | About Me

GitHub 
码云  

  • 人工生命是指用计算机和精密机械等生成或构造表现自然生命系统行为特点的仿真系统或模型系统。自然生命系统的行为特点表现为自组织、自修复、自复制的基本性质,以及形成这些性质的混沌动力学、环境适应和进化。      美国圣菲研究所非线性研究组的兰顿(C.G. Langton) 于1987年提出人工生命(artificial life)[61]。人工生命的独立研究领域的地位已被国际学术界所承认。在1994年

  • 人工生命计算机与生物学交叉的前沿学科 artificial lifefront porch subject crossed computer and biology 35No.5 计算机科学2008VoL 人工生命:计算机与生物学交叉的前沿学科*) 卢欣华孙吉贵韩霄松行荣 (吉林大学计算机科学与技术学院符号计算与知识工程教育部重点实验室 长春130012) 摘要人工生命是具有生命特征的人工系统,是

  •   人工生命的角斗场   在模拟中,研究者不仅改变了人工生命的身体形态,还改变了它们的训练环境和执行的任务,使得实验的复杂度远高于之前的同类研究。通过锦标赛式的达尔文进化方案,该模拟能够确保每一种人工生命的形态都不会被一票否决,就算在不利的环境下依然有机会将形态传递给下一代。该方法既保持了种群的多样性,又降低了仿真的计算量。   图2. 深度进化强化学习框架(Deep Evolutionary R

  • ·程序说明:        该程序由若干生命智能体在他们的环境中不断的适应进化构成,目的是探讨环境的变迁对生命体的影响。其中白色的点是智能生命体,他们会不停的运动并且自我繁 殖、进化,蓝色的点是生命体的食物,它可以被人造的产生或者外部加入,也可以通过智能体的自发规律进行演化。如果选择了draw seeds,那么就能看到绿色的点表示生命体进行的播种。用户可以通过环境控制面板(Env Control

  • 人工生命 人工生命是用计算机、机械等人工媒体模拟或构造出的具有自然生物系统特有行为的人造系统。 自组织能力和自学习能力是人工生命的两大重要特征。 人工生命与遗传算法有着密切的关系,基于遗传算法的进化模型是研究人工生命现象的重要理论基础。

  • 1987年C.GLongton首次提出人工生命,它是指以研究具有自然生命特征和生命现象的人造系统为对象的一门新兴学科。人工生命作为一种新型的交叉学科,其研究领域覆盖了计算机科学、生物学、系统科学等诸多学科。而人工生命的计算的概念最早是由汪定伟教授于2000年提出,他认为人工生命计算是一类模拟生命系统行为与功能进行科学计算的方法。 人工生命计算是一种以人工生命为形式,研究人工生命的信息表达和处理机制

  • 人工生命与生命的本质  ■ 文:熊卫民      生命是什么?我们可以创造生命吗?北京师范大学哲学系副教授李建会博士对此颇有研究,近年来在《二十一世纪》(香港)、《自然辩证法研究》等重要刊物上发表了一系列相关论文。不久前,记者在 清华大学举行的 “科学技术中的哲学问题研讨会”上与李博士相遇,请他介绍了国际学术界对于生命问题的最新见解。   人都会死去,有时很突然,马克思就是在打盹时去世的:一个充满

  • 第一章 绪 论 教学内容:本章首先介绍人工智能的定义、发展概况及相关学派和他们的认知观,接着讨论人工智能的研究和应用领域,最后简介本书的主要内容和编排。 教学重点:   1.从不同科学或学科出发对人工智能进行的定义;   2.介绍人工智能的起源与发展过程;   3.讨论人工智能与人类智能的关系;   4.简介目前人工智能的主要学派;   5.简介人工智能所研究的范围与应用领域。 教学难点:   1

 相关资料
  • 本章介绍 Docker 开源的项目。随着 Docker 功能的越来越多,Docker 也加快了开源的步伐,Docker 未来会将引擎拆分为更多开放组件,对用于组装 Docker 产品的各种新型工具与组件进行开源并供技术社区使用。

  • 如果我使用 JBoss Developer Studio 创建一个名为 “getting-start” 的 maven-archetype-webapp 类型的新 maven 项目,那么我会收到以下警告: 我安装了Java SE 7,并将系统变量Java_Home设置为jdk目录。我还通过JBoss DS的安装向导设置了jdk目录的路径。

  • LTalk聊天室 LTalk 是一个网页版在线聊天网站,主要功能有:加好友,处理好友请求,与好友聊天,创建群组,群组聊天,世界聊天等等,界面借鉴微信相关布局与配色,对用户友好,使用简单。 https://github.com/octopuszy/LTalk-swoole 微信小程序 抢红包问题 聊天室开发

  • 人们出于不同的目的来创建开源项目,可不论目的是什么,过程都是一样的。 首先,我们需要为我们的项目取一个名字。 然后,为我们的开源项目选择一个合适的 LICENSE 然后再去创建项目 取一个好的名字 取名字,从来就不是一件容易的事。 因此,我就长话短说,一般就是取一个有意义的名字,当然没有意义也没有任何问题。 通常而言,如果自己计划有一系列的开源项目,那么我们可以保持一定的命名规则。 挑选好 LIC

  • 谁知道这是哪个开源项目搭建的 项目技术 Vue3+elementPULS java端也有的 去找过 但是没找 有知道的告诉一下

  • Android 开源项目是针对各种各样具有不同外形的设备创建的开源软件栈。它的主要目的是为运营商、原始设备制造商(OEMs)和开发人员创造一个开放的软件平台。