本文主要是介绍遗传算法简略,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.遗传算法起什么作用
遗传算法致力于寻求全局最优解,而不停滞于局部最优解,假使是用来寻找最大值,那么:
遗传算法的任务就是尽量爬到最高峰,而不是陷落在一些小山峰。
假设把多向搜索中随机选择下一个点比喻成袋鼠跳动,那么遗传算法可以形象描述为:
从前,有一大群袋鼠,它们被莫名其妙的零散地遗弃于喜马拉雅山脉。于是只好在那里艰苦的生活。海拔 低的地方弥漫着一种无色无味的毒气,海拔越高毒气越稀薄。可是可怜的袋鼠们对此全然不觉,还是习惯于活蹦乱跳。于是,不断有袋鼠死于海拔较低的地方,而越是在海拔高的袋鼠越是能活得更久,也越有机会生儿育女。就这样经过许多年,这些袋鼠们竟然都不自觉地聚拢到了一个个的山峰上,可是在所有的袋鼠中,只有聚 拢到珠穆朗玛峰的袋鼠被带回了美丽的澳洲。
1.寻找一种对问题潜在解进行“数字化”编码的方案
(建立表现型和基因型的映射关系)
2.用随机数初始化一个种群,种群里面的个体就是这些数字化的编码
(那么第一批袋鼠就被随意地分散在山脉上)
3.通过适当的解码过程之后,用适应性函数对每一个基因个体作一次适应度评估。
(得到袋鼠的位置坐标;袋鼠爬得越高,越是受我们的喜爱,所以适应度相应越高)
4.用选择函数按照某种规定(适应度)择优选择
(我们要每隔一段时间,在山上射杀一些所在海拔较低的袋鼠,以保证袋鼠总体数目持平)
5.让个体基因交叉变异,然后产生子 代。
(让袋鼠随机地跳一跳,希望存活下来的袋鼠是多产的,并在那里生儿育女)
遗传算法并不保证你能获得问题的最优解,但是使用遗传算法的最大优点在于你不必去了解和操心如何去“找”最优解,而只要简单的“否定”一些表现不好的个体就行了。以后你会慢慢理解这句话,这是遗传算法的精粹!
(你不必去指导袋鼠向那边跳,跳多远,只要把那些总是爱走下坡路的袋鼠射杀。)
遗传算法的一般步骤:
开始循环直至找到满意的解。
1.评估每条染色体所对应个体的适应度。
2.遵照适应度越高,选择概率越大的原则,从种群中选择两个个体作为父方和母方。
3.抽取父母双方的染色体,进行交叉,产生子代。
4.对子代的染色体进行变异。
5.重复2,3,4步骤,直到新种群的产生。
结束循环。
遗传算法引擎:
遗传算法引擎――GenAlg
来源:
http://blog.csdn.net/emiyasstar__/article/details/6938608
这篇关于遗传算法简略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!