内容简介:Frog | 人工生命 https://gitee.com/drinkjava2/frog 这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体,技术架构基于02年提出的 一个人工脑模型。 这个项目永远没有结束的时候,开始于模...
Frog | 人工生命
https://gitee.com/drinkjava2/frog
这是一个人工生命试验项目,最终目标是创建“有自我意识表现”的模拟生命体,技术架构基于02年提出的 一个人工脑模型。 这个项目永远没有结束的时候,开始于模拟一个简单的生命体,然后是青蛙、狗......, 结束于有“自我意识表现”的人工脑。
本次更新内容为几个提交内容的总和,因为这个项目本身的特点,决定了它不可能是个“有用”的程序,就好象你如果真的拿到一只青蛙,也不知道能用它来干什么,所以我也不知道什么时候该发布更新资迅。只好将几次更新累积在一起发。但这个项目足够有趣,对神经网络、人工智能感兴趣的同学们可以看一看。自从上个版本“第一个人工生命诞生”后,目前主要改动是给青蛙加了个眼睛,但非常简陋,指望青蛙进化出一双炯炯有神大眼睛的同学们可能要失望了。以下为更新内容流水账:
2019.03.11 虚拟环境已建好,可以模拟低等生命的遗传、繁殖、变异、进化现象,但目前只能往一个方向运动,相当于一个最简单的单细胞生物,还不具备视觉能力,不具备主动找食能力。
运行run.bat可以查看演示(需要安装 Java 8和Maven)。Env.java中的几个重要参数说明:
- SHOW_SPEED: 调整实验的速度(1~1000),值越小则越慢。
- ENV_WIDTH: 虚拟环境的大小(100~1000)
- EGG_QTY: 每次允许Frog下多少个蛋,每个蛋可以孵出4个青蛙。通常下蛋取值在10~1000之间。蛋保存着我们测试的结果。实验的最终目标就是获得一个蛋。
- FOOD_QTY:食物的数量,食物越多,则Frog的生存率就越高,能量排名靠前的一批Frog可以下蛋,其余的被淘汰。
下面是这个测试的动画截图,有兴趣的可以试着自己运行一下:
另外每步演示的结果(egg)会存盘在根目根目录下,名为egg.ser,可以删除这个文件以从头开始新的测试。因为还没涉及脑模型的搭建,可以看到有些青蛙跑得飞快,这是自然选择的结果,因为跑在最前面的吃得多。
2019.03.21 添加了脑图,改进随机运动模式为Hungry区驱动。从脑图上可以直观地观察脑结构,方便调试。
2019.04.01 改进脑图的显示bug, 每一次生成Frog时添加随机神经元,并简单实现"卵+精子->受精卵"算法,以促进种群多样性。
2019-04-12 添加一个简单的眼睛(只有四个感光细胞),自然选择的结果是眼睛被选中,但是和运动区短路了,谈不上智能。但有眼睛后找食效率明显提高了,见下图:
2019-06-13 做了一些重构清理,加上了Happy和Pain两个器官,分别对应进食奖励和痛苦感,后者在靠近边界时激发。观查它的表现,痛苦感生效了,一些Frog跑到边界后就不再前进,而是顺着边界溜下去了,但是Happy器官没有生效,这也很显然,因为Happy属于复杂的进食条件反射链的一部分,在没有记忆器官(算法)引入之前,再怎么优胜劣汰也是没办法用上进食奖励信号的。见下图:
版权 | License
期望 | Futures
欢迎发issue提出更好的意见或加入开发组,尤其欢迎能接触到超级计算机的同学加入,随着虚拟环境的复杂度和神经元数量增多,对电脑速度要求会越来越高。
关注我 | About Me
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 人工生命 2.0.3 更新,两条腿的青蛙和吃青蛙的蛇
- 人工生命 2.0.1 版发布,给青蛙找个工作:走跷跷板
- POJ1061 青蛙的约会
- 青蛙与缓存:简化实用版动态规划
- 一只青蛙跳出来的分治法、回溯法与动态规划
- “人工”智能究竟需要多少人工?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。