一·遗传算法基本概念
Genetic Algorithm, GA:起源于对生物系统进行的计算机模拟研究。最早是由美国密歇根大学Holland教授及其学生于20世纪60年代末到70年代初提出。是借鉴孟德尔遗传学说模仿生物进化发展起来的随机全局搜索和优化方法。本质是高效,并行,全局搜索的方法。遗传算法使用群体搜索技术,将种群代表一组问题解,通过对当前种群施加选择、交叉、变异等一系列遗传操作来产生新一代的种群,并逐步使种群进化到包含近似最优解的状态。遗传算法 - 维基百科,自由的百科全书 (wikipedia.org)
二·名词引入
1.个体和种群
个体是指染色体具有特征的实体,表示可行解。
种群是个体的集合,表示可行解集。该集合内个体数成为种群的大小。初始解集生成方法最常见的是随机生成;特定问题中可以使用启发式算法(如贪心算法、局部搜索等)生成一个或多个较好的初始解。这可以帮助算法在较优区域开始搜索,从而加快收敛速度;也可先前信息或结果根据经验构造初始解集;针对某些特定领域的问题,可以设计特定的规则或结构来生成初始解。例如,在调度问题中,可能基于任务的优先级生成一定结构的解。
2.染色体和基因
基因是控制生物体即遗传信息的基本单位,表示可行解的编码。一条染色体可以表示为二进制串,其中每一位代表一个基因。
3.遗传编码
遗传编码是将优化变量转化为基因的组合表示形式,优化变量的编码机制有二进制编码、十进制编码(实数编码)等。
编码(coding) | DNA中遗传信息在一个长链上按一定的模式排列,遗传编码可看作从表现型到基因型的映射。 |
解码(decoding) | 基因型到表现型的映射。 |
4.适应度
适应度即生物体个体适应生存环境的能力。在遗传算法中,用来评价解的优劣程度的数学函数,称为个体的适应度函数。对于求解最大值的优化问题,某解的适应度函数值越大,即表示该解越适应函数。
5.遗传操作
遗传算法通过选择,交叉,突变行为来从亲代解产生子代解,并通过这些过程将亲代的信息遗传给子代。
选择 | 用来确定哪些个体用于繁殖并产生下一代,适应度高更有可能被选中,适应度低也不至于完全摒弃其遗传物质,避免陷入局部最优及过早收敛。 |
交叉 | 双亲样本交叉互换得到亲代染色体 |
突变 | 随机更新种群,将新模式引入种群,有利于在更广阔的空间寻找优解 |
6.终止条件
两种最常用的终止检查条件是:
1.已达到最大世代数。这也用于限制算法消耗的运行时间和计算资源。
2.在过去的几代中,个体没有明显的改进。这可以通过存储每一代获得的最佳适应度值,然后将当前的最佳值与预定的几代之前获得的最佳值进行比较来实现。如果差异小于某个阈值,则算法可以停止。
其他停止条件:
1.自算法过程开始以来已经超过预定时间。
2.消耗了一定的成本或预算,例如CPU时间和/或内存。
3.最好的解已接管了一部分种群,该部分大于预设的阈值。
三·具体实现细节
1.编码(建立从基因型到表现型的映射关系)
编码是应用遗传算法时要解决的首要问题,也是设计遗传算法时的一个关键步骤。编码方法影响到交叉算子、变异算子等遗传算子的运算方法,大很大程度上决定了遗传进化的效率。
迄今为止人们已经提出了许多种不同的编码方法。总的来说,这些编码方法可以分为三大类:二进制编码法、浮点编码法、符号编码法。下面分别进行介绍:
1.1二进制编码法
人类的基因有AGCT 4种碱基,这里采用0和1两种碱基。优点是简单易行,且利用模式定理对算法进行理论分析。(模式定理http://t.csdnimg.cn/oGitH)一位代表两种状态的信息量,因此对于复杂信息来说,足够长的序列才能更好的传达信息,造成麻烦。对于连续函数的搜索问题,其随机性也使其搜索能力较差,当迫近最优解时由于其变异后表现型变化很大,不连续,所以会远离最优解,达不到稳定。
1.2浮点编码法
浮点法中个体的每个基因值用某一范围内的一个浮点数来表示。在浮点数编码方法中,必须保证基因值在给定的区间限制范围内,遗传算法中使用的遗传算子也必须保证其运算结果所产生的新个体的基因值也在该区间限制范围内。例如:1.2-3.2-5.3-7.2-1.4-9.7
浮点数编码方法有如下优点:
- 适用于在遗传算法中表示范围较大的数
- 适用于精度要求较高的遗传算法
- 便于较大空间的遗传搜索
- 改善了遗传算法的计算复杂性,提高了运算效率
- 便于遗传算法与经典优化方法的混合使用
- 便于设计针对问题的专门知识的知识型遗传算子
- 便于处理复杂的决策变量约束条件
1.3符号编码法
符号编码法是指个体染色体编码串中的基因值取自一个无数值含义、而只有代码含义的符号集如{A,B,C…}。
符号编码的主要优点是:
- 符合有意义积木块编码原则遗传算法基础 - 争不过朝夕 - 博客园 (cnblogs.com)
- 便于在遗传算法中利用所求解问题的专门知识
- 便于遗传算法与相关近似算法之间的混合使用。