欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

遗传算法学习笔记(1) 算法生物数据结构 

程序员文章站 2022-07-12 17:15:21
...
学概率的时候提到有这样一个“无限猴子定律”:一个具有无限生命的猴子(它不懂人类的语言)随机的敲击打字机,总有一天它会打出一本莎士比亚的书来。

这只猴子能打出任意的书来,有意义的无意义的,无意义的远多于有意义,猴子定律只是指出了得到这种有意义的书的可能性,不保证他的现实性,也许整个宇宙从诞生到现在的时间,这只猴子仍然打不出来,但是在接下来的时间里,总有那么一天完成这个任务。

个人理解,这个猴子定律说的是以概率的角度看,什么可能都会发生,从无序中能得到有序。生命也是一种有序的组织,它是如何诞生的,达尔文的进化论科学的解释了这一问题。

攻击进化论的人一个重要理由是:生命如此复杂,它的产生几乎是一个概率为零的事件。他们从概率计算认为,从宇宙诞生的时间算起,也无法自发生成一个细胞。

计算是对的,结论是错误的,原因是他们忽略了自然选择对这一过程的干预。如果没有干预,什么都在发生,也就什么都不可能发生。

从低级到高级,从简单到复杂,高度复杂的生命是由更为简单的生命一步一步地通过选择形成。突变是随机的,但是在自然选择的作用下,随机性大大降低。无序的没有意义的被自然剔除,剩下的进一步选择,一步一步,高级生命就这样诞生了。这样的高级生命也许不是最完美的,但确实最适合环境的

上帝是否掷骰子?上帝当然掷骰子,但是它也提供了一个甄别的手段,就是说上帝认为某种结果是合理的,合理的结果就留下了,不合理的就忽略了,在合理的结果中继续甄别。。。。。

上帝需要操心生命具体如何进化吗,他需要对生命的各方各面(组成物质,细胞结构,器官等等)进行设计吗?也不需要。只要提供了甄别,随生命怎么随机变异,他只负责对变异的结果进行赠别就行了,若干年后,当年简单的有机物变成了现在高度复杂的生命。

遗传算法模拟上帝创建生命的这一过程

计算机算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。

算法也可简单描述为:给出一定的输入,得到合理的输出。一些算法我们可以在了解它的原理下计算出来,典型的如数学计算。但许多情况下数学模型很难精确求最优解,对于这些复杂问题,能够得到次优解就很满意了

遗传算法从代表问题可能的潜在解集合开始,模仿了自然进化模型,如选择、交叉、变异、迁移等过程。计算开始时,一定数目N个个体(即初始解集合)随机的初始化,计算每个个体的适应度(供选择的量化指标),选出适应度最高的个体,第一代就这样诞生了,然后得到的子代按一定概率变异,加入下一次选择,再变异,再选择。。。。。这一过程循环往复,直到满足求解条件为止。

也就是说,使用遗传算法我们不需要详细了解算法原理,数学模型,我们只要给出进化手段(变异手段,选择手段等),和足够的时间,遗传算法总能给我们找到一个次优解,尽管可能不是最优解

所以某种程度上遗传算法几乎是一个万能算法

但是为什么不容易得到最优解?所谓最优解,只会有一个,如果有两个就不叫最优解了。
回头看看地球上的生物进化。总的趋势是从低级到高级,从简单到复杂。我们把进化出理性生命看做最优解,是否必然只产生像人类,而不是别的什么理性生命呢?

注:这里提到的上帝是一个比喻,也就是常说的斯宾洛沙的上帝,即大自然,而不是圣经中那个具有人格的上帝

参考:
http://www.bullog.cn/blogs/fangzhouzi/archives/17777.aspx
http://www.bullog.cn/blogs/fangzhouzi/archives/17776.aspx