遗传算法
- 格式:doc
- 大小:73.00 KB
- 文档页数:8
遗传算法的概念
遗传算法(Genetic Algorithm)是基于生物学进化理论的一种优化算法。
它是模拟自然界的进化过程,通过筛选、交叉、变异等元素不断筛选出能够适应环境的个体,最终得到最优解或次优解的一种算法。
遗传算法的基本思想是将问题看作一个个体,使用种群的方式不断迭代,将群体中优劣个体进行适应度评估并进行优胜劣汰,简单来说就是不断筛选出最优的解决方案来。
遗传算法被广泛应用于各类优化问题,例如旅行商问题、机器学习和函数优化等。
遗传算法的五个基本要素遗传算法是一种模拟生物进化过程的搜索算法,它通过不断地迭代和选择最优解来解决问题。
遗传算法的五个基本要素是遗传、变异、选择、交叉和编码,这些要素共同构成了遗传算法的核心。
一、遗传遗传算法的第一个基本要素是遗传。
遗传是指通过复制种群中的个体来创建新的种群。
在遗传算法中,我们通常使用一种称为染色体或基因组的表示法来代表问题空间中的解决方案。
染色体通常被表示为一组二进制位,这些位代表了解决方案的特征或属性。
二、变异变异是指染色体中的某些位发生随机变化,以引入新的解决方案。
变异有助于打破种群的平衡,增加搜索空间的多样性,从而促进算法找到更好的解决方案。
变异通常是通过随机改变染色体中的某些位来实现的,这种变化可以是替换、添加或删除位。
三、选择选择是指根据个体的适应度或质量来选择哪些个体将被复制到下一代。
在遗传算法中,我们通常使用适应度函数来评估每个解决方案的质量。
适应度函数通常与问题的目标函数相对应,因此可以根据问题的具体需求来定义。
选择过程通常采用轮盘赌机制,根据个体的适应度来决定其在下一代中的比例。
四、交叉交叉是指两个个体之间进行随机配对,以创建新的个体。
交叉有助于在搜索过程中产生新的解决方案,从而扩大搜索空间。
在遗传算法中,我们通常使用一些特定的交叉策略,如单点交叉、多点交叉等。
这些策略可以根据问题的具体需求和搜索空间的大小来选择。
五、编码编码是指将问题空间中的解决方案转换为一种可以用于遗传操作的形式。
编码过程通常采用二进制编码、浮点数编码等不同的方式,这取决于问题的具体需求和搜索空间的大小。
良好的编码方式可以提高算法的效率和鲁棒性,并帮助算法更快地找到最优解。
综上所述,遗传算法的五个基本要素——遗传、变异、选择、交叉和编码,共同构成了遗传算法的核心。
这些要素相互作用,相互影响,共同推动搜索过程,以找到问题的最优解。
在实际应用中,我们应根据问题的具体需求和搜索空间的大小来选择合适的参数和操作,以获得最佳的搜索效果。
遗传算法基本概念遗传算法是一种基于生物进化原理的优化搜索算法。
它通过模拟自然界的遗传机制,如遗传编码、适应度函数、选择、交叉和变异等过程,寻找最优解。
下面将详细介绍遗传算法的各个组成部分。
1. **遗传编码**遗传编码是遗传算法中表示解的一种方式,它将问题的解空间映射到基因空间。
常见的编码方式有二进制编码、实数编码和排列编码等。
二进制编码使用0和1表示基因,实数编码使用连续实数表示基因,排列编码则使用解的排列顺序表示基因。
2. **适应度函数**适应度函数用于评估个体的适应度,即解的质量。
适应度函数值越大,解的质量越好。
根据问题的不同,适应度函数的设计也有所不同。
在设计适应度函数时,需要确保其能够反映问题的实际需求,并且能够指导算法向更好的解进化。
3. **选择操作**选择操作是根据个体的适应度值来决定其在下一代中的存活概率。
常用的选择策略有轮盘赌选择、锦标赛选择和排序选择等。
选择操作的目标是保持算法的多样性,并逐渐向更好的解靠近。
4. **交叉操作**交叉操作是将两个个体的部分基因进行交换,以产生新的个体。
常见的交叉方式有单点交叉、多点交叉和均匀交叉等。
通过交叉操作,遗传算法能够继承父代个体的优良基因,并尝试探索新的解空间。
5. **变异操作**变异操作是对个体的基因进行随机改变,以增加种群的多样性。
变异操作可以避免算法陷入局部最优解,并扩大搜索空间。
常见的变异方式有位反转、倒位和点突变等。
6. **终止条件**终止条件用于确定算法何时结束运行。
常见的终止条件有达到预设的最大迭代次数、连续多代个体适应度值无明显改进等。
遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。
进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。
遗传算法通常实现为一种计算机模拟。
对于一个最优化问题,一定数量的候选解(称为个体)的抽象表示(称为染色体)的种群向更好的解进化。
传统上,解用二进制表示(即0和1的串),但也可以用其他表示方法。
进化从完全随机个体的种群开始,之后一代一代发生。
在每一代中,整个种群的适应度被评价,从当前种群中随机地选择多个个体(基于它们的适应度),通过自然选择和突变产生新的生命种群,该种群在算法的下一次迭代中成为当前种群。
目录[隐藏]1 遗传算法的机理1.1 算法1.2 GA参数1.3 特点2 变量3 适用的问题4 发展历史5 应用领域6 相关技术7 参见8 参考文献9 外部链接[编辑] 遗传算法的机理在遗传算法里,优化问题的解被称为个体,它表示为一个参数列表,叫做染色体或者基因串。
染色体一般被表达为简单的字符串或数字串,不过也有其他的表示方法适用,这一过程称为编码。
一开始,算法随机生成一定数量的个体,有时候操作者也可以对这个随机产生过程进行干预,播下已经部分优化的种子。
在每一代中,每一个个体都被评价,并通过计算适应度函数得到一个适应度数值。
种群中的个体被按照适应度排序,适应度高的在前面。
这里的“高”是相对于初始的种群的低适应度来说的。
下一步是产生下一代个体并组成种群。
这个过程是通过选择和繁殖完成的,其中繁殖包括交配(crossover)和突变(mutation)。
选择则是根据新个体的适应度进行的,适应度越高,被选择的机会越高,而适应度低的,被选择的机会就低。
初始的数据可以通过这样的选择过程组成一个相对优化的群体。
之后,被选择的个体进入交配过程。
一般的遗传算法都有一个交配概率,范围一般是0.6~1,这个交配概率反映两个被选中的个体进行交配的概率。
例如,交配概率为0.8,则80%的“夫妻”会生育后代。
每两个个体通过交配产生两个新个体,代替原来的“老”个体,而不交配的个体则保持不变。
交配父母的染色体相互交换,从而产生两个新的染色体,第一个个体前半段是父亲的染色体,后半段是母亲的,第二个个体则正好相反。
不过这里的半段并不是真正的一半,这个位置叫做交配点,也是随机产生的,可以是染色体的任意位置。
再下一步是突变,通过突变产生新的“子”个体。
一般遗传算法都有一个固定的突变常数,通常是0.1或者更小,这代表变异发生的概率。
根据这个概率,新个体的染色体随机的突变,通常就是改变染色体的一个字节(0变到1,或者1变到0)。
经过这一系列的过程(选择、交配和突变),产生的新一代个体不同于初始的一代,并一代一代向增加整体适应度的方向发展,因为最好的个体总是更多的被选择去产生下一代,而适应度低的个体逐渐被淘汰掉。
这样的过程不断的重复:每个个体被评价,计算出适应度,两个个体交配,然后突变,产生第三代。
周而复始,直到终止条件满足为止。
一般终止条件有以下几种:进化次数限制;计算耗费的资源限制(例如计算时间、计算占用的内存等);一个个体已经满足最优值的条件,即最优值已经找到;适应度已经达到饱和,继续进化不会产生适应度更好的个体;人为干预;以及以上两种或更多种的组合。
[编辑] 算法选择初始生命种群循环评价种群中的个体适应度以比例原则(分数高的挑中机率也较高)选择产生下一个种群(轮盘法en:roulette wheel selection、竞争法en:tournament selection 及等级轮盘法Rank Based Wheel Selection)。
不仅仅挑分数最高的的原因是这么做可能收敛到local 的最佳点,而非globe 的。
改变该种群(交叉和变异)直到停止循环的条件满足[编辑] GA参数种群规模(P,population size):即种群中染色体个体的数目。
字串长度(l, string length)交叉概率(pc, probability of performing crossover):控制着交叉算子的使用频率。
交叉操作可以加快收敛,使解达到最有希望的最优解区域,因此一般取较大的交叉概率,但交叉概率太高也可能导致过早收敛。
变异概率(pm, probability of mutation):控制着变异算子的使用频率。
中止条件(termination criteria)[编辑] 特点遗传算法在解决优化问题过程中有如下特点:遗传算法在适应度函数选择不当的情况下有可能收敛于局部最优,而不能达到全局最优。
对于动态数据,用遗传算法求最优解比较困难,因为染色体种群很可能过早地收敛,而对以后变化了的数据不再产生变化。
对于这个问题,研究者提出了一些方法增加基因的多样性,从而防止过早的收敛。
其中一种是所谓触发式超级变异,就是当染色体群体的质量下降(彼此的区别减少)时增加变异概率;另一种叫随机外来染色体,是偶尔加入一些全新的随机生成的染色体个体,从而增加染色体多样性。
选择过程很重要,但交叉和变异的重要性存在争议。
一种观点认为交叉比变异更重要,因为变异仅仅是保证不丢失某些可能的解;而另一种观点则认为交叉过程的作用只不过是在种群中推广变异过程所造成的更新,对于初期的种群来说,交叉几乎等效于一个非常大的变异率,而这么大的变异很可能影响进化过程。
遗传算法很快就能找到良好的解,即使是在很复杂的解空间中。
遗传算法并不一定总是最好的优化策略,优化问题要具体情况具体分析。
所以在使用遗传算法的同时,也可以尝试其他算法,互相补充,甚至根本不用遗传算法。
遗传算法不能解决那些“大海捞针”的问题,所谓“大海捞针”问题就是没有一个确切的适应度函数表征个体好坏的问题,遗传算法对这类问题无法找到收敛的路。
对于任何一个具体的优化问题,调节遗传算法的参数可能会有利于更好的更快的收敛,这些参数包括个体数目、交叉律和变异律。
例如太大的变异律会导致丢失最优解,而过小的变异律会导致算法过早的收敛于局部最优点。
对于这些参数的选择,现在还没有实用的上下限。
适应度函数对于算法的速度和效果也很重要。
[编辑] 变量最简单的遗传算法将染色体表示为一个数位串,数值变量也可以表示成整数,或者实数(浮点数)。
算法中的杂交和突变都是在字节串上进行的,所以所谓的整数或者实数表示也一定要转化为数位形式。
例如一个变量的形式是实数,其范围是0~1,而要求的精度是0.001,那么可以用10个数位表示:0000000000表示0,1111111111表示1。
那么0110001110就代表0.389。
在遗传算法里,精英选择是一种非常成功的产生新个体的策略,它是把最好的若干个个体作为精英直接带入下一代个体中,而不经过任何改变。
通过并行计算实现遗传算法一般有两种,一种是所谓粗糙并行遗传算法,即一个计算单元包含一个种群;而另一种是所谓精细并行遗传算法,每一个计算单元处理一个染色体个体。
遗传算法有时候还引入其他变量,例如在实时优化问题中,可以在适应度函数中引入时间相关性和干扰。
[编辑] 适用的问题遗传算法擅长解决的问题是全局最优化问题,例如,解决时间表安排问题就是它的一个特长,很多安排时间表的软件都使用遗传算法,遗传算法还经常被用于解决实际工程问题。
跟传统的爬山算法相比,遗传算法能够跳出局部最优而找到全局最优点。
而且遗传算法允许使用非常复杂的适应度函数(或者叫做目标函数),并对变量的变化范围可以加以限制。
而如果是传统的爬山算法,对变量范围进行限制意味着复杂的多的解决过程,这方面的介绍可以参看受限优化问题和非受限优化问题。
[编辑] 发展历史遗传算法由密歇根大学的约翰·霍兰德和他的同事于二十世纪六十年代在对细胞自动机(英文:cellular automata)进行研究时率先提出。
在二十世纪八十年代中期之前,对于遗传算法的研究还仅仅限于理论方面,直到在伊利诺伊大学召开了第一届世界遗传算法大会。
随着计算机计算能力的发展和实际应用需求的增多,遗传算法逐渐进入实际应用阶段。
1989年,纽约时报作者约翰·马科夫写了一篇文章描述第一个商业用途的遗传算法--进化者(英文:Evolver)。
之后,越来越多种类的遗传算法出现并被用于许多领域中,财富杂志500强企业中大多数都用它进行时间表安排、数据分析、未来趋势预测、预算、以及解决很多其他组合优化问题。
[编辑] 应用领域工业工程与运作管理物流系统设计生产调度制造系统控制系统优化设计汽车设计,包括材料选择、多目标汽车组件设计、减轻重量等。
机电系统设计。
分布计算机网络的拓扑结构。
电路设计,此类用途的遗传算法叫做进化电路。
电子游戏设计,例如计算平衡解决方案。
机器智能设计和机器人学习。
模糊控制系统的训练。
移动通讯优化结构。
时间表安排,例如为一个大学安排不冲突的课程时间表。
旅行推销员问题。
神经网络的训练,也叫做神经进化。
[编辑] 相关技术遗传程序是约翰Koza与遗传算法相关的一个技术,在遗传程序中,并不是参数优化,而是计算机程序优化。
遗传程序一般采用树型结构表示计算机程序用于进化,而不是遗传算法中的列表或者数组。
一般来说,遗传程序比遗传算法慢,但同时也可以解决一些遗传算法解决不了的问题。
交互式遗传算法是利用人工评价进行操作的遗传算法,一般用于适应度函数无法得到的情况,例如,对于图像、音乐、艺术的设计和“优化”,或者对运动员的训练等。
模拟退火是解决全局优化问题的另一个可能选择。
它是通过一个解在搜索空间的随机变动寻找最优点的方法:如果某一阶段的随机变动增加适应度,则总是被接受,而降低适应度的随机变动根据一定的概率被有选择的接受。
这个概率由当时的退火温度和适应度恶化的程度决定,而退火温度按一定速度降低。
从模拟退火算法看,最优化问题的解是通过寻找最小能量点找到的,而不是寻找最佳适应点找到的。
模拟退火也可以用于标准遗传算法里,只要把突变率随时间逐渐降低就可以了。
[编辑本段][编辑本段]遗传算法的一般算法遗传算法是基于生物学的,理解或编程都不太难。
下面是遗传算法的一般算法:创建一个随机的初始状态初始种群是从解中随机选择出来的,将这些解比喻为染色体或基因,该种群被称为第一代,这和符号人工智能系统的情况不一样,在那里问题的初始状态已经给定了。
评估适应度对每一个解(染色体)指定一个适应度的值,根据问题求解的实际接近程度来指定(以便逼近求解问题的答案)。
不要把这些“解”与问题的“答案”混为一谈,可以把它理解成为要得到答案,系统可能需要利用的那些特性。
繁殖(包括子代突变)带有较高适应度值的那些染色体更可能产生后代(后代产生后也将发生突变)。
后代是父母的产物,他们由来自父母的基因结合而成,这个过程被称为“杂交”。