遗传算法【启发式算法】

概念

        遗传算法(Genetic Algorithm,简称GA)起源于对生物系统所进行的计算机模拟研究,是一种随机全局搜索优化方法。本质上是在模仿自然选择、繁殖的过程。从个人理解上来看,适应需求的种群可以延续(候选解可以被保留),而不适应自然选择的种群就会被淘汰。

        所以都说遗传算法是达尔文进化论的简易版本,从种群可能的变换上来讲,可以分为以下三种:

遗传:父代特征可以遗传给子代,父子之间具有一定的相似性

变异:特征突变,在种群里单个个体的特征会有不同

选择:适应环境的种群/个体更容易生存且进行繁殖,这就是大自然的选择

        由此,可以推断出,随着时间/时代更迭更加适应环境的种群(好的候选解)可以留下更多的子代,由此,物种可以更加适应环境。同时,染色体的交叉重组也会使产生更多样的个体后代,这有利与维护种群的多样性,变异可以通过引入偶然性的变化而在进化中发挥重要作用。随着代际更新,候选解集合可以更好地解决所需要解决的问题。

术语

        遗传算法是从遗传学中总结而出的,所以遗传算法具有和遗传学相近的术语:

  ①基因型(Genotype):

        基因是染色体中的元素,用于表示个体的特征。例如有一个串(即染色体)S=010111010,则其中的0,1,0,1,1,1,0,1,0这4个元素分别称为基因。

        基因型是染色体一组基因的集合。用二进制表示基因型的每一个基因位。

②种群(Population)

        种群中有大量个体->遗传算法中有大量个体(用染色体表示)=大量染色体组成一个种群=这些染色体组成一个集合

③适应度函数(Fitness function):

       各个个体对环境的适应程度叫做适应度(fitness)。为了体现染色体的适应能力,引入了对问题中的每一个染色体都能进行度量的函数,叫适应度函数。

        在算法每次迭代之后,都需要用一个适应度函数来对整体进行换一下评估,适应度得分更高的个体代表了更优解,也就是说他在后面的繁殖遗传中,得到的后代更有可能得到更高的分数。随着遗传算法的进行,解的质量会提高,适应度会增加,最后得到一个较为满意的结果,终止遗传算法。

        适应度函数常被用来计算个体在群体中被使用的概率。

④选择(Selection)

        在每一回合,计算出来各个个体的适应度之后,选择过程来确定种群中的哪个个体将用于繁殖并产生下一代,在这种选择下产生的下一代会有更高的可能性获取更高的适应度函数值,也就是说会更有可能产生更优解。

        在这样的情况下,种群仍有机会选择适应度低的个体(只是降低了对应的概率),但是不会完全摒弃被放弃的基因。

⑤ 交叉(Crossover):

        为了创建一对新个体,通常是将双亲的染色体部分互换,成为一个新的子代,成为交叉或者重组:

⑥突变(Mutation)

        在自然界中,突变是为了定期随机更新新的种群,将新的基因引入,在算法中就是鼓励出现未知的解,或者是在未知的解空间进行搜索。突变可能是某一个基因的随机变化,也有可能是通过改变一个或多个染色体来表示的。

        例如:

                        |1|1|1|0|1|0|1|0|    -->    |1|0|1|0|1|0|1|0|

遗传算法流程

遗传算法的应用

TSP问题

算法语言的选择

MatLab自带遗传工具箱

Python也非常常见

想挑战一下C++

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永远在Debug的陛下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值