You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
frog/版本提交记录.md

30 KiB

版本提交记录(只记录重要更新)

在history目录里存放着比较重大的历史版本可以直接运行这些子目录里的run.bat进行演示。

如果想要回到Frog项目的以前任一个提交可以结合gitk命令和参考本提交记录对每个更新的简介用git reset命令回复到以前任一个提交版本例如用:
git reset --hard ae34b07e 可以转回到2019-08-04提交的分组测试的找食版本。

2018-1-3

项目启动,主要是文字方面的一些构想。

2019-3-11 1.0.0版, Commit:Go frog go!

开发环境完成演示第一个人工生命诞生。但是所有Frog脑部为空因为运动神经元被短路只能固定向一个方向运动。
这是第一个发布版,演示了生命的随机进化和优胜劣汰。
result1

2019-3-18, Commit:Brain picture!

添加了脑结构图形用于调试用可以显示第一个胜出的Frog的脑结构但是运动神经元依然被短路只能固定向一个方向运动。
有了脑结构图就可以防止所有Frog都被淘汰掉还不知道问题发生在哪里。可以有针对性地改进进化算法、环境的参数改进。

2019-03-20, 1.0.1版, Commit:Add a button

添加了一个按钮可以显示、隐藏第一个胜出的Frog的脑结构图但是运动神经元依然被短路

2019-03-21, 1.0.2版, Commit:I'm hungry

在脑区添加Hungry删除随机运动的硬编码改成由Hungry区来驱动一旦frog能量小于10000,hungry区的所有脑神经元的input区激活如果这些神经元的输出区位于move区则作相应的移动。这是一个更随机一点的运动不再总是固定向一个方向。

2019-03-27, 1.0.3版, Commit:Shrink & Sperm

添加了"卵+精子->受精卵"的模拟,这是为了实现生物多样性。添加了每次添加一批随机神经元,但是只保留激活过的,如果某组神经元从没被用到(激活过),则有很大的可能不会将这组神经元添加到蛋中(用进废退规则)。

2019-03-29, Commit:Rainbow

更正一个小Bug,BrainStructure的zone显示的半径是实际的一半用彩虹色而不是随机数来表示CellGroup的细胞数量色彩越靠后表示细胞数越多。

2019-04-01, Commit:Cleanup

做一些debug清理,每个Frog不再保留egg的副本“卵+精子->受精卵”算法改进一下不能简单两两相加而是随机取一个精子的cellgroup。

2019-04-06, Commit:Windows align

还是做一些清理, 可以自由调整虚拟环境、脑图的显示大小。下面的打算是将mouth、leg、hungry等区移到蛋里去允许进化而不是作为Frog的硬编码存在。

2019-04-07, Commit:Organ

引入Organ类将mouth、leg、hungry等作为Organ器官移到蛋里去而不是作为Frog的硬编码存在这样架构更清晰而且便于以后将Organ参与遗传、变异、进化。

2019-04-08, Commit:Eye shortcut

添加眼睛,能够看到四个正方向的食物,但是自然选择的结果是眼睛和移动区短路了,眼睛起的作用并不大,因为如果有两个方向同时出现食物,目前青蛙是不能判断的。 下面要考虑逻辑了,也就是思考判断能力(后天条件反射的建立)。

2019-04-12, Commit:Random frog

没做大改动,只是将青蛙改成按整个地图随机分布,看起来眼睛的作用就比较明显了,比起随机运动,明显食物被吃掉更多。
resut2

2019-05-23, Commit:2 eyes no helps

没做大改动只是演示添加两个眼睛后对它的进化没有帮助到此为此逐渐看出问题了没有记忆能力和模式识别能力。目前存在两个比较大的硬编码导致它不能进一步进化1.用CellGroup这种硬编码方式导致在Frog的生存期不能产生记忆功能而需要多次淘汰这不符合现实中青蛙从小学到大这样的实际过程它不需要死很多次。另一个问题是眼睛部分存在硬编码因此只能起到感光作用但是不具备根据外在图像进行模式识别能力。所以下面要开始进行非常大的结构改进。将把CellGroup作为器官引入但是它的内部细胞是动态生成的而且不是随机生成的而是任两个细胞在它的区内活跃就生成新的细胞(将来也可以参与新建细胞)。CellGroup的数量、大小、网格密度直接影响到神经元生成多少和算法快慢)会参与遗传和进化快乐和痛苦器官会对新细胞生成的类型有影响。fat参数用来指示它的肥胖度。Fat高的遗传时会保留并可能变大、变小、内部允行连接数更多、分化成更多CellGroup但是它的内部连接(新建的细胞)不会参与遗传这样每个个体都出生时都是一张白纸虽然也许CellGroup已经进化得很多层很复杂。同一个位置可以存在多个CellGroup,这样由多层大小、位置不同的Layer就同时具备了模式识别和记忆功能而且这个算法比较简单很好理解。大范围的Cellgroup可以解释条件反射的形成两件不相干的事之间形成联系)小范围的Cellgroup可以解释模式识别相邻感光细胞同时激活经过层层处理后汇总到最上层的某个Cellgroup的激活)。而所有这些CellGroup的形成(结构和层级)都可以用非常简单的"用进废退"规则(Fat值控制遗传、随机变异和适者生存来探索最优解)来最终进化出来。

2019-06-13, Commit: Happy & Pain

主要做了一些清理,将所有器官移到单独的类里删除OrganDesc类。将一些类(如Applicaton移到根包下)移到不同的包下。这个版本是比较大的一个重构,最大的进步是将算法当成一个器官引入,当然,这个版本只存在一个随机连接两端的算法,以后会扩充。 另外顺手加上了Happy和Pain两个器官分别对应进食愉快感和痛苦感后者在靠近边界时激发。观查它的表现果然不出所料痛苦感立即生效有一些Frog移动到边界后就不再前进而是顺着边界溜下去了不傻但是Happy器官没有生效这也很显然因为Happy属于进食反射链的一部分在没有记忆器官算法引入之前是没有途径使用上进食奖励信号的。
resut3

2019-06-26, Commit: Back to many connections

找食效率太低又改回到4.12的用连接数量代替权值这个逻辑权值这种人为设计的算法居然比不过随机试错失败。先暂时去掉Pain器官Pain的加入并没有提高找食效率必须与感光细胞合用才能知道是哪个方向的边界下个版本急需引入记忆功能也就是说要将感光细胞的活跃和痛苦器官的活跃关联起来。

2019-06-28, Commit: New eye & dynamic show brain

为了更方便青蛙看到边界又加了个新的眼睛它是一个可自进化的nxn点阵的眼睛将来会取代只有四个象素点(但能看得远)的老眼睛。到目前为止,依然还没有进行模式识别和记忆功能的开发。另外脑图可以动态显示了,用一个红圈标记出被动态跟踪显示的青蛙。另外每次运行前打印往生咒,以示对生命的尊重。

2019-07-28, Commit: Trap & Active & Chance

这还是一个常规版本,建立在随机连接、优胜劣汰基础上。主要有以下改动:

  1. 在Env区中间加了一个陷阱区Trap以增加趣味性青蛙如果走到陷阱区就死掉结果自然选择的结果是青蛙会绕开陷阱区。
  2. 青蛙增加一个Active器官它的作用是一直保持激活如果有神经元触突位于这个区就会驱动神经元兴奋这个器官经实践证明比Hungry器官驱动更能提高找食效率。
  3. 青蛙增加一个Chance器官,它的作用是引入随机扰动,打破青蛙有时候围着一个食物打转就是吃不着的死循环。
    从当前这个版本可以看出,实际上青蛙是有一定的记忆能力的,连接就=记忆只不过没有模式识别能力以后的工作将以模式识别为重点基本原理是见note中提到的仿照全息存储原理在思维区逆向成像。因为逆向成像的限制以后的版本所有的器官会被移到脑图的同一侧不再是随意分布在脑图上了这将是一个比较明显的改动。当然随机连接这个算法看起来比较有用以后还是可能保留的。
    以下为运行图像:
    resut4

2019-08-04, Commit: Screen group test

引入分屏测试功能如果青蛙数量多可以分屏来测试每屏青蛙的数量可以少到只有1只。

2019-08-05 commit: Seesaw

有了分屏测试功能后,顺便随手加上了一个青蛙走跷跷板自动平衡的演示,它每次只出场一个青蛙, 每轮包括100场测试大约跑90多轮半个小时(电脑慢)后,出现了下面的画面:
result5
这个版本的目的是为了增加一点趣味性,显得青蛙还是有点"用处"的,省得让人以为这个项目不务正业,只会让青蛙找食。这个版本青蛙的脑结构和找食版的青蛙基本相同,区别只是在于环境不同,也就是说它的表现随着环境而变化,这符合"通用人工智能"的概念,即信号感受器官是统一的(通常是眼睛)但能根据不同的环境完成不同的任务。走跷跷板演示是最后一个2维脑的版本今后这个项目将沉寂一段较长时间今后将致力于将青蛙脑重构为3D金字塔形脑结构(见上文)因为这个项目的缺点已经很明显它不具备对2维图像的模式识别能力用随机试错的方式只能处理非常简单的、信号在视网膜的固定区域出现的图像信号。
青蛙的找食效率以及走跷跷板平衡的能力都没有优化到顶点,一些构想中的复杂的器官如“与门”、“或门”(不要怀疑大自然能否进化出这些复杂器官)等都没加上但我认为这不重要目前最高优先级是先进行3D脑结构建模让青蛙能具备2维图形的模式识别(和回忆)功能,这个大的架构重构是它能处理复杂图像信息的立足之本,它的图像识别能力和通常的用上千张图片来训练识别一个图片这种工作模式不同,它是一种通用的,可自动分类识别所有图像的模式,更符合动物脑的工作模式,记住并回忆出某个图像(或任意输入信号场景的组合),可能只需要这种场景重复出现过几次即可,它是一种无外界信号判定,自动分类的识别模式。

2019-09-09 commit: start work on 3d

开始进行3D脑的实际编程。

2019-9-09 到 2019-10-06 之间的6次提交

主要进行脑框架的显示和字母试别测试环境的搭建还没开始进行利用器官进行脑细胞播种的工作。这一阶段基本思路是在每一轮的测试过程前半段随机显示ABCD其中的一个字母(即激活视网膜所在的脑区),并同时激活一个任意脑区。在下半段则只激活这个字母的点阵,然后检测对应的这个脑区是否也会激活,如果激活的话,将会增加青蛙的能量值,让它在生存竟争中胜出,这一步是要完成基本的模式识别功能,框架已搭好,但器官的随机生成还没进行,这一步比较复杂,除了器官的大小位置等参数外,神经元的参数也多,比方说输入、输出光子的方向、正负、数量,能量吸收、释放比例,输入输出阀值、疲劳值、疲劳阀值等,这么多参数要利用随机生成器官的方式来筛选,需要的样本数量多,运行时间会比较长。早期是视网膜和识别区在脑长方体的同一侧,后来的提交改为将视网膜移到左侧,也就是说视觉与识别区(对应耳朵的语音区)在物理上呈90度正交以方便观察和编程。

版本提交记录(只记录重要更新)

如果想要运行Frog项目的以前版本可以结合gitk命令和参考本提交记录对每个更新的简介用git reset命令回复到以前任一个版本例如用:
git reset --hard ae34b07e 可以转回到2019-08-04提交的分组测试的找食版本。

2018-1-3

项目启动,主要是文字方面的一些构想。

2019-3-11 1.0.0版, Commit:Go frog go!

开发环境完成演示第一个人工生命诞生。但是所有Frog脑部为空因为运动神经元被短路只能固定向一个方向运动。
这是第一个发布版,演示了生命的随机进化和优胜劣汰。
result1

2019-3-18, Commit:Brain picture!

添加了脑结构图形用于调试用可以显示第一个胜出的Frog的脑结构但是运动神经元依然被短路只能固定向一个方向运动。
有了脑结构图就可以防止所有Frog都被淘汰掉还不知道问题发生在哪里。可以有针对性地改进进化算法、环境的参数改进。

2019-03-20, 1.0.1版, Commit:Add a button

添加了一个按钮可以显示、隐藏第一个胜出的Frog的脑结构图但是运动神经元依然被短路

2019-03-21, 1.0.2版, Commit:I'm hungry

在脑区添加Hungry删除随机运动的硬编码改成由Hungry区来驱动一旦frog能量小于10000,hungry区的所有脑神经元的input区激活如果这些神经元的输出区位于move区则作相应的移动。这是一个更随机一点的运动不再总是固定向一个方向。

2019-03-27, 1.0.3版, Commit:Shrink & Sperm

添加了"卵+精子->受精卵"的模拟,这是为了实现生物多样性。添加了每次添加一批随机神经元,但是只保留激活过的,如果某组神经元从没被用到(激活过),则有很大的可能不会将这组神经元添加到蛋中(用进废退规则)。

2019-03-29, Commit:Rainbow

更正一个小Bug,BrainStructure的zone显示的半径是实际的一半用彩虹色而不是随机数来表示CellGroup的细胞数量色彩越靠后表示细胞数越多。

2019-04-01, Commit:Cleanup

做一些debug清理,每个Frog不再保留egg的副本“卵+精子->受精卵”算法改进一下不能简单两两相加而是随机取一个精子的cellgroup。

2019-04-06, Commit:Windows align

还是做一些清理, 可以自由调整虚拟环境、脑图的显示大小。下面的打算是将mouth、leg、hungry等区移到蛋里去允许进化而不是作为Frog的硬编码存在。

2019-04-07, Commit:Organ

引入Organ类将mouth、leg、hungry等作为Organ器官移到蛋里去而不是作为Frog的硬编码存在这样架构更清晰而且便于以后将Organ参与遗传、变异、进化。

2019-04-08, Commit:Eye shortcut

添加眼睛,能够看到四个正方向的食物,但是自然选择的结果是眼睛和移动区短路了,眼睛起的作用并不大,因为如果有两个方向同时出现食物,目前青蛙是不能判断的。 下面要考虑逻辑了,也就是思考判断能力(后天条件反射的建立)。

2019-04-12, Commit:Random frog

没做大改动,只是将青蛙改成按整个地图随机分布,看起来眼睛的作用就比较明显了,比起随机运动,明显食物被吃掉更多。
resut2

2019-05-23, Commit:2 eyes no helps

没做大改动只是演示添加两个眼睛后对它的进化没有帮助到此为此逐渐看出问题了没有记忆能力和模式识别能力。目前存在两个比较大的硬编码导致它不能进一步进化1.用CellGroup这种硬编码方式导致在Frog的生存期不能产生记忆功能而需要多次淘汰这不符合现实中青蛙从小学到大这样的实际过程它不需要死很多次。另一个问题是眼睛部分存在硬编码因此只能起到感光作用但是不具备根据外在图像进行模式识别能力。所以下面要开始进行非常大的结构改进。将把CellGroup作为器官引入但是它的内部细胞是动态生成的而且不是随机生成的而是任两个细胞在它的区内活跃就生成新的细胞(将来也可以参与新建细胞)。CellGroup的数量、大小、网格密度直接影响到神经元生成多少和算法快慢)会参与遗传和进化快乐和痛苦器官会对新细胞生成的类型有影响。fat参数用来指示它的肥胖度。Fat高的遗传时会保留并可能变大、变小、内部允行连接数更多、分化成更多CellGroup但是它的内部连接(新建的细胞)不会参与遗传这样每个个体都出生时都是一张白纸虽然也许CellGroup已经进化得很多层很复杂。同一个位置可以存在多个CellGroup,这样由多层大小、位置不同的Layer就同时具备了模式识别和记忆功能而且这个算法比较简单很好理解。大范围的Cellgroup可以解释条件反射的形成两件不相干的事之间形成联系)小范围的Cellgroup可以解释模式识别相邻感光细胞同时激活经过层层处理后汇总到最上层的某个Cellgroup的激活)。而所有这些CellGroup的形成(结构和层级)都可以用非常简单的"用进废退"规则(Fat值控制遗传、随机变异和适者生存来探索最优解)来最终进化出来。

2019-06-13, Commit: Happy & Pain

主要做了一些清理,将所有器官移到单独的类里删除OrganDesc类。将一些类(如Applicaton移到根包下)移到不同的包下。这个版本是比较大的一个重构,最大的进步是将算法当成一个器官引入,当然,这个版本只存在一个随机连接两端的算法,以后会扩充。 另外顺手加上了Happy和Pain两个器官分别对应进食愉快感和痛苦感后者在靠近边界时激发。观查它的表现果然不出所料痛苦感立即生效有一些Frog移动到边界后就不再前进而是顺着边界溜下去了不傻但是Happy器官没有生效这也很显然因为Happy属于进食反射链的一部分在没有记忆器官算法引入之前是没有途径使用上进食奖励信号的。
resut3

2019-06-26, Commit: Back to many connections

找食效率太低又改回到4.12的用连接数量代替权值这个逻辑权值这种人为设计的算法居然比不过随机试错失败。先暂时去掉Pain器官Pain的加入并没有提高找食效率必须与感光细胞合用才能知道是哪个方向的边界下个版本急需引入记忆功能也就是说要将感光细胞的活跃和痛苦器官的活跃关联起来。

2019-06-28, Commit: New eye & dynamic show brain

为了更方便青蛙看到边界又加了个新的眼睛它是一个可自进化的nxn点阵的眼睛将来会取代只有四个象素点(但能看得远)的老眼睛。到目前为止,依然还没有进行模式识别和记忆功能的开发。另外脑图可以动态显示了,用一个红圈标记出被动态跟踪显示的青蛙。另外每次运行前打印往生咒,以示对生命的尊重。

2019-07-28, Commit: Trap & Active & Chance

这还是一个常规版本,建立在随机连接、优胜劣汰基础上。主要有以下改动:

  1. 在Env区中间加了一个陷阱区Trap以增加趣味性青蛙如果走到陷阱区就死掉结果自然选择的结果是青蛙会绕开陷阱区。
  2. 青蛙增加一个Active器官它的作用是一直保持激活如果有神经元触突位于这个区就会驱动神经元兴奋这个器官经实践证明比Hungry器官驱动更能提高找食效率。
  3. 青蛙增加一个Chance器官,它的作用是引入随机扰动,打破青蛙有时候围着一个食物打转就是吃不着的死循环。
    从当前这个版本可以看出,实际上青蛙是有一定的记忆能力的,连接就=记忆只不过没有模式识别能力以后的工作将以模式识别为重点基本原理是见note中提到的仿照全息存储原理在思维区逆向成像。因为逆向成像的限制以后的版本所有的器官会被移到脑图的同一侧不再是随意分布在脑图上了这将是一个比较明显的改动。当然随机连接这个算法看起来比较有用以后还是可能保留的。
    以下为运行图像:
    resut4

2019-08-04, Commit: Screen group test

引入分屏测试功能如果青蛙数量多可以分屏来测试每屏青蛙的数量可以少到只有1只。

2019-08-05 commit: Seesaw

有了分屏测试功能后,顺便随手加上了一个青蛙走跷跷板自动平衡的演示,它每次只出场一个青蛙, 每轮包括100场测试大约跑90多轮半个小时(电脑慢)后,出现了下面的画面:
result5
这个版本的目的是为了增加一点趣味性,显得青蛙还是有点"用处"的,省得让人以为这个项目不务正业,只会让青蛙找食。这个版本青蛙的脑结构和找食版的青蛙基本相同,区别只是在于环境不同,也就是说它的表现随着环境而变化,这符合"通用人工智能"的概念,即信号感受器官是统一的(通常是眼睛)但能根据不同的环境完成不同的任务。走跷跷板演示是最后一个2维脑的版本今后这个项目将沉寂一段较长时间今后将致力于将青蛙脑重构为3D金字塔形脑结构(见上文)因为这个项目的缺点已经很明显它不具备对2维图像的模式识别能力用随机试错的方式只能处理非常简单的、信号在视网膜的固定区域出现的图像信号。
青蛙的找食效率以及走跷跷板平衡的能力都没有优化到顶点,一些构想中的复杂的器官如“与门”、“或门”(不要怀疑大自然能否进化出这些复杂器官)等都没加上但我认为这不重要目前最高优先级是先进行3D脑结构建模让青蛙能具备2维图形的模式识别(和回忆)功能,这个大的架构重构是它能处理复杂图像信息的立足之本,它的图像识别能力和通常的用上千张图片来训练识别一个图片这种工作模式不同,它是一种通用的,可自动分类识别所有图像的模式,更符合动物脑的工作模式,记住并回忆出某个图像(或任意输入信号场景的组合),可能只需要这种场景重复出现过几次即可,它是一种无外界信号判定,自动分类的识别模式。

2019-09-09 commit: start work on 3d

开始进行3D脑的实际编程。

2019-9-09 到 2019-10-06 之间的6次提交

主要进行脑框架的显示和字母试别测试环境的搭建还没开始进行利用器官进行脑细胞播种的工作。这一阶段基本思路是在每一轮的测试过程前半段随机显示ABCD其中的一个字母(即激活视网膜所在的脑区),并同时激活一个任意脑区。在下半段则只激活这个字母的点阵,然后检测对应的这个脑区是否也会激活,如果激活的话,将会增加青蛙的能量值,让它在生存竟争中胜出,这一步是要完成基本的模式识别功能,框架已搭好,但器官的随机生成还没进行,这一步比较复杂,除了器官的大小位置等参数外,神经元的参数也多,比方说输入、输出光子的方向、正负、数量,能量吸收、释放比例,输入输出阀值、疲劳值、疲劳阀值等,这么多参数要利用随机生成器官的方式来筛选,需要的样本数量多,运行时间会比较长。早期是视网膜和识别区在脑长方体的同一侧,后来的提交改为将视网膜移到左侧,也就是说视觉与识别区(对应耳朵的语音区)在物理上呈90度正交以方便观察和编程。

2019-11-03 commit: Two waves

原来最小三维数组的单元格名为Cube,后改为Room最后又改为cell。器官不再是直接播种Cell了而是播种Cell或在已存在的Cell里添加行为Action这个提交模拟了代表视觉信号和听力信号的两个波的传播下一步的工作是将这两个波关联起来实现模式识别基本原理见评论中的果冻比喻正在编程中。
另个这个提交添加了t、f、l、r,x五个键来在脑图上选择顶视、前视、左视、右视、斜视这5个方向的视图。

2019-11-11 commit: Done letter test

这是个比较重要的更新也是切换到3D脑的第一个正式版本更新它实现了ABCD四个字母的识别。测试时分别用ABCD四个字母并同时加上一个声音信号模拟体全息存贮。识别时只激活视网膜区并且采用变形后的字体即小一号的斜体字从显示结果来看识别效果还是非常好的。另外这个模式识别的工作原理是双向的如果只单单激活听力区也会在视网膜区成像的。如果要做到这点需要将LetterTester.java中的seeImage和hearSound两行注释互换一下并去除Cell.java中的59和60两行这两行代码的作用是阻止光子逆向传播到视网膜上)。
这个模式识别的原理比较简单,不仅算法简单,而且可能符合人脑的工作模式,它可以进行图像到声音的关联,也可以实现声音到图像成像的逆关联,另外还有两个重要优点:1.它可以同时处理多维的信号,也就是说可以同时处理多个图片、声音等信号。 2.它的训练速度非常快,没有采用什么海量的大数据来进行训练,只要有关联的信号,哪怕信号只出现一两次,它都会自动将它们关联起来。
有了模式识别,以后的工作就好办了。今后将在这个模式识别基础上进行扩展,进行多参数优化自动生成器官,声音的编码,把小蛇引入到虚拟环境等等一系列更复杂有趣的任务。

2019-11-16 commit: Still done letter test

上次2019-11-11的更新有大bug有多个字母出现时将不能区分这次提交更正过来。到此为止基本完成了模式识别的原理验证过程即如果字母的象素点与训练图片的重点合越多则听力区收到的反向红色光子数就越多这是一个简单、直观的模式识别方法以后可以通过将声音分成多个小区编码并统计每个区收到多少反向的光子总数来判断是哪个字母图像输入。原理验证完成后今后将考虑怎样才能让青蛙自动向这个方向进化而不是由手工来搭建这个模式识别模型因为一来参数太多要减少手工的干预二来这个原理不光是用到模式识别其它信号处理如快感、痛觉信号与行为信号之间的关联)都要用到类似的细胞逻辑。模式识别功能是无法绕过去的,但是一旦原理被证实,以后就可以有意地引导或者说设计青蛙向这个包含这个功能的方向进化。
另外,这次更新暂停功能加强了,可以在任意时刻暂停,并加上脑图的剖面显示,以方便调试,新增了空格、方向快捷键,现在汇总所有脑图快捷键如下:
T:顶视 F前视 L:左视 R:右视 X:斜视 方向键:剖视 空格:暂停 鼠标操作:缩放旋转平移

2019-11-26 commit: Chinese test

这次更新用汉字"对酒当歌人生几何"来测试模式识别,优化了一下程序,目前这个图像识别基本没有容错性,图像像素多的会干拢像素少的文字的识别。下面考虑拉大听力信号间隔,以及引入侧抑制等机制(如果一个洞中砸进了光子,但是却和这个洞不同向,有可能产生负值的反向光子,这个负值与角度差有关),这和算法上的侧抑制很象,世界上的道理都是相通的。以后算法上的卷积、深度学习等现成的成果,也可以考虑融入进来,用图形化表示。反过来说,目前以算法进行的神经网络研究,如果借签这个项目的基本思路,把输入输出器官和适应环境进化做为重点,采用遗传淘汰的方式调整算法架构本身,尽量减少人为的设计,最后达到的行为表现可能和这个人工生命项目是一致的。我走图形化是没办法,因为基础差,但是精通算法的人如果明白我的意思,也可能很快做出表现比较复杂的人工生命来,毕竟算法研究已经到了很高的水平了,是现成的。

2019-12-05 commit: add history folder

重整理了一下目录将当前工作版本放在core目录下, 比较重大的历史版本放在history目录下以方便初学者直接运行各个历史版本而不需要使用git reset命令去手工回到以前的历史版本。同时如果有未完成的子功能研究如模式识别见005_letter_test目录)也可以开一个子目录在history里以后有时间再去慢慢研究这个子功能。

2019-12-27 在history\003a_legs目录下尝试给青蛙加两条腿看它能不能自动学会走路。一条腿位于下方一条腿位于右侧每条腿有位置感觉细胞、抬腿、落腿运动和感觉细胞转动腿运动细胞。只有当腿落下且转动时青蛙才会位移。经过一段时间的生存汰淘之后青蛙自动进化出会利用腿走路了但效果不太理想找食效率不高往往只能朝一个方向利用单条腿前进但至少这是青蛙第一次利用腿来走路有兴趣的可以运行试试看。

2020-06-03 加入小蛇Snake进来吃青蛙未完成

基本思路是小蛇是有形状的,青蛙要能进化到看到小蛇就跑开,这样就开始正式引入了模式识别

2020-06-19 正式完成加入小蛇进来有多处bug改进

蛇只能看到青蛙青蛙只能看到蛇的图形。并改core目录下项目包名从github到gitee(码云),负值连线、中间连线引入,用一条斜线来暂时代替蛇的图形,好开始模式识别。

2020-06-20 更正SnakeBigEye的bug,并显示为两条线代表蛙的图像(或舌头),便于简化模式别。