遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )

  • 格式:pdf
  • 大小:203.59 KB
  • 文档页数:9

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

遗传算法入门(上)代码中的进化学说与遗传学说

写在之前

算法所属领域

遗传算法的思想解析

为什么要用遗传算法?

科研现状

应用现状

遗传算法入门系列文章:

(中篇)遗传算法入门(中)实例,求解一元函数最值(MATLAB版)(下篇)遗传算法入门(下)实例,求解TSP问题(C++版)

写在之前

说明:本想着用大量篇幅写一篇“关于遗传算法的基本原理”作为本系列入门的第一篇,但是在找寻资料的过程中,看到网络上有大量的关于遗传算法的介绍,觉得写的都挺好,所以本文我就简单写点自己的理解。

推荐几篇关于遗传算法的介绍性文章:

遗传算法详解(GA)(个人觉得很形象,很适合初学者)

算法所属领域

相信每个人学习一门知识之前,都会想知道这门知识属于哪一门学科范畴,属于哪一类技术领域?

首先对于这种问题,GA是没有绝对的归属的。算法的定义是解决问题的一种思想和指导理论。而遗传算法也是解决某一问题的一种思想,用

某一编程语言实现这种思想的程序具有很多特点,其中一个便是智能性和进化性,即,不需要大量的人为干涉,程序本身能够根据一定的条件自我筛选,最终得出令人满意的结果。所以按照这种特性,把它列为人工智能领域下的学习门类毫无疑问是可以的。遗传算法的思想是借鉴了达尔文的进化学说和孟德尔的遗传学说,把遗传算法说成是一门十足的仿生学一点都不过分。然而从应用的角度出发,遗传算法是求最优解问题的好方法,如信号处理中的优化、数学求解问题、工业控制参数最优解、神经网络中的激活函数、图像处理等等,所以把遗传算法说成优化范畴貌似也说的过去。为了方便理解,我们可以暂时将其定位为人工智能–智能优化,这也是很多书中描述遗传算法的惯用词汇。

遗传算法的思想解析

遗传算法(gentic algorithms简称GA)是模拟生物遗传和进化的全局优化搜索算法

我们知道,在人类的演化中,达尔文的进化学说与孟德尔的遗传学说起着至关重要的理论指导。每个人作为一个个体组成一个人类种群,正是经历着物竞天择,才会让整个群体慢慢变的更好,即更加适应周围的环境。而每一代正是靠着基因交叉与变异才能繁衍出更加适应大自然规律的下一代个体。总之,在漫长的迭代进化中,一个不适应环境的群体,在物竞天择和交叉变异中慢慢变的适应了环境。

GA的思想完全模拟了生物的进化和遗传方式。我们在求解一个问题的最优解时,先人为的产生很多任意的解,组成一个解集(一个解是一个个体,一个解集是一个种群),这些解有好有坏。我们的最终目的是让这

些解通过“物竞天择”慢慢演化成最终适合所求的最优解。如果说大自然中是周围的环境对种群中的个体做出选择,那么在求解问题时,就可以用一个问题的模型函数来对众多解做出选择,即:对于一个要解决的问题,我们通过数学建模的方式将其建立为一个纯数学函数F=f(x,y.)" role="presentation">F=f(x,y.)F=f(x,y.)F = f(x,y.) , 该函数就能反应该问题的特性,例如我们需要求解汽车过隧道问题。可以将隧道抽象成一个倒立的抛物线函数,通过研究该抛物线的特性来研究隧道口的高度。如果我们在之前先产生一个解集,将解集中的所有解带入抛物线,得出一个结果集,则结果集中的每个结果肯定有好有坏,好的结果所对应的解就是好解,反之亦然。所以,这个模型函数就充当了自然界中的环境因素。在遗传算法中,这个模型函数称为目标函数,而在实际的算法运行中,因为考虑到算法的设计,往往会在目标函数上做一些不会改变函数特性,但是会改变函数形式的改进,例如F(x)=x+1" role="presentation">F(x)=x+1F(x)=x+1F(x) = x+1 改为F(x)=5x+1" role="presentation">F(x)=5x+1F(x)=5x+1F(x)=5x+1 ,改变前和改变后,函数都是线性函数,但改变后的函数变得更加陡峭。有些改变是为让函数在定义域内不再有负值等等。这些改变后的函数称为适应度函数,总之,适应度函数是为了不改变目标函数对个体选择的特性下为了更好的进行写代码而生的。

我们早在设计算法的一开始就对每个解进行了编码,编码的方式有很多,并不难理解,如适应度函数F(x,y,z)=x2+y2+z2" role="presentation">F(x,y,z)=x2+y2+z2F(x,y,z)=x2+y2+z2F(x,y,z) =

x^2+y^2+z^2 , 我们随机生成了一个解(个体)567" role="presentation">567567567 ,其中x=5" role="presentation">x=5x=5x= 5, y=5" role="presentation">y=5y=5y=5, z=7" role="presentation">z=7z=7z=7 ,将其带入函数,可以得出一个适应度值,这个值的大小可以反应该解是否是好的解。567" role="presentation">567567567 这一个解称之为一个个体,你也可以形象的称之为一个染色体,而三个数字中的每一个数字称之为基因,正如许多基因组成一个染色体(人体)一样。在上述中,将函数的每个变量对应个体中的每个基因的方式,我们称之为实数编码,当然我们可以通过某一对应法则,将十进制的基因变成二进制,如上述的个体567" role="presentation">567567567,通过某一对应法则变成0101|0110|0111"

role="presentation">0101|0110|01110101|0110|01110101| 0110| 0111 ,对于这种形式的编码称之为二进制编码,而此时的基因变成0或1 。

种群中的个体通过遗变异和变异(遗传学说)作为产生新个体的依据,通过适应度函数(环境)控制的选择(物竞天择)对个体进行筛选,经过上百次的循环(繁殖),最终会产生非常接近符合适应度函数(使用环境)的个体(物种),而最好个体中的基因便是最好的变量,即最好的解。

为什么要用遗传算法?

为什么要用遗传算法?通过分析遗传算法的思想,我们知道遗传算法