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

5.9 KiB

版本提交记录

2018-1-3

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

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

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

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

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

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属于进食反射链的一部分在没有记忆器官算法引入之前是没有途径使用上进食奖励信号的。