《遗传算法笔记.doc》由会员分享,可在线阅读,更多相关《遗传算法笔记.doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流遗传算法笔记.精品文档.211 基本遗传算法的构成要素(1) 染色体编码方法。(2) 个体适应度评价。这样,根据不同种类的问题,必须预先确定好由目标函数值到个体适应度之间的转换规则,特别是要预先确定好当目标函数值为负数时的处理方法。(3) 遗传算子。基本遗传算法使用下述三种遗传算子选择运算使用比例选择算子;交叉运算使用单点交叉算子; 变异运算使用基本位变异算子或均匀变异算子。(4)基本遗传舆法的运行参数。基本遗传算法有下述4个运行参数需要提前设定: M:群体大小,即群体中所含个体的数量,一般取为20100。 T:遗传运算的终止进化代数,一般取
2、为100500 Pc:交叉概率,一般取为0.40.99。 Pm:变异概率,一般取为000010.10需要说明的是,这4个运行参数对遗传算法的求解结果和求解效率都有一定的影响,但目前尚无合理选择它们的理论依据。在遗传算法的实际应用中,往往需要经过多次试算后才能确定出这些参数合理的取值大小或取值范围。22 基本遗传算法的实现221 个体适应度评价为满足适应度取非负值的要求基本遗传算法一般采用下面两种方法之一将目标函数值f(x)变换为个体的适应度F(x)。方法一:对求目标函数最大值的优化问题,变换方法为 c mm为一个适当地相对比较小的数,它可用下面几种方;之一来选取。 预先指定的 个较小的数。 进
3、化到当前代为止的最小目标函数值。 当前代或最近几代群体中的最小日初i函数值。 方法二:对于求目标函数最小值的优化问题变换方法为式小,cmx为一个适当地相对比较大的数,它可用下面几种方法 预先指定的一个较大的数。 进化到当前代为止的最大目标函数值。 当前代或最近几代群体中的最大日标函数值。222比例选择算子选择算子是比例选择算子。所谓比例选择算子,是指个体被选中并遗传到下一代群体中的概率与该个体的适应度大小成正比。比例选择算子的具体执行过程是: (1)先计算出群体中所有个体的适应度的总和。 (2)其次计算出每个个体的相对适应度的大小,即为各个个体被遗传到下代群体中的概率。(3)最后再使用模拟赌盘
4、操作(即0到1之间的随机数)来确定各个个体被选中的次数。223单点交叉算子 单点交叉算子是最常用和最基本的交叉操作其子。单点交叉算子的具体执行过程如下。 (1)对群体中的个体进行两两随机配对。若群体大小为M,则共有M/2对相互配对的个体组。其中x表示不大于x的最大的整数。 (2)对每一对相互配对的个体,随机设置某一基因座之后的位置为交叉点。若染色体的长度为n,则共有(n1)个可能的交叉点位置。 (3)对每一对相互配对的个体,依设定的交叉概率Pc在其文叉点处相互交换两个个体的部分染色体,从而产生出两个新的个体。224基本位变异算子 基本位变异算子是最简单和最基本的变异操作算子。对于基本遗传算法中
5、用二进制编码符号串所表示的个体,若需要进行变异操作的某基因座上的原有基因值为0,则变异操作将该基因值变为1反之,若原有基因值为1,则变异操作将其变为0。 基本位变异其子的具体执行过程是: (1)对个体的每一个基因座,依变异概率Pm指定其为变异点 (2)对每一个指定的变异点,对其基因值做取反运算或用其他等位基因值来代替,从而产生出一个新的个体。23 基本遗传算法应用举例 由前述我们可以知道基本遗传算法是一个这代过程,它模仿生物在自然环境中的遗传和进化机理,反复将选择算子、交叉算子、变异算子作用于群体,最终可得到问题的最优解或近似最优解。虽然算法的思想比较单纯,结构也比较简单,但它却也具有一定的实
6、用价值,能够解决一些复杂系统的优化计算问题。 231 遗传算法的应用步骤 遗传算法提供厂一种求解复杂系统优化问题的通用框架,它不依赖于问题的领域和种类。对一个需要进行优化计算的实际应用问题,一般可按下述步骤来构造求解该问题的遗传算法。 第一步:确定决策变量及其各种约束条件,即确定出个体的表现型x和问题的解空间。 第二步:建立优化模型,即确定出目标函数的类型(是求目标函数的最大值还是求目标函数的最小值?)及其数学描述形式或量化方法。 第三步:确定表示可行解的染色体编码方法,也即确定出个体的基因型x及遗传算法的搜索空间。 第四步:确定编码方法,即确定出由个体基因型x到个体表现型x的对应关系或转换方
7、法。 第五步;确定个体适应度的量化评价方法,即确定出由目标函数值f(x)到个体适应度F(x)的转换规则。 第六步:设计遗传算子,即确定出选择运算、交叉运算、变异运算等遗传算子的具体操作方法。 第七步;确定遗传算法的有关运行参数,即确定出遗传算法的M、T、Pc、Pm等参数。 由上述构造步骤可以看出,可行解的编码方法、遗传算子的设计是构造遗传算法时需要考虑的两个主要问题,也是设计遗传算法时的两个关键步骤。对不同的优化问题需要使用不同的编码方法和不同躁作的遗传算子,它们与所求解的具体问题密切相关,因而对所求解问题的理解程度是遗传算法应用成功与否的关键。第三章 遗传算法的基本实现技术3l 编码方法在遗
8、传算法中如何描述问题的可行解,即把一个问题的叮行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法就称为编码。编码原则一(有意义积木块编码原则):应使用能易于产生与所求问题相关的且具有低阶、短定义长度模式的编码方案o编码原则二(最小字符集编码原则):应使用能使问题得到自然表示或描述的具有最小编码字符集的编码方案。311 二进制编码方法二进制编码方法有下述一些优点:(1)编码、解码操作简单易行。(2)交叉、变异等遗传操作便于实现。(3)符合最小字符集编码原则。(4)便于利用模式定理对算法进行理论分析312 格雷码编码方法二进制编码不便于反映所求问题的结构特征,对于一些连续函数的优化问题等,也
9、由于遗传运算的随机特性而使得其局部搜索能力较差。为改进这个待性,人们提出用格雷码(gray code)格雷码有这样一个持点:任意两个整数的差是这两个整数所对应的格雷码之间的海明距离(Hamming Distance)。这个持点是遗传算法中使用格雷码来进行个体编码的主要原因。格雷码编码方法的主要优点是:1)便于提高遗传算法的局部搜索能力。:2)交叉、变异等遗传操作便于实现。:3)符合最小字符集编码原则。:4)便于利用模式定理对算法进行理论分析。 313 浮点数编码方法 对于一些多维、高精度要求的连续函数优化问题,使用二进制编码来表示个体时将会有一些不利之处。 首先是二进制编码存在着连续函数离散化
10、时的映射误差。个体编码串的长度较短时可能达不到精度要求;而个体编码串的长度较长时,虽然能提高编码精度,但却会使遗传算法的搜索空间急剧扩大。 其次是二进制编码不便于反映所求问题的特定知识,这样也就不便于开发针对问题专门知识的遗传运算算子,人们在一些经典优化算法的研究中所总结出的一些宝贵经验也就无法在这里加以利用,也不便于处理非平凡约束条件。所谓浮点数编码方法,是指个体的每个基因值用某一范围内的一个浮点数来表示,个体的编码长度等于其决策变量的个数。因为这种编码方法使用的是决策变量的真实值,所以浮点数编码方法也叫做真值编码方法。浮点数编码方法有下面几个优点:(1)适合于在遗传算法中表示范围较大的数。
11、(2)适合于精度要求较高的遗传算法。(3)便于较大空间的遗传搜索。(4)改善了遗传算法的计算复杂性,提高了运算效率。5)便于遗传算法与经典优化方法的混合使用。(6)便于设计针对问题的专门知识的知识型遗传算于。(7)便于处理复杂的决策变量约束条件。 314 符号编码方法 符号编码方法是指个体染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集。 符号编码的主要优点是: (1)符合有意义积木块编码原则。 (2)便于在遗传算法中利用所求解问题的专门知识。 (3)便1遗传算法与相关近似算法之间的混合使用。 但对于使用符号编码方法的遗传算法,一般需要认真设计交叉、变异等遗传运算的操作方法,以
12、满足问题的各种约束要求这样才能提高算法的搜索性能。315 多参数级联编码方法一般常见的优化问题中往往合有多个决策变量。例如六峰值驼背函数(Six hump Camel Back Function):其实在我们前面的例子中己遇到过多参数编码的一种最常用和最基本的方法:将各个参数分别以某种编码方法进行编码,然后再将它们的编码按一定顺序联接在一起就组成了表示全部参数的个体编码。这种编码方法称为多参数级联编码方法。 316 多参数交叉编码方法 多参数交叉编码方法的基本思想是:将各个参数个起主要作用的码位集中在一起,这样它们就不易于被遗传算子破坏掉。在前述多参数的级联编码方法中,各个参数的编码值集中在一
13、 起,这样各个参数的局部编码结构就不易被遗传算子破坏掉,它适合于备参数之间的相互关系较弱,特别是某一个或少数几个参数起主要作用时的优化问题。而多参数的交叉编码方法特别适用于各个参数之间的相互关系较强、各参数对最优解的贡献相当时的优化问题,因为在这种交叉编码方法中,用来表示各个参数值的二进制编码的最高位被集中在了一起,它们就不易被遗传算子破坏掉,而这些最高位在表示各个参数值时所起的作用最强这样就可以尽量地维持各参数之间的相互关系。3,2适应度函数321 目标函数与适应度函数评价个体适应度的一般过程是; (1)对个体编码串进行解码处理后可得到个体的表现型。 (2)由个体的表现型可计算出对应个体的目
14、标函数值。 (3)根据最优化问题的类型,由目标函数值按一定的转换规则求出个体的适应度对于求最大值的问题,作下述转换:对于求最小值的问题,作下述转换; 32,2适应度尺度变换这时产生新个体作用较大的交叉算子就起不了什么作用,因为相同的两个个体不论在何处进行交叉操作都永远不会产生出新的个体,这样就会使群体的多样性降低,容易导致遗传算法发生早熟现象(或称;早期收效),使遗传算法所求到的解停留在某局部最优点上。我们希望在遗传算法运行的后期阶段,算法能够对个体的适应度进行适当的放大,扩大最佳个体适应度与其他个体适应度之间的差异程度,以提高个体之间的竞争性。这种对个体适应度所做的扩大或缩小变换就称为适应度
15、尺度变换(Fitting Scaling)。目前常用的个体适应度尺度变换方法主要有三种:线性尺度变换、乘幂尺度变换和指数尺度变换。33 选择算子选择操作建立在对个体的适应度进行评价的基础之上。选择操作的主要目的是为了避免基因缺失、提高全局收敛性和计算效率。 331 比例选择332 最优保存策略最优保存策略进化模型的具体操作过程是:(1)找出当前群体中适应度最高的个体和适应度最低的个体。(2)若当前群体中最佳个体的适应度比总的迄今为止的最好个体的适应度还要高则以当前群体中的最佳个体作为新的迄今为止的最好个体。(3)用迄今为止的最好个体替换掉当前群体中的最差个体。最优保存策略可视为选择操作的一部分
16、。该策略的实施可保证迄今为止所得到的最优个体不会被交叉、变异等遗传运算所破坏,它是遗传其法收敛性的一个重要保证条件。但另一方面,它也容易使得某个局部最优个体不易被淘汰掉反而快速扩散,从而使得算法的全局搜索能力不强。所以该方法一般要与其他一些选择操作方法配合起来使用,方可有良好的效果。另外,最优保存策略还可加以推广,即在每一代的进化过程中保留多个最忧个体不参加交叉、变异等遗传运算,而直接将它们复制到下一代群体中。这种选择方法也称为稳态复制。 333确定式采样选择 确定式采样选择方法的基本思想是按照一种确定的方式来进行选择操作。334 无回放随机选择 335 无回放余数随机选择 无回放余数随机选择
17、的具体操作过程是:(1) 计算群体中每个个体在下一代群体中的生存期望数目这种选择操作方法可确保适应度比平均适应度大的一些个体定能够被遗传到下一代群体中,所以它的选择误差比较小。336 排序选择排序选择方法的主要思想是:对群体中的所有个体按其适应度大小进行排序,基于这个排序来分配各个个体被选中的横率。其具体操作过程是: (1)对群体中的所有个体按其适应度大小进行院序排序。 (2)根据具体求解问题,设计一个概率分配表,将各个核率值按上述排列次序分配给各个个体。(3)以各个个体所分配到的概率值作为其能够被遗传到下一代的概率,基于这些概率值用比例选择(赌盘选择)的方法来产生下一代群体。337 随机联赛
18、选择联赛选择的具体操作过程是: (1)从群体中随机选取N个个体进行适应度大小的比较,将其中适应度最高的个体遗传到下一代群体中。 (2)将上述过程重复M次,就可得到下一代群体中的M个个体。34 交叉算子遗传算法中的所谓交叉运算,是指对两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。交叉算子的设计和实现与所研究的问题密切相关,一般要求它既不要太多地破坏个体编码串中表示优良性状的优良模式,又要能够有效地产生出一些较好的新个体模式。另外,交叉算子的设计要和个体编码设计统一考虑。交叉算子的设计包括以下两方面的内容(1)如何确定交叉点的位置?(2)如何进行部分基因交换?341 单点
19、交又342 双点交叉与多点交叉需要说明的是,一股不大使用多点交叉算子,因为它有可能破坏一些好的模式。 343 均匀交又344 算术交又为了能够进行线性组合运算,算术交叉的操作对象一般是由浮点数编码所表示的个体。35 变异算子遗传算法中的所谓变异运算,是指将个体染色体编码串中的某些基因座上的基因值用该基因座的其他等位基因来替换从而形成一个新的个体。从遗传运算过程户产生新个体的能力方面来说,交叉运算是产生新个体的主要方法,它决定了遗传算法的全局搜索能力;而变异运算只是产生新个体的辅助方法,但它也是必不可少的一个运算步骤,因为它决定7遗传算法的局部搜索能力。交叉算子与变异并子的相互配合,共同完成对搜
20、索空间的全局搜索相局部搜索,从而使得遗传算法能够以良好的搜索性能完成最优化问题的寻优过程。1) 改善遗传算法的局部搜索能力。2) 维持群体的多样性,防止出现早熟现象。变异算子的设计包括如下两方面的内容如何确定变异点的位置? 如何进行基因值替换?351 基本位变异基本位变异操作改变的只是个体编码串中的个别几个基因座上的基因值,并且变异发生的概率也比较小,所以其发挥的作用比较但,作用的效果也不明显。352 均匀变异均匀变异的具体操作过程是:(1)依次指定个体编码串中的每个基因座为变异点。(2)对每一个变异点,以变异概率Pm从对应基因的取值范围内取一随机数来替代原有基因值。 均匀变异操作持别适合应用
21、于遗传算法的初期运行阶段,它使得搜索点可以在整个搜索空间内自由地移动,从而可以增加群体的多样性,使算法处理更多的模式。353 边界变异边界变异操作是上述均匀变异操作的一个变形遗传算法。在进行边界变异操作时,随机地取基因座的二个对应边界基因值之一去替代原有基因值。当变量的取值范围特别宽,并且无其他约束条件时,边界变异会带来不好的作用。但它特别适用于最优点位于或接近于可行解的边界时的一类问题。354 非均匀变异均匀变异操作取某一范围内均匀分布的随机数来替换原有基队值可使得个体在被索空间内自由移动。但另一方面,它却不便于对某一重点区域进行局部搜索。为改进这个性能,我们不是取均匀分布的随机数去替换原有
22、的基因值,而是对原有基因值作一随机扰动,以扰动后的结果作为变异后的新基因值。对每个基因座都以相同的概率进行变异运算之后,相当于整个解向量在解空间中作了一个轻微的变动。这种变异操作方法就称为非均匀变异355 高斯变异所谓高斯变异操作是指进行变异操作时,用符合均值为P、方差为的正态分布的个随机数来替换原有基因值。由正态分布的特性可知,高斯变异也是重点搜索原个体附近的某个局部区域:高斯变异的具体操作过程与均匀变异相类似。36 遗传算法的运行参数(1) 编码串长度l(2) 群体大小M。群体大小M表示群体中所含个体的数量。当M取值较小时,可提高遗传算法的运算速度但却降低了群体的多样性,有可能会引起遗传算
23、法的早熟现象;而当M取值较大时,又会使得遗传算法的运行效率降低。一般建议的取值范围是20100。(3) 交叉概率Pc。交叉操作是遗传算法中产生新个体的主要方法,所以交叉概率一般应取较大值。但若取值过大的话,它又会破坏群体中的优良模式,对进化运算反而产生不利影响;若取值过小的话,产生新个体的速度又较慢。一般建议的取值范围是o4099。另外,也可使用自适应的思想来确定交叉概率Pc,随着遗传算法在线性能的提高,可以增大交叉概率Pc的取值。(4) 变异概率Pm。若变异概率队取值较大的话,虽然能够产生出较多的新个体,但也有可能破坏掉很多较好的模式,使得遗传算法的性能近似于随机搜索算法的性能;若变异概率P
24、m取值太小的话,则变异操作产生新个体的能力和抑制早熟现象的能力就会较差。一般建议的取值范围是o000101。另外,也可使用自适应的思想来确定变异概率Pm,如随着遗传算法在线性能的下降,可以减小变异概率Pm的取值;提出的一种自适应变异策赂中,Pm与其上一代群体间的海明距离成反比,其结果显示出这种方法能够有效地维持群体的多样性。(5) 终止代数T。一般建议的取值范围是100一1000。至于遗传算法的终止条件,还可以利用某种判定准则,当判定出群体己经进化成熟且不再有进化趋势时就可终止算法的运行过程。常用的判定准则有下面两种: 连续几代个体平均适应度的差异小于某一个极小的团值;群体中所有个体适应度的方
25、差小于菜一个极小的闭值。(6) 代沟G。代沟G是表示各代群体之间个体重叠程度的一个参数,它表示每一代群体中被替换掉的个体在全部个体中所占的百分率,即每一代群体中有(M x G)个个体被替换掉。例如,G1.0表示群体中的全部个体都是新产生的,这也是最常见的一种情况渴0.7则表示70畅的个体是新产生的,而随机保留厂上一代群体中30的个体。37 约束条件的处理方法371 搜索空间限定法 这种处理方法的基本思想是对遗传算法的搜索空间的大小加以限制使得搜索空间中表示一个个体的点与解空间中表示一个可行解的点有一一对应的关系。方法一;用编码方法来保证总是能够产生出在解空间中有对应可行解的染色体。方法二:用程
26、序来保证直到产生出在解空间中有对应可行解的染色体之前,一直进行交叉运算和变异运算。373 可行解变换法 这种处理方法的基本思想是:在由个体基因型到个体表现型的变换中,增加使其满足约束条件的处理过程。即寻找出一种个体基因型和个体表现型之间的多对一的变换关系,使进化过程中所产生的个体总能够通过这个变换而转化成解空间中满足约束条件的一个可行解。图34所示为该方法的示意图。这种处理方法虽然对个体的编码方法、交叉运算、变异运算等没有附加的要求,但它却是以扩大搜索空间为代价的,所以一般会使得遗传算法的运行效率有所下降。373 罚函数法这种处理方法的基本思想是:对企解空间中无对应可行解的个体,计算其适应度时,处以一个罚函数,从而降低该个体适应度,使该个体被遗传到下一代群体中的机会减少。如何确定合理的罚函数是这种处理方法的难点之所在,出为这时既要考虑如何度量解对约束条件不满足的程度,又要考虑遗传算法在计算效率上的要求。罚函数的强度太小的话,部分个体仍有可能破坏约束条件,所以保证不厂遗传运算所得到的个体一定是满足约束条件的一个可行解;罚函数的强度太大的话,又有可能使个体的适应度差异不大,降低了个体之间的竞争力,从而影响遗响遗传算法的运行效率。