遗传算法Genetic Algorithm
好家伙,回回都是这个点,再这样下去人估计没了,换个bgm《夜泊秦淮》,要是经典咏流传能投票选诗词,投票选歌,俺一定选这个
开始瞎叨叨
遗传算法的理论以及背景
这个东西其实就是一个根据大自然的规律——适者生存,优胜劣汰的现象所提出的随机算法,说白了,就是一种借鉴了自然界生物的进化的机制和自然遗传机制的一个随机算法,是美国的Holland教授首先于20世纪70年代提出的,其通过模拟自然界的生物进化的遗传规律来达到寻找最优解的目的,其是收到了达尔文进化论的物竞天择,适者生存的思想的启发,将优化问题和生物进化结合起来,进行对照,将生物进化引入到复杂问题的思想中,在此基础上,提出了求解复杂问题的遗传算法
遗传算法一般是通过使用数学的形式,通过计算机来进行仿真运算,将这些复杂问题的求解过程转换成类似生物进化的过程,其过程包含生物进化中的染色体基因的交叉、变异等情况,使用遗传算法,通常可以在求解较为复杂的组合优化问题时,能够比一些常规的优化算法获得到更好的结果,遗传算法作为一种有效的工具,已被人们广泛地应用在最优化问题的求解上
在遗传算法中呢,首先就是对优化问题的解进行编码,既然是生物进化的思想,那么编码后的一个解我们将其称为一个染色体,组成染色体的元素称为基因。一个群体由若干个染色体组成,染色体的个数称为群体的规模。
与自然界中的生存环境相对应,在遗传算法中用适应函数表示环境,它是已编码的解的函数,是一个解适应环境程度的评价。适应函数的构造一般与优化问题的指标函数相关。简单的情况下,直接用指标函数或者指标函数经过简单的变换后作为适应面数使用。一般情况下,适应函数值大则表示所对应的染色体适应环境的能力强。适应函数起着自然界中环境的作用。
当适应函数确定后,自然选择规律将以适应函数值的大小来决定一个染色体是否继续生存下去的概率。生存下来的染色体成为种群,它们中的部分甚至全部以一定的概率进行交配、繁行,从而得到下一代的群体。
交配是一个生殖过程,发生在两个染色体中间,作为双亲的两个染色体,交换部分基因之后,生殖出两个新的染色体,即问题的新解。交配或者称为杂交,是遗传算法区别于其他优化算法的最主要的特征。在进化的过程中,染色体的某些基因可能会产生变异,即表示染色体的编码发生了某些变化。一个群体的进化需要染色体的多样性,而变异对保持群体的多样性具有一定的作用。
如果将生物进化和遗传算法进行对比可以发现
生物进化中的环境,对应遗传算法里的适应函数
生物进化中的染色体,对应遗传算法里的解的编码
生物进化中的基因,对应遗传算法里的编码的元素
生物进化中的适应性,对应遗传算法里的适应值函数
生物进化中的个体,对应遗传算法里的问题的一个解
生物进化中的群体,对应遗传算法里的被选定的一组解
生物进化中的种群,对应遗传算法里的根据适应函数选择的一组解
生物进化中的交配,对应遗传算法里的以一定方式由双亲产生后代的过程
生物进化中的变异,对应遗传算法里的编码的某些分量发生了变化的过程
生物进化中的适者生存,对应遗传算法里的适应函数值最大的解被保留的概率最大
主要操作
在遗传算法中,选择,交配和变异是其三个主要的操作
选择方面,要依据适应值的大小,选择操作从规模为N的群体中随机的选择若干染色体构成种群,种群的规模可以自由设置,由于是依据适应值的大小进行随机选择的,适应值大的染色体肯那个会被多次选出,而适应值小的就有可能没有机会被选中,这就导致了可能一些适应值小的染色体会被淘汰,体现出了优胜劣汰的生物进化规律,有很多种方式进行选择,经常使用的是一种“轮盘赌”的方法,不过这个后面再说
在进化过程中,交配不是100%进行的
变异就是在二进制编码的时候,1变成了0,0变成了1,这对于一个群体保持多样性是有着不错的作用的,但是过量的变异也会对群体造成破坏,所以需要以一个很小的概率来限制变异的规模
具体描述遗传算法过程
其中,每一代中群体的规模是固定的,变量t表示当前的代数,以适应值最大者为最优解。遗传算法的具体过程为:
①首先给定群体规模N,交配概率p和变异概率pm,此时t=0
②然后随机生成N个染色体作为初始群体
③对于群体中的每一个染色体x(1, 2....,N)分别计算其适应值F(x)
④如果算法满足停止准则,则转⑩
⑤对群体中的每一个染色体x,使用下式计算概率
⑥依据计算得到的概率值,从群体中随机的选取N个染色体,得到种群
⑦依据交配概率p从种群中选择染色体进行交配,其子代进入新的群体,种群中未进行交配的染色体,直接复制到新群体中
⑧依据变异概率pm从新群体中选择染色体进行变异,用变异后的染色体代替新群体中的原染色体
⑨用新群体代替旧群体,使代数增加1,即t=t+1,转③
⑩进化过程中适应值最大的染色体,经解码后作为最优解输出
然后结束遗传算法
遗传算法的特点
遗传算法具有以下特点:
第一,遗传算法作为一个随机搜索算法,适用于数值求解具有多参数,多变量,多目标的复杂最优化问题
第二,遗传算法对待求解间题的指标函数没有什么特殊的要求,比如不要求诸如连续性、导数存在、单峰值假设等,甚至不需要显式地写出指标函数
第三,在经过编码以后,遗传算法几乎不需要任何与问题有关的知识,唯一需要的信息是适应值的计算,也不需要使用者对问题有很深入的了解和求解技巧,通过选择、交配和变异等简单的操作求解复杂的问题,是一个比较通用的优化算法
第四,遗传算法具有天然的并行性,适用于并行求解
由于遗传算法是一个随机搜索算法,程序的每一次运行,得到的结果可能是不一样的,那么遗传算法得到的解的质量是否有保证呢?得到最优解的可能性如何呢?这些就引出了遗传算法的收敛性定理
遗传算法的收敛性定理:如果在代的进化过程中,遗传算法每次保留到目前为止的最好解,并且算法以交配和变异为其随机化操作,则对于一个全局最优化问题,当进化代数趋于无穷时,遗传算法找到最优解的概率为1。
该定理从理论上保证了只要进化的代数足够多,则遗传算法找到最优解的可能性会非常大,在实际使用中,由于要考虑在可接受的有限时间内算法停止的问题,因此解的质量与算法的控制参数,如群体的规模、交配概率、变异概率和进化代数等有很大的关系
(未完,后面补全)