遗传算法综述

遗传算法综述
遗传算法综述

随着经济社会的迅猛发展, 人类科学研究与生产活动的广度与深度都大大拓展了,其中涌现出的大量具有各种非线性、不确定、不能精确解析以及建模机理复杂的新课题对信息与控制科学提出了前所未有的挑战。正是在这种背景下, 各种智能信息处理算法如雨后春笋般涌现出来。作为智能信息处理算法中的重要一员, 遗传算法近年来以其独特而卓越的性能引起了人们的广泛关注。

对于以往难以解决的函数优化问题,复杂的多目标规划问题,工农业生产中的配管、配线问题,以及机器学习,图象识别,人工神经网络的权系数调整,模糊规则的优化和网络构造等诸多问题,GA遗传算法以其出色的表现,已成为人们最常用也最有效的方法之一。虽然GA在许多优化问题中都有成功的应用,但其本身也存在一些不足,主要有:局部搜索能力弱、存在早熟成熟现象、收敛于局部最优解、随机漫游或振荡等现象,从而影响算法的收敛性能,降低了遗传算法的可信度。如何改善遗传算法的搜索能力和提高算法的收敛速度,使其更好地解决实际问题,是各国学者一直努力探索的一个主要课题。纵观成百上千的对遗传算法进行改进研究文献,其主要改进措施多集中在以下几个方面:

1.对遗传算法本身缺点的改进

1.1对遗传算法本身单一缺点的改进

种群人们主要关心的是种群中个体分布的多样性,这决定着运行遗传算法的效率,与种群相关的因素有种群个数,种群大小及初始种群三方面。

种群个数采用多个子种群并行搜索思想,有效避免了欺骗问题,提高了算法成功的概率。典型应用就是小生境技术,种群由M个子种群组成,每个子种群独立进化,种群间通过种群迁移∕移民等机制完成个体信息的交换。借鉴子种群并行的思想,发展出了思维进化计算,文献【】和量子衍生遗传算法或量子衍生进化计算,文献【】【】。

种群大小大致有固定种群和动态种群两种。

初始种群对于初始种群的生成主要是改变了以往单靠随机生成的缺点,引进了解空间格点化法或数论中均匀设计法,使产生的点集能均匀地分布于解空间。当然采用随机与均匀混合生成的初始种群,可以包含更丰富的解空间模式。文献【】,给出了用点的低序列差均匀生成初始种群的方法。(当然这些方法

编码经典的标准遗传算法( SGA )中,Holland运用模式定理分析编码机制时,建议采用二进制编码,其优点是简易稳定,但二进制编码具有不能直接反映问题的固有结构,解码复杂,精度不高,个体长度太长,占用计算机内存多和空间效率不高的缺点。它早已不能适应人们处理问题多样化的事实。

针对上述缺陷, 人们采用Gray编码和动态编码等方法成功地减少了编码的尺寸和复杂度,提高了局部搜索性能和速度。文献【】,给出了采用了性别编码,检测仿真表明其性能优于二进制和格雷码;采用染色体隐式解码算法,使得解码速度提高了6~50倍[9];采用实数或浮点数的矩阵形式或复数形式的编码方法,实现了无需解码可直

接在解的表现型上进行遗传操作,反映了问题的固有结构,便于引入与问题领域相关的启发式信息,易于与其他传统优化方法融合,增加了算法的可操作性和搜索能力;采用有序串编码方法巧妙地解决了组合优化问题;采用结构式编码方法有效地处理了由树和图表示得问题。

进入21世纪,随着各跨学科领域知识及遗传算法的广泛应用,遗传算法编码出现了跨学科集成与应用的趋势。目前备受国内学者关注的有两种,一种是DNA 和RNA 编码,另一种是量子编码,对于这两种集成算法,下文将会详细介绍。另外,最近Jaehun Lee[11]等针对贝叶斯学习网络创造性地提出了染色体矩阵编码方法。通过将染色体编码为两个三角阵从而将遗传算法与贝叶斯网络恰当结合, 实现了两种算法的集成和应用。这也预示着编码的研究不在局限于编码方式和编码符号的研究,而是发展到了研究编码的组织形式(位串或矩阵等)与实际问题或传统解决方法巧妙结合。

适应度函数 通过它由目标函数值计算个体适应值,是选择父辈个体操作的依据,影响着遗传群体的走向,好的适应度函数可以有效避免欺骗问题的发生。所谓欺骗问题在数学上的表现为:

设n 个个体的适应度函数值12n F F F ≤≤???≤,记

1i i i F F +-=? ()1,2,,1i n =???-

若()max{1,2,,2}i i n ?=?∣=???-,且1(2)(12n n n ---??≥),则111n n i n i F F F n -=≤≤∑

若()max{1,2,,2}i i n ?=?∣=???-,且1(2)(12n n --??≥),则12

11n

i i F F F n =≤≤∑

用上述两种分布情况下的适应度函数值指导选择操作将会极大损失种群多样性,所以适应度函数的设计是遗传算法设计的关键环节之

一。然纵观遗传算法相关文献,人们往往忽略了它的重要性。目前常用的适应度函数及其尺度变换,文献【】,有详细介绍。

目前设计的适应度函数,最大不足是没有充分利用目标函数趋势和种群多样性信息的自适应性。为有效避免欺骗问题,文献【】,给出了一种满足标准要求的适应度函数。文献【】,给出了一种基于模糊推理的计算多目标评价的适应度函数,成功完成了细菌染色体组的分割。

选择 用来实现对父辈个体的选择,是遗传算法“适者生存”思想的集中体现。选择有两个阶段:

一是个体选择概率的计算,最基本常用法的有两种:①按比例的适应度分配,概率大的个体易被多次选择,有损种群多样性,使得下次搜索带迅速变窄,容易造成过早收敛;②基于排序的适应度分配,引入种群均匀尺度,提供了控制选择压力的简单有效方法。最近,文献【】给出了一种用三角函数计算选择概率的新思想,该法将个体适应度值线性映射到0,2π??????

,并通过计算sin,cos,tan 或ctan 的三角函数值,完成得到个体选择概率,该法继承了三角函数的优良特性(单调,易控等);文献【】,基于特征选择原理设计了一种可以以每代种群中适应度最大个体的关键特征(表现型)为进化方向地自适应调整每代个体选择概率的新计算方法。

二是进行个体选择的方法,最基本的常用法有六种:①轮盘赌选择法,具有抽样误差的缺点,与精英保留结合可以保证全局收敛,但时间过长②随机遍历抽样法,最客观均匀进行个体选择③局部选择法,通过控制邻集大小方便地协调收敛速度与种群多样化的矛盾④截断选择法,通过设定的阈值,便于人为调控个体选择强度⑤锦标赛选择法⑥精英保留法。上述方法文献【】,已有详细的介绍。最近,文献【】,通过判断某代个体的标准差是否小于某一数值Stdev,巧妙地将轮盘选择和锦标赛选择结合起来,使选择机制具有了自适应性。

然这些单一基于适应度值的选择方法,很容易引起种群的两极分化:①种群超级个体很快占据主导地位,出现早熟现象②种群个体适应度彼此非常接近时,搜索过程趋于纯粹的随机,在最优解附近振荡,难以获得高精度全局最优解。

为了有效避免上述缺点,在小生境技术中,可以采用①1970年,Cavichio提出了预选择机制;②1975年,De Jong引入排挤因子,提出了排挤机制;③1987年,Goldberg和Richardson引入共享函数思想,提出了共享机制,【】,详细的介绍文献有。这几位前辈为创造出小生境的进化环境,在进行选择时,都不同程度地关注了种群中个体相似程度(数学上①可用个体编码串的海明距离d来定义②文献【】,给出了一种基于基因编辑距离的定义)这一因素,开创了多目标评价种群个体的新时代。

随着遗传算法在各个领域的应用,人们将这种“近朱者赤,近墨者黑”的个体归类选择思想发挥到了极致。文献【】,给出了一种混

合选择机制的遗传算法来加速不规则图像压缩时的编码速度。这种选择机制根据种群个体与图像值域区块的相似度程度,将当前种群分为两类,来选择父辈生成子代,有效减少了传统不规则图像压缩编码时计算MSE的数量,并保证了复原后图像的质量。

随着遗传算法在不同领域的应用及与各种算法的融合,人们对遗传算法的选择机制进行了大的改变:

1)开始不一适应度值为选择的唯一参考,而是引进了如:个体相似度,与环境的协调能力等基于个体与种群其他个体的关系或个体最近几代的表现程度的多种选择策略。这是一种将进化中的个体作为社会中的活动者来看的思想。文献6,采用竞争捕食,协调生存和大鱼吃小鱼三种协调进化策略来选择父辈,保持种群多样性,避免早熟。

2)开始构思多种评价指标,与适应度值一起形成每个个体总的评价值。目前有两种处理方式:①计算各评价指标值的加权平均得到总体评价值。文献【】,。②将多个评价指标构成向量,比较各个体对应向量的Pareto偏序的大小,来指导完成父辈选择。文献2,首次给出了这种处理方法。

纵观文献,人们对选择算子的研究集中在三个方面:①创造新的选择概率计算方法或选择机制②引入阈值或模糊思想,自适应地应用多种选择方法③开拓新的评价个体的指标体系及其计算方法。

种群中个体适应度值或评价值的计算方式(适应度函数)和选择方法是遗传算法导向性的精华所在,也是遗传算法最大特色之一,它们设计的好坏对遗传算法的性能至关重要。

交叉和变异 这两个操作用来生成新的种群,是遗传算法实现搜索过程,获得新优良个体的主要途径,也是遗传算法与各个领域传统算法最容易结合的地方。交叉和变异操作方法因具体问题基因编码方式不同而不同。

交叉操作是以随机的方式获得新个体的最重要途径,但根据模式定理它受初始种群所含潜在模式多少的限制。

传统的二进制编码,容易实现交叉和变异,其主要的交叉操作有:单点交叉,多点交叉和均匀交叉。文献【】,通过对参与交叉父代个体基因段进行基于海明距离相似度检测,自适应交叉位确定和父子竞争保留优秀个体(其实文献【0】的结论解释了这些方法的有效性),提高了交叉操作的有效性和保证了收敛速度。

十进制交叉操作主要有:离散交叉、中间交叉和线性交叉。文献

【】,有详细叙述。其中离散交叉和中间交叉都是分量值的变换,实数个体每位代表的粒度大,搜索精度低。故线性交叉算子成为了实数编码的遗传算法的基本交叉方法。文献【0】,证明了二进制交叉和十进制线性交叉前后,两个父代相加等于两个子代相加(即:1212d d s s c +=+=),这种交叉保和性质(对称性)是对搜索空间的划分,大小由c 决定,仿真统计结果建议单调函数寻忧采用二进制交叉,多峰函数采用十进制交叉,并设计了根据不同落点区间中子代的目标函数值选择生成的子代。为了克服线性算子的缺点:①生成子代个体可能落到解空间以外,不能有效继承父辈优良模式。人们设计了启发式交叉或凸交叉。文献【】,设计了一种改进型的凸交叉,使子

代个体1落到靠近较好父代,子代个体2落到父代个体连线的中点。②生成子代个体落点局限在由父代个体决定的直线上。文献【】,设计了一种不对称交叉,引进的控制因子γ和均匀生成的随机参数,不仅使子代的生成空间可以扩大到整个参数空间,而且对控制因子γ

的调节可以使交叉具有相当变异的局部搜索能力。

上世纪90年代后,陆续涌现出的交叉算子有:

1)属启发式类的交叉算子有:①以均值为中心的方法:单峰正态分布交叉,单纯性交叉和混合交叉等。②以父代值为中心的方法:模糊关联交叉,错位交叉和父代中心交叉等。其中基于某种概率密度分布的交叉具有很强的自适应性和易控性,文献【】,基于Laplace 概率分布设计了一种拟Laplace 交叉算子(拟Laplace 分布

1log (),21log (),2e e a b u u a b u u β?-≤??=??+>??,拟Laplace 交叉运算子11122212i i i i i i i i y x x x y x x x ββ?=+-??=+-??),与均匀变异配合使用,检测结果表明该算子具有很强的实用性。

2)多染色体之间的交叉:文献【】,应用三个十进制染色体交叉算子的遗传算法进行了两级机器人线性反馈参数的识别与优化,算法中后代是通过三个父代向量的算术运算(几何合成)的。文献【】,给出了一种基于拉丁广场生成的后代,文中将三阶拉丁广场用于指导三个父代二进制染色体生成三个后代,并用于物体外形的匹配。文献

【】,进行了两种交叉算子集成,同时生成三个染色体的两个后代

(1212132123()22i i i i i i i i

i i i x x x x y x y x x x σμ?++=+-???=+-?)。由于二进制编码的缺点和人们通常遇到的问题都是连续优化问题,所以对十进制编码交叉算子的研究是国内外学者焦点之一。当然,与人们现实生活联系最广泛最密切也最富挑战(NP Hard )的一类问题要属各种排列组合问题了。对于这类问题的最新研究,在上文的编码部分及下文新型DNA/RNA 遗传算法中已有所介绍,此处着重对排列组合中的交叉算子的研究做一详细阐述。

排列组合问题种类繁多,且不同问题具有不同特点需要根据这些特点巧妙设计相应编码及交叉变异方式。其中最经典也最基础的三类问题是巡回旅行商问题(TSP ),作业调度问题(JSP )和背包问题(k napsack problem )。对于巡回旅行商问题(TSP ),人们先后提出了①顺序表示,可以用二进制的相关交叉算子;②路径表示,二进制基本交叉不能满足约束条件。人们先后设计了部分匹配交叉(PMX ),顺序交叉(OX ),循环交叉(CX )和边重组(ER );③布尔矩阵表示,打破了遗传基因码向量式表示,这种表示情况下有交算子和并算子。文献【】,采用Pareto 偏序定义适应度的遗传算法来处理TSP 问题,文中定义了多种交叉和变异组合形成的集合?和一个利益因子n ?,根据上次种群的表现好坏来自适应地从集合?中选择交叉和变异算子,完成本代子代的生成。文献【】,提出了一种贪婪子旅行的变异方法,是遗传算法可以快速收敛到局部最优解并跳出,进而快速找到TSP 的最优解。

对于作业调度问题(JSP),可以采用离散实数矩阵编码表示,可以采用二进制基本交叉,但要对生成得染色体进行修复以满足约束条件。对于背包问题(knapsack problem),可以采用二进制编码及其交叉,也可采用二重结构编码和部分匹配交叉(PMX)。文献【】,有详细叙述。这里介绍一些其他方面排列组合问题的最新研究及其独特的交叉和变异算子。文献【】,将染色体表示成为环状进行交叉,并采用罚函数来淘汰不满足约束条件的个体,进行了电力系统机组组合优化问题。文献【】,对机场多个跑道上起降飞机的先后顺序进行了矩阵染色体编码,对两个父个体的共同基因,设计了一种进过并操作,参照共同指令基因矩阵,生成后代个体的均匀交叉算子和转移与交换的变异算子。文献【】,在处理带阈值效益和多种花费选择的非线性,非凸和非光滑的经济分配问题寻优时,对两个选定的父代同时采用了算术交叉,平均加权交叉和边界交叉生成八个子代,再竞争选择出两个最优后代,对个体变异强度采用B-样条小波复数频率的实数部分来指导,保证了群体的多样性。

纵观文献,因为交叉是遗传算法执行搜索开拓新解的最主要环节,所有的交叉算子的设计都致力于交叉后代的多样性(对解空间最大的开拓能力)和对父辈优秀基因模式的最大继承。

变异变异有两个影响因素变异率和变异方式,承担着发掘新个体,保持种群多样性,进行局部搜索的任务,是遗传算法最后的魔术。染色体变异概率的大小影响着保持种群多样性,最近文献【】,给出了一种基于基因位多样度的自识别高变异算子,定义个体第i位

基因的变异概率为120.5i i

P k d k =-+(其中01j n

i ij j d d n ===∑,n 为种群大小)。文献【】,基于i 位改进子空间的有关数学结论,提出了一种采用小规模群体变异率可导的可加速GA 收敛的变异策略。文献【】,给出了基于种群熵定义的自适应变异率。

传统的二进制编码和十进制编码的变异算子,已广为人们熟知,文献【】也有详细介绍。这里仅对非传统意义上的变异算子做以介绍。凡是对单个染色体替代式的操作都可以算作变异,主要有:①发现种群多样性变差时的大灾难式变异。文献【】,应用这种思想通过种群熵的减少来发现种群多样性变差,来大规模引进新个体;②与传统优化法结合(如梯度法,牛顿法等),文献【】,提出了简单方向法,即在最优个体附近随机生成几个个体选择最优个体。文献【】,提出了应用低序列差来生成均匀分布在最优个体附近空间的个体,再判断选出最优者。文献【】则相反,用生成的个体去替换最优个体附近空间的最差个体。③寻找独特的函数曲线(比如最大小值差距悬殊等)来指导变异算术运算式中的参数。文献【】和【】,各提出了应用B-样条小波概率实数部函数和幂函数来自适应的指导进化前后期变异幅度的大小。

关于排列组合的变异方法因与交叉没有多大区别,所以在交叉部分已做介绍,这里不再敖述。

停止准则 作为每个算法必有得停止依据,遗传算法常用的停止准则有:①运行到一定代数t ,就停止给出结果。优点是时间可以掌控,缺点是精度不好掌握②当前搜索的最优结果(或最大适应度)

p 已超过预先设定值s ,就停止给出结果。优点是精度可以掌控,缺点是搜索时间不好掌握③当某一次连续运行L 代或连续执行遗传算法M 次,后一代∕次与前一代∕次最优个体的绝对误差或相对误差满足条件(1i i p p ε--≤)或(1

i i i p p p ε--≤),就停止,优点是防止了局部收敛时的无效计算,缺点是精度可能不高;④就是前面提到的三种停止准则组合应用了。

1.2 遗传算法与其他算法相结合取长补短

遗传算法与其他算法相结合的研究呈现出两种趋势:一种是将遗传算法与高尖端理论派生算法或某研究领域独特算法想结合,衍生出并行速度更高,处理复杂问题更有效的新型集成算法。现列二种具有典型代表性的算法如下:

第一种是由Adleman 博士于1994年提出的DNA 遗传算法(DNA-GA),其最大优点是充分利用了DNA 分子具有海量存储遗传密码以及生化反应的海量并行性,极适合求解组合优化问题。DNA 遗传算法的原理文献【】已有详细描述,这里不再敖述。DNA 遗传算法的优点在于:

①DNA 编码比传统二进制编码,编码长度更短,更适合表达复杂知识,且根据需要插入和删除碱基序列操作使得DNA 染色体长度更灵活。

②DNA 遗传算法,通过引入基因级操作,极大丰富了遗传操作算子,如倒位、细菌变异和框构变异、文献[5]的基因转移及文献【】的排列与颈环交叉等。

第二种是量子类遗传算法,其一是由Narayanan和Moore等人于1996年将量子多宇宙的概念最先引入遗传算法,开创了量子计算与进化计算融合的广阔领域,但其算法机理与一种隔离小生境的遗传算法很相似,即利用多个种群的并行搜索,增大搜索范围,利用种群之间的联合交叉,实现种群之间信息的交流,达到整体提高搜索效率的目的。其二是K.H.Han等人于2000年将量子态矢量引入遗传编码,利用量子旋转门实现染色体基因的调整,并给出了一种基因调整策略,这算是真正意义上的量子遗传算法;2004年Hichem等人将量子计算中的一些概念和原理,如:量子态、量子态干涉及量子态叠加等,引入普通遗传算法,进一步扩展了量子遗传算法的操作算子。

量子遗传算法的优点在于:

①基于量子叠加态的编码,使得一个量子染色体富含了多个经典染色体的信息,使得种群多样性更好,算法的并行性更高。

②引入了量子计算中的一些概念与操作,如旋转门,相位等极大丰富了遗传操作算子。由量子旋转门实现了自动将全局搜索转换为局部搜索,在搜索的粗细程度上保持着良好的均衡与协调;基于量子位Bloch球面坐标的量子遗传算法,更是将全局最优解扩展为Bloch球面三组圆周上的无穷多个解,使全局最优解的数量得到极大扩充。这些都使量子遗传算法表现出极强的全局收敛特性

哈尔滨工业大学的李士勇和李盼池老师已出版专著【】,详细介绍了基于量子思想的各智能算法,这里不再敖述。

另一种是结合实际问题的情况,巧妙设计编码,以应用遗传算法

独特的并行处理和适应导向机理,在交叉和变异操作时,融合解决本实际问题的传统方法,以达到提高遗传算法寻忧速度和精度的目的。

其中:①遗传算法与梯度法、牛顿法、n维空间单纯形法和模拟退火等经典最优解搜索法相结合已广为人知。②遗传算法与模糊推理、神经网络、免疫算法和禁忌搜索等智能算法相结合所取得的成绩也备受人们关注。以上两点涉及的内容相关文献很多,文献【】也有详细介绍,这里不再敖述。以下就涉及遗传算法在新领域及与该领域相关算法融合的文献作以介绍。这些文献深谙遗传算法的精髓在于其并行处理,随机搜索和适应导向,所以抛弃文献【】,采用遗传算法寻找强度调控放射治疗的射线束最佳角度时,先以共轭梯度法生成初始种群,再根据优化问题的特点(主要是物理装置的限制),每次以当代最优个体为标准,渐进式的调整其他个体向最优个体靠拢,然后对生成的最优个体各基因进行大小范围不等的随机扰动,以实现局部与全局搜索,该生成后代的操作抛弃了交叉和变异操作(可以看作是广义的交叉与变异),简单易行快速地实现了寻忧目的。文献【】,在寻找无带限有噪声的大规模参数的最优采样方案时,将遗传算法与Gibbs采样相融合,采用只有一个个体的种群,应用精英保留提高了Gibbs采样搜索速度和变异操作克服了Gibbs采样容易陷入局部解的缺点。文献【】,将电磁场分析与设计中广泛应用的矩量法与遗传算法相结合,通过矩量法得到天线表面的初始电流分布(即遗传算法的初始种群),而后由遗传算法优化加载点,控制天线的电流分布,从而获得了较理想的宽频性能。

本文尝试将遗传算法并行处理,导向机制和随机而动的独特运行机理与其操作算子的关系作一概括如表1。表中的“强、中、弱”分别表示相应遗传操作对种群特性影响的程度。

从表1可以看出,除种群操作外,所有的遗传操作都有着人为地导向性,目的是获得种群多样性(算法并行性)和收敛速度与精度这对矛盾的平衡。

遗传算法所特有的貌似随机却实有导向,形散而神敛的运行机理,使其已经达到了无招胜有招的“太极”境界。

本文针对遗传算法的特点,对其进行的改进如下:

1. 根据模式定理,要求遗传算法种群包含极大丰富的初始模式和问题最优解的信息。本文采用了①均匀试验设计的思想使初始种群可以均匀的分布在解空间中,对具有对称性的问题求解效果十分显著;②在初始种群中融入前人的经验或求解结果,提高算法的寻忧质量;③随机产生一部分初始个体,以丰富初始模式。

2. 将shannon 信息熵的概念引入遗传算法,定义了种群熵()()ln ()i i S t p t p t =(其中()

()()t i i f x p t F t =,为第t 代个体i 的适应度

()i f x 相对于种群总体适应度1

()()n t j j F t f x ==∑的比例)。通过检测连续

c T 代,种群熵()S t 是否都大于某个种群熵上限阈值max θ或小于某个种群熵下限阈值min θ,以及时发现上文提到的遗传算法寻忧过程中两种

欺骗问题或病态种群的形成(即:111n n i n i F F F n -=≤≤∑或1211n

i i F F F n =≤≤∑),并通过将文献【】提出的二进制编码的位单调系数法推广到十进制编码和对种群进行大灾变等方法,使遗传种群由病态模式转向正常模式。

3. 将种群熵S 作为种群多样性的度量指标,构造了一种新的计算个体适应度的函数()1()()t i

v x S t t i f x e --=(其中()t i v x 为第t 代个体i 的实际函数

值,()S t 为第t 代种群熵),使适应度函数具有依据种群多样性的自适应性。

4. 在遗传算法交叉操作中,采用算术组合交叉并融合了传统非线性优化中的黄金分割法(0.618法)及优胜劣汰法来生成子代个体。在遗传算法变异操作中,受梯度方向思想的启发对当前最优个体best

邻域子解空间()t φγ=进行均匀划分,生成8个个体进行比较选择最佳个体保留到下一代。

5. 研究对象

本论文各章节内容的安排如下:

第一章 绪论 纵观遗传算法的发展历程,对遗传算法各操作算子的操作机理及其对遗传算法寻忧性能的影响,进行了详细阐述,并综述了国内外相关文献在新型遗传算法构思及其在新领域的应用方面所取得的进展和成就。

第二章 基于均匀设计和熵的改进型遗传算法 本章主要介绍了遗传算法、均匀试验设计和熵的基本概念及方法,在此基础上给出了本文设计地改进型遗传算法的框架和步骤,并给出和分析了算法在5个常用试验函数上进行检测的试验结果。

第三章 改进型遗传算法在kx -函数观测器中的应用

第四章 改进型遗传算法在最优控制中的应用

第五章 结论与展望

遗传算法综述

遗传算法综述 摘要:遗传算法(genetic algorithms,GA)是一类借鉴生物界自然选择和自然遗传机制的随机搜索算法,适用于处理传统搜索方法难以解决的复杂和非线性优化问题。遗传算法可广泛应用于组合优化、机器学习、自适应控制、设计和人工生命等领域,是21世纪有关智能计算中的重要技术之一。 本文通过对相关论文的查阅和整理,对遗传算法的研究现状和发展趋势进行了综述并谈论了一些自己的看法。 关键词:遗传算法研究现状发展趋势 引言:遗传算法是模拟遗传选择和自然淘汰的生物进化过程的计算模型,由美国Michigan大学的Holland教授于1969年提出,后经DeJong、Goldberg 等人归纳总结,形成一种新的全局优化搜索算法[1]。遗传算法以其简单通用、鲁棒性强、适于并行处理以及高效、实用等显著特点,在各个领域得到了广泛应用,取得了良好效果,并逐渐成为重要的智能算法之一。 1、遗传算法的基本原理 与传统搜索算法不同, 遗传算法从一组随机产生的初始解,称为群体, 开始搜索过程。群体中的每个个体是问题的一个解,称为染色体。这些染色体在后续迭代中不断进化, 称为遗传。遗传算法主要通过交叉、变异、选择运算实现。交叉或变异运算生成下一代染色体, 称为后代。染色体的好坏用适应度来衡量。根据适应度的大小从上一代和后代中选择

一定数量的个体, 作为下一代群体, 再继续进化, 这样经过若干代之后, 算法收敛于最好的染色体, 它很可能就是问题的最优解或次优解。“遗传算法中使用适应度这个概念来度量群体中的各个个体的在优化计算中有可能到达最优解的优良程度。度量个体适应度的函数称为适应度函数。适应度函数的定义一般与具体求解问题有关”[2]。 遗传算法包含两个数据转换操作,一个是从表现型到基因型的转换,将搜索空间的参数或解转换成遗传空间中的染色体或个体,这个过程称为编码(coding)。另一个是从基因型到表现型的转换,即将个体转化成搜索空间中的参数,这个过程称为译码(decode)。 图1展示了遗传算法的运行过程。 图1 遗传算法的运行过程示意图 2、遗传算法的研究现状 2.1 遗传算法研究方向[3] 在遗传算法的研究中,目前主要有三类研究方向: ⑴研究遗传算法本身的理论基础。 ⑵用遗传算法作为工具解决工程问题。主要是进行优化,关心的是能

自适应遗传算法讲解学习

自适应遗传算法

自适应遗传算法 一.主要流程: 1. 参数的初始化。设定遗传种群规模N ,阵元数M ,信源数P 等。 2. 编码。采用十进制编码方法。 3. 初始种群的产生。随机数生成。 4. 适应度函数的评价。选取 ()() R P ΘA )tr f = (1) 其中, H 1H )(A A A A P A -= (2) P A 是A 的投影矩阵,A 是阵列流型。 ∑==L i L 1 H 1XX R ) (3) R )是数据协方差矩阵的最大似然估计。 5. 选择。比例选择方法与精英选择方法结合使用,在当代种群中选择优良个体遗传到下一代。既保证了种群的多样性,也使最优个体得以保留。 1)比例选择方法(赌轮盘法):每个个体被选中的概率与它的适应度函数值大小成正比,即适应度函数越高的个体被选中的概率也就越高。 2)精英选择方法:让种群中适应度函数值最高的个体不进行配对交叉,直接复制到下一代中。但是容易陷入局部最优解,全局搜索能力差。 6. 交叉。按照概率P c 对种群中个体两两配对,进行交叉操作。本文中选取算数交叉的方式。 算数交叉:是由两个个体的线性组合来产生新的个体,假设第t 代的两个个体为A (t)、B (t),则算数交叉后产生的新个体是

()()()()t t t A B A αα-+=+11 (4) ()()()()t t t B A B αα-+=+11 (5) 其中,α选取(0,1)之间的随机数。 交叉概率:使交叉概率随着遗传代数的增长,逐渐减小,目的是进化前期注重交叉运算,全局搜索能力强。 2.02cos *4.0+?? ? ??*=πK T P c (6) 其中,T 是进化代数,K 是总进化次数。 7. 变异。按照概率P m 对种群个体进行变异。本文中选取均匀变异的方式。 均匀变异:如某基因座上的基因值为X k ,其取值范围为[Umin,Umax],对其进行变异后的值为 )U -r(U +U =X min max min k (7) 其中,r 选取[0,1]之间的随机数。 变异概率:使变异概率随着遗传代数的增长,逐渐增加,目的是进化后期注重变异运算,局部搜索能力强。 005.02sin *045.0+?? ? ??*=πK T P m (8) 其中,T 是进化代数,K 是总进化次数。 8. 终止条件判断。若已达到设定的最大遗传代数,则迭代终止,输出最优解;若不满足终止条件,则返回第4步,进行迭代寻优过程。

遗传算法参数调整实验报告(精)

遗传算法参数调整实验报告 算法设计: 编码方案:遍历序列 适应度函数:遍历路程 遗传算子设计: 选择算子:精英保留+轮盘赌 交叉算子:Pxover ,顺序交叉、双亲双子, 变异算子:Pmutation ,随机选择序列中一个染色体(城市)与其相邻染色体交换 首先,我们改编了我们的程序,将主函数嵌套在多层迭代之内,从外到内依此为: 过程中,我们的程序将记录每一次运行时种群逐代进化(收敛)的情况,并另外记录总体测试结果。 测试环境: AMD Athlon64 3000+ (Overclock to 2.4GHz)

目标:寻求最优Px 、Pm 组合 方式:popsize = 50 maxgen = 500 \ 10000 \ 15000 Px = 0.1~0.9(0.05) Pm = 0.01~0.1(0.01) count = 50 测试情况:运行近2万次,时间约30小时,产生数据文件总共5.8GB 测试结果:Px, Pm 对收敛结果的影响,用灰度表示结果适应度,黑色为适应度最低 结论:Px = 0.1 ,Pm = 0.01为最优,并刷新最优结果19912(之前以为是20310),但20000次测试中最优解只出现4次,程序需要改进。 Maxgen = 5000 Pm=0.01 Px = 0.1 Maxgen = 10000 0.1 0.9 Px = 0.1 0.9 0.1

目标:改进程序,再寻求最优参数 方式:1、改进变异函数,只保留积极变异; 2、扩大测试范围,增大参数步进 popsize = 100 \ 200 \ 400 \ 800 maxgen = 10000 Px = 0.1 \ 0.5 \ 0.9 Pm = 0.01 \ 0.04 \ 0.07 \ 0.1 count = 30 测试情况:运行1200次,时间8小时,产生数据文件600MB 测试结果: 结论:Px = 0.1,Pm = 0.01仍为最优,收敛情况大有改善,10000代基本收敛到22000附近,并多次达到最优解19912。变异函数的修改加快了整体收敛速度。 但是收敛情况对Pm并不敏感。另外,单个种群在遗传过程中收敛速度的统计,将是下一步的目标。

遗传算法的流程图

一需求分析 1.本程序演示的是用简单遗传算法随机一个种群,然后根据所给的交叉率,变异率,世代数计算最大适应度所在的代数 2.演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的命令;相应的输入数据和运算结果显示在其后。3.测试数据 输入初始变量后用y=100*(x1*x1-x2)*(x1*x2-x2)+(1-x1)*(1-x1)其中-2.048<=x1,x2<=2.048作适应度函数求最大适应度即为函数的最大值 二概要设计 1.程序流程图 2.类型定义 int popsize; //种群大小 int maxgeneration; //最大世代数 double pc; //交叉率 double pm; //变异率 struct individual

{ char chrom[chromlength+1]; double value; double fitness; //适应度 }; int generation; //世代数 int best_index; int worst_index; struct individual bestindividual; //最佳个体 struct individual worstindividual; //最差个体 struct individual currentbest; struct individual population[POPSIZE]; 3.函数声明 void generateinitialpopulation(); void generatenextpopulation(); void evaluatepopulation(); long decodechromosome(char *,int,int); void calculateobjectvalue(); void calculatefitnessvalue(); void findbestandworstindividual(); void performevolution(); void selectoperator(); void crossoveroperator(); void mutationoperator(); void input(); void outputtextreport(); 4.程序的各函数的简单算法说明如下: (1).void generateinitialpopulation ()和void input ()初始化种群和遗传算法参数。 input() 函数输入种群大小,染色体长度,最大世代数,交叉率,变异率等参数。 (2)void calculateobjectvalue();计算适应度函数值。 根据给定的变量用适应度函数计算然后返回适度值。 (3)选择函数selectoperator() 在函数selectoperator()中首先用rand ()函数产生0~1间的选择算子,当适度累计值不为零时,比较各个体所占总的适应度百分比的累计和与选择算子,直到达到选择算子的值那个个体就被选出,即适应度为fi的个体以fi/∑fk的概率继续存在; 显然,个体适应度愈高,被选中的概率愈大。但是,适应度小的个体也有可能被选中,以便增加下一代群体的多样性。 (4)染色体交叉函数crossoveroperator() 这是遗传算法中的最重要的函数之一,它是对个体两个变量所合成的染色体进行交叉,而不是变量染色体的交叉,这要搞清楚。首先用rand ()函数产生随机概率,若小于交叉概率,则进行染色体交叉,同时交叉次数加1。这时又要用rand()函数随机产生一位交叉位,把染色

遗传算法综述

3D S可以方便灵活地实现对动画帧中的节点、平面、边界、颜色和轨迹的控制,同时对于物体变形测试,轴心点设置以及段信息的获取和设置也能方便准确地进行。而keyscri p t语言的优点体现在于其精确的数值计算,它可以对大量的复杂无序的动作进行随机计算,节省了制作时间。利用keyscri p t编辑器还能方便地进行语法检查并能直接执行无语法错误的keyscri p t程序。3 内存管理方式 3D S使用了独特的Pharlap的虚拟内存管理技术(VMM 386),该技术使3D—Studi o能使用比物理内存RAM更大的空间。这种内存管理方式与W indow2 s T M的内存管理方式不同,因此一般不在W indow s T M中使用3D S,若要在W indow s T M中使用,则必须在W in2 dow s T M的system1in i中的[386Enh]段加入device= Pharlap1386,使W indow s T M可以使用Pharlap的内存管理方式。这种内存管理方式也有一些不足,如内存一旦被3D S使用将不被释放。 4 硬件环境 使用3D—Studi o410的最低配制要求是386(带协处理器)的主机,至少8兆的内存,20兆以上的硬盘空间,DO S313以上的操作系统。由于3D S中的许多图形渲染时都必须使用256色,且观看3D S自带的一些图片也必须在256色的模式下进行,所以需要SV GA或TV GA的显示器。输入系统除了键盘外还必须配有鼠标,也可选配数字化仪。由于3D S在进行图形渲染需要大容量的内存,同时还需要CPU进行大量的浮点运算,因此当CPU为Pen tium T M、内存为16兆以上,并使用高性能的显示卡时,3D S的动画制作功能才能得到完美体现。由于ln tel公司生产的CPU兼容的Cyrix、AM D等公司生产的CPU浮点运算能力较差,因此CPU首选还是ln tel公司的产品。外设还可选配数字化仪等设备,对于需要直接输出到磁带上,并使用电视进行播发的动画,则可选用专业用户级以上的逐帧录向设备。 总之,3D S是一个庞大的图形工作平台,学会使用它的各种命令,发挥软件的强大功能绘制出优秀的动画和图象,还需要有很多技巧。随着人们对3D S认识加深,以它为平台开发的动画产品必将更加丰富多彩。 参考文献 1 [美]S1D1E lli o t,P1L1M iller,G1G1Pyro s著1黄心渊等译《3D—Studi o技术精粹》1北京:清华大学出版社。 19951 2 黄心渊 左正兴编著1《3D—Studi o(310—410)技术与应用》1北京:清华大学出版社,19961 收稿日期:1996年11月18日 遗传算法综述 艾丽蓉 何华灿 (西北工业大学计算机系 西安710072) 摘 要 本文从计算智能与进化计算谈起,论述了遗传算法产生的思想及背景,遗传算法的应用与研究现状,以及遗传算法研究的基本内容与问题,最后对GA与传统搜索算法做一比较,并概述了GA在并行处理应用中的潜在优势。 关键词 计算智能 进化计算 遗传算法(GA) 0 序言 长久以来,人们一谈到人工智能就马上想到逻辑、规则、推理,而一谈到计算就联想到矩阵运算、解微分方程,似乎智能和计算是两股道上跑的车。人工智能在走过几十年的曲折道路之后,人们经过认真反思,不断探索新的研究途径,于是一个新的研究方向——计算智能应运而生。 研究思维模拟主要的道路有四条:基于心理学的符号处理方法,基于社会学层次型的智能体方法,基于生物进化的进化计算与自适应方法,以及基于生理学的人工神经网络方法。目前聚集在计算智能大旗下的主要是后两个学派的学者(加上从事模糊计算和混沌计算等方面的学者)。实际上,只要在计算机上,模拟人类思想,不管用什么方法,其本质的基础还是二进制数字计算,在当前符号处理主宰人工智能的情况下,更应强调遗传算法等以数字计算为基础的方法对推动人工智能发展有着特殊的作用。 计算技术的飞速发展使大规模的现实模拟成为可能,而针对社会和生物现象的模拟,对人类认识自身及其环境具有重大意义,进化是其中最为诱人的领域之一。人的智能是从哪里来的?归根结底是从生物进化中得来的,反映在遗传基因中,脑的结构变化也是通过基

遗传算法经典MATLAB代码资料讲解

遗传算法经典学习Matlab代码 遗传算法实例: 也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。 对于初学者,尤其是还没有编程经验的非常有用的一个文件 遗传算法实例 % 下面举例说明遗传算法% % 求下列函数的最大值% % f(x)=10*sin(5x)+7*cos(4x) x∈[0,10]% % 将x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为(10-0)/(2^10-1)≈0.01。% % 将变量域[0,10] 离散化为二值域[0,1023], x=0+10*b/1023, 其 中 b 是[0,1023] 中的一个二值数。% % % %--------------------------------------------------------------------------------------------------------------% %--------------------------------------------------------------------------------------------------------------% % 编程 %----------------------------------------------- % 2.1初始化(编码) % initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),

% 长度大小取决于变量的二进制编码的长度(在本例中取10位)。 %遗传算法子程序 %Name: initpop.m %初始化 function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元 为{0,1} 行数为popsize,列数为chromlength的矩阵, % roud对矩阵的每个单元进行圆整。这样产生的初始种群。 % 2.2 计算目标函数值 % 2.2.1 将二进制数转化为十进制数(1) %遗传算法子程序 %Name: decodebinary.m %产生[2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制 function pop2=decodebinary(pop) [px,py]=size(pop); %求pop行和列数 for i=1:py pop1(:,i)=2.^(py-i).*pop(:,i); end pop2=sum(pop1,2); %求pop1的每行之和 % 2.2.2 将二进制编码转化为十进制数(2) % decodechrom.m函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置

遗传算法的参数整定报告

基于遗传算法的PID控制器参数整定报告 一、遗传算法。 遗传算法(GAs)是基于自然界生物进化机制的搜索寻优技术。用遗传算法来整定PID参数,可以提高优化性能,对控制系统有良好的控制精度、动态性能和鲁棒性。 一般的,Gas包括三个基本要素:复制、交叉和突变。 二、PID Optimal-Tuning PID控制:对偏差信号e(t)进行比例、积分和微分运算变换后形成的一种控制规律。 (1) 可调参数:比例度δ(P)、积分时间Ti(I)、微分时间Td(D)。 通常,PID控制准则可以写成下面传递函数的形式: ) 1( ) (s T T s K s G d i p + + =(2) Kp、Ti和Td分别是比例放大率、积分时间常量和微分时间常量。 1)比例控制(P):是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误 差(Steady state error),比例度减小,稳态误差减小; 2)积分(I)控制:在积分控制中,控制器的输出与输入误差信号的积分成正比关系。 3)微分(D)控制:在微分控制中,控制器的输出与输入误差信号()()()()? ? ? ? ? ? + + =?t e dt d T d e T t e K t u d t i p0 1 τ τ

的微分(即误差的变化率)成正比关系。 文中,性能指标是误差平方的时间加权积分,表示为: ),,1,0(,0 2n k dt e t J i t k ==? (3) 其中n 是非负整数,i t 是积分周期。此外,其他标准项如超调量、上升时间和稳定时间也被一个合成性能指标选择: ))(1(s s r r c t c t c os J ++= (4) s r os t t 、、分别代表超调量、上升时间和稳定时间。s r c 、c 两个系数有用户定义或决定。预期的性能指标的最下化可以认为是小的超调量、短的上升时间和稳定时间。 三个PID 参数的编码方式如下: 10101011:S 1010100011100111 p K i K d K p K 、i K 和d K 都是八位二进制字符格式。 自适应函数的选择关系到性能指标,如: 101)(J J F F == (5) 实际上,)(J F 可以是任何一个能切实表达F 和J 关系的非线性函数。 遗传操作是模拟生物基因遗传的操作,从优化搜索的角度而言,遗传操作可使问题的解一代一代地优化,并逼近最优解,主要包括三个遗传算子:选择、交叉和变异。关于他们的具体方法这里不在赘述。 三、 计算机实现 作者编程使用的事TURBO C 。程序包括两个部分:一个是仿真PID 控制系统的闭环阶跃响应;另一个是实施对一代所有成员的遗传算法的仿真,这里遗传算法将一代作为一个整体。在第一代生物的二进制代码随机产生之后,这个过程重复直至迭代次数达到预选的次数。 步长、PID 参数X 围、性能指标、自适应函数和方法得时间延迟都是从一个文件中读取。而遗传算法的的参数,诸如世代数、交叉概率、变异概率、选择概率等通过菜单选择。 整个闭环系统仿真的完成可以用四阶龙格库塔法或直接时域计算。在程序中,复制的实现是通过轮盘赌博法的线性搜索,面积加权于上一代成员的适应值。交叉发生在每一对复制产生的成员。 交叉操作是将一个随机产生的一个在0到1之间数与交叉概率比较决定是否需要交叉。如果需要交叉,则在1到47之间随机产生一个交叉位置代码。变异,对新一代所有成员都随机产生一个0到1之间的数与变异概率比较,然后再决定是否改变代码的一位。同理,反转也是这样判定和操作的。另一需要说明的事,两个反转位置代码是在1~48之间随机选择的。同样,

遗传算法综述

遗传算法综述 太原理工大学刘晶学号:s2******* 摘要:遗传算法是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,它借鉴了达尔文的进化论和孟德尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,它能在搜索过程中自动获得和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最优的方案。遗传算法作为一种实用、高效、鲁棒性强的优化技术,有着广泛的应用前景。 关键词:遗传算法数学模型优点流程 一,概述。遗传算法(Genetic Algorithm,简称GA)起源于对生物系统所进行的计算机模拟研究。美国Michigan 大学的Holland 教授及其学生受到生物模拟技术的启发,创造了一种基于生物遗传和进化机制的适应于复杂系统优化的自适应概率优化技术———遗传算法。 二,基本遗传算法的数学模型。基本遗传算法可表示为:SGA=(C,E,P0,M,Φ,Γ,Ψ,T)式中,C为个体的编码方法;E 为个体适应度评价函数;P0 为初始种群;M为种群大小;Φ为选择算子;Γ为交叉算子;Ψ为变异算子;T为遗传运算终止条件。 三,遗传算法的优点。 3.1 对可行解的广泛性表示。遗传算法的处理对象不是参数本身,而是针对那些通过参数集进行编码得到的基因个体。次编码操作

使得遗传算法可以直接对结构对象进行操作。 (1)通过对连接矩阵的操作,遗传算法可用来对神经网络或自动机的结构或参数加以优化。 (2)通过对集合的操作,遗传算法可实现对规则集合和知识库的精炼而达到高质量的机器学习目的。 (3)通过对树结构的操作,用遗传算法可得到用于分类的最佳决策树。 (4)通过对任务序列的操作,遗传算法可用于任务规划,而通过对操作序列的处理,可自动构造的顺序控制系统。 3.2 群体搜索特性。许多传统的搜索方法都是单点搜索,这种点对点的搜索方法,对于多峰分布的搜索空间常常会陷于局部的某个单峰的极值点,相反,遗传算法采用的是同时处理群体中多个个体的方法。 3.3 不需要辅助信息。遗传算法仅用适应度函数的数值来评估基因个体,并在此基础上进行遗传操作。更重要的是,遗传算法的适应度函数不仅不受连续可微的约束,而且某定义域可以任意设定。对适应度函数的唯一要求是,编码必须与可行解空间对应,不能有死码。由于限制条件的缩小,使得遗传算法的应用范围大大扩展。 3.4 内在启发式随机搜索特性。遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导它的搜索方向。概率仅仅是作为一种工具来引导其搜索过程朝着搜索空间的更优化的解区域移动的。虽然看起来它是一种盲目搜索方法,实际上它有明确的搜索方向,具有内

遗传算法

遗传算法发展前景概况 (华北电力大学电气与电子工程学院,北京102206) 摘要:遗传算法是一种基于生物进化自然选择和群体遗传机理的,适合于复杂系统优化的自适应概率优化技术,近年来,因为遗传算法求解复杂优化问题的巨大潜力和在工业工程领域的成功应用,这种算法受到了国内外学者的广泛关注,本文介绍了遗传算法研究现状和发展的前景,概述了它的理论和技术,并对遗传算法的发展情况发表了自己的看法。 关键词:遗传算法; 遗传算子;进化计算;编码 GENERAL GENETIC ALGORITHM DEVELOPMENT PROSPECT (North China Electric Power University Electrical And Electronic Engineering Institute,Beijing102206) ABSTRACT: Genetic algorithm is a kind of natural selection and based on biological evolution of genetic mechanism, group suitable for complex system optimization adaptive probability optimization technique, in recent years, because genetic algorithm for solving complex optimization problem in the huge potential and the successful application of industrial engineering, this algorithm was wide attention of scholars at home and abroad, this paper introduces the current research status and development of genetic algorithm, summarizes the prospect of its theory and technology of genetic algorithm and the development of published opinions of his own. KEY WORD: Genetic algorithm; Genetic operator; Evolutionary computation; coding 1.引言 现在,遗传算法正在迅速发展,遗传算法与其很强的解决问题能力和适合于复杂系统的自适应优化技术渗透到研究和工业工程领域,在电力系统,系统辨识,最优控制,模式识别等领域有了很广泛的应用,取得了很好的效果。 2.遗传算法基本思想 遗传算法是建立在自然选择和群体遗传学基础上的随机,迭代和进化,具有广泛适用性的搜索方法,所有的自然种类都是适应环境而生存,这一自然适用性是遗传算法的主要思想。 遗传算法是从代表问题可能潜在解集的一个种群开始的,而一个种群则经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,其内部基因决定了个体的外部表现。因此,在一开始就要实现外部表现到内部基因的映射,即编码工作,通常采用二进制码。初始种群产生之后,按照适者生存和优胜劣汰的原则,逐代演化产生出越来越好的近似解。在每一代,根据问题域中个体的适应度大小选择个体,并借助自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集和种群,这种过程将导致种群像自然进化那样产生比前代更适应于环境的后代种群,末代种群中的最有个体经过解码,可以作为问题近似最优解。 遗传算法采纳了自然进化模型,如选择,交叉,变异等,计算开始时,种群随机初始化产生一定数目的N个个体,并计算每个个体的适应度函数,如果不满足优化准则,就开始新一代的计算。为了产生下一代,按照适应度选择个体父代进行基因重组二产生子代。所有的子代按一定的概率进行变异,子代取代父代构成新一代,然后重新计算子代的适应度。这一过程循环执行,直到满足优化准则为止。 3.遗传算法基本操作

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

GATBX遗传算法工具箱函数及实例讲解 基本原理: 遗传算法是一种典型的启发式算法,属于非数值算法范畴。它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。如此模仿生命的进化进行不断演化,直到满足期望的终止条件。 运算流程: Step 1:对遗传算法的运行参数进行赋值。参数包括种群规模、变量个数、交叉概率、变异概 率以及遗传运算的终止进化代数。 Step 2:建立区域描述器。根据轨道交通与常规公交运营协调模型的求解变量的约束条件,设置变量的取值范围。 Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应度函数计算其适应度值。 Step 4:执行比例选择算子进行选择操作。 Step 5:按交叉概率对交叉算子执行交叉操作。

Step 6:按变异概率执行离散变异操作。 Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最优个体保存策略。 Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。 运用遗传算法工具箱: 运用基于Matlab的遗传算法工具箱非常方便,遗传算法工具箱里包括了我们需要的各种函数库。目前,基于Matlab的遗传算法工具箱也很多,比较流行的有英国设菲尔德大学开发的遗传算法工具箱GATBX、GAOT以及Math Works公司推出的GADS。实际上,GADS就是大家所看到的Matlab中自带的工具箱。我在网上看到有问为什么遗传算法函数不能调用的问题,其实,主要就是因为用的工具箱不同。因为,有些人用的是GATBX带有的函数,但MATLAB自带的遗传算法工具箱是GADS,GADS当然没有GATBX里的函数,因此运行程序时会报错,当你用MATLAB来编写遗传算法代码时,要根据你所安装的工具箱来编写代码。 以GATBX为例,运用GATBX时,要将GATBX解压到Matlab下的toolbox文件夹里,同时,set path将GATBX文件夹加入到路径当中。 这块内容主要包括两方面工作:1、将模型用程序写出来(.M文件),即目标函数,若目标函数非负,即可直接将目标函数作为适应度函数。2、设置遗传算法的运行参数。包括:种群规模、变量个数、区域描述器、交叉概率、变异概率以及遗传运算的终止进化代数等等。

最新最全的遗传算法工具箱及说明

最新最全的遗传算法工具箱Gaot_v5及说明 Gaot_v5下载地址:https://www.360docs.net/doc/6311986016.html,/mirage/GAToolBox/gaot/gaotv5.zip 添加遗传算法路径: 1、 matlab的file下面的set path把它加上,把路径加进去后在 2、 file→Preferences→General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下,就OK了

遗传算法工具箱Gaot_v5包括许多实用的函数,各种算子函数,各种类型的选择方式,交叉、变异方式。这些函数按照功能可以分成以下几类:

主程序 ga.m提供了 GAOT 与外部的接口。它的函数格式如下: [x endPop bPop traceInfo]=ga(bounds,evalFN,evalOps,startPop,opts,termFN,termOps, selectFn,selectOps,xOverFNs,xOverOps,mutFNs,mutOps) 输出参数及其定义如表 1 所示。输入参数及其定义如表 2 所示。 表1 ga.m的输出参数 输出参数 定义 x 求得的最好的解,包括染色体和适应度 endPop 最后一代染色体(可选择的) bPop 最好染色体的轨迹(可选择的) traceInfo 每一代染色体中最好的个体和平均适应度(可选择的) 表2 ga.m的输入参数 表3 GAOT核心函数及其它函数

核心函数: (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数 【输出参数】 pop--生成的初始种群 【输入参数】 num--种群中的个体数目 bounds--代表变量的上下界的矩阵 eevalFN--适应度函数 eevalOps--传递给适应度函数的参数 options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B],如 precision--变量进行二进制编码时指定的精度 F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度) (2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,... termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遗传算法函数 【输出参数】 x--求得的最优解 endPop--最终得到的种群 bPop--最优种群的一个搜索轨迹 【输入参数】

遗传算法综述

遗传算法综述 遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。进化算法最初是借鉴了进化生物学中的一些现象而发展起来的,这些现象包括遗传、突变、自然选择以及杂交等。 在阅读了一些相关资料后,我整理出这篇综述,将通过五个部分来介绍遗传算法以及其在计算机科学领域的相关应用、 一、起源和发展分支 尝试性地将生物进化过程在计算机中模拟并用于优化问题求解开始于20世纪50年代末,其目的是将生物进化的思想引入许多工程问题中而成为一种优化工具,这些开拓性的研究工作形成了遗传算法的雏形。但当时的研究进展缓慢,收效甚微。原因是由于缺少一种通用的编码方式,人们只有通过变异才能改变基因结构,而无法使用交叉,因而增加了迭代次数。同时算法本身需要较大的计算量,当时的计算机速度便无法满足要求,因而限制了这一仿生过程技术的迅速发展。20世纪60年代中期,Holland在Fraser和Bremermann等人研究成果的基础上提出了位串编码技术,这种编码技术同时适用于变异操作和交叉操作。 遗传算法的真正产生源于20世纪60年代末到70年代初,美国Michigan大学的Holland教授在设计人工适应系统中开创性地使用了一种基于自然演化原理的搜索机制,并于1975年出版了著名的专著“Adaptation in Natural and Artificial Systems”,这些有关遗传算法的基础理论为遗传算法的发展和完善奠定了的基础。同时,Holland教授的学生De Jong首次将遗传算法应用于函数优化中,设计了遗传算法执行策略和性能评价指标,他挑选的5个专门用于遗传算法数值实验的函数至今仍被频繁使用,而他提出的在线(on-line)和离线(off-line)指

遗传算法概述

第1期作者简介:李红梅(1978-),女,湖南湘潭人,硕士,广东白云学院讲师,研究方向为演化计算。 1遗传算法的发展史 遗传算法(Genetic Algorithms )研究的历史比较短,20世纪 60年代末期到70年代初期,主要由美国家Michigan 大学的John Holland 与其同事、学生们研究形成了一个较完整的理论 和方法,遗传算法作为具有系统优化、适应和学习的高性能计算和建模方法的研究渐趋成熟。我国对于GA 的研究起步较晚,不过从20世纪90年代以来一直处于不断上升中。 2遗传算法的基本思想 遗传算法是从代表问题可能潜在解集的一个种群(popu- lation )开始的,而一个种群则由经过基因(gene )编码(coding ) 的一定数目的个体(individual )组成。每个个体实际上是染色体(chromosome )带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现是某种基因组合,它决定了个体的形状的外部表现。初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation )演化产生出越来越好的近似解。在每一代中,根据问题域中个体的适应度(fitness )、大小挑选(selection )个体,借助于自然遗传学的遗传算子(genetic operators )进行组合交叉(crossover )和变异(mutation ),产生出代 表新的解集的种群。这个过程将导致后生代种群比前代更加适应环境,末代种群中的最优个体经过解码(decoding ),可以作为问题近似最优解。 3遗传算法的一般流程 (1)随机产生一定数目的初始种群,每个个体表示为染色 体的基因编码; (2)计算每个个体的适应度,并判断是否符合优化准则。若符合,输出最佳个体及其代表的最优解并结束计算,否则转向第3步; (3)依据适应度选择再生个体,适应度高的个体被选中的概率高,适应度低的个体可能被淘汰; (4)执行交叉和变异操作,生成新的个体;(5)得到新一代的种群,返回到第2步。 4遗传算法的特点 传统的优化方法主要有三种:枚举法、启发式算法和搜索 算法: (1)枚举法 可行解集合内的所有可行解,以求出精确最 优解。对于连续函数,该方法要求先对其进行离散化处理,这样就可能因离散处理而永远达不到最优解。此外,当枚举空间比较大时,该方法的求解效率比较低,有时甚至在目前先进计算机工具上无法求解。 (2)启发式算法 寻求一种能产生可行解的启发式规则, 以找到一个最优解或近似最优解。该方法的求解效率比较高,但对每一个需求解的问题必须找出其特有的启发式规则。这个启发式规则一般无通用性,不适合于其它问题。 (3)搜索算法 寻求一种搜索算法,该算法在可行解集合 的一个子集内进行搜索操作,以找到问题的最优解或者近似最优解。该方法虽然保证不了一定能够得到问题的最优解,但若适当地利用一些启发知识,就可在近似解的质量和效率上达到一种较好的平衡。 遗传算法不同于传统的搜索和优化方法。主要区别在于: ①遗传算法直接处理问题参数的适当编码而不是处理参数集 本身。②遗传算法按并行方式搜索一个种群数目的点,而不是 遗传算法概述 李红梅 (广东白云学院计算机系,广东广州510450) 摘要:遗传算法是一种全局优化的随机搜索算法。它是解决复杂优化问题的有力工具。在工程设计、演化硬件电路 设计以及人工智能等方面应用前景广阔。系统地介绍了遗传算法的发展史、基本思想、特点、主要应用领域等相关方 面。 关键词:遗传算法;搜索;进化;最优解;种群中图分类号:TP312 文献标识码:A 文章编号:1672-7800(2009)01-0067-02 第8卷第1期2009年1月 Vol.8No.1Jan.2009 软件导刊 Software Guide

遗传算法概述

第一章 遗传算法概述 2.1 遗传算法的原理 遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种概率搜索算法。遗传算法是通过模拟生物在自然界中的进化过程而形成的一种优化算法。它的基本过程是:先随机生成规模为m 的初始群体,对连续优化问题即为n R 中的m 个点},,,{,},,,,{21112111m n m m m n x x x x x x x x ==的集合, },,,{21k sn k s k s x x x 称为个体或者染色体,通过对该群体使用遗传操作(包括选择、 交叉、变异遗传算子),得到m 个新的个体,这称作是群体的一代进化,相当于通常优化算法的一次迭代。不断重复这一过程,可看作是群体的逐代演化,直到得到满足给出条件的问题解。 可以看出,遗传算法的关键是进化过程中使用的遗传操作即选择、交叉和变异等算子,这些算子决定了下一代个体的具体位置。 选择策略对算法性能的影响有举足轻重的作用。常用的是轮盘选择和精英选择。 a. 轮盘选择(roulette wheel selection ) 选择的基本依据是个体的适应值,对于最小化问题,个体适应值取为)()(x f K x f -=',其中K 为一足够大的正数。定义第i 个体的选择概率为 ∑=''=n i i i i x f x f p 1)() ( (3) 其意义是个体适应值在群体总适应值中所占的比例。生成一个[0,1]内的随机数r ,若i i p p p r p p p +++≤<+++- 21110,假设00=p ,则选择个体i 。 b. 精英选择(elitist selection ) 当下一代群体的最佳个体适应值小于当前群体最佳个体的适应值,则将当前群体最佳个体或者适应值大于下一代最佳个体适应值的多个个体直接复制到下一代,随机替代或替代最差的下一代群体中的相应数量的个体。 交叉与变异算子的选取与编码方式有关,最初Holland[5] 提出的遗传算法是采用二进制编码来表现个体,后来发现对连续优化问题采用浮点编码可以达到更好的效果,因此越来越多地使用浮点编码,下述的交叉、变异算子针对浮点编码。

matlab遗传算法工具箱函数及实例讲解

matlab遗传算法工具箱函数及实例讲解 最近研究了一下遗传算法,因为要用遗传算法来求解多元非线性模型。还好用遗传算法的工箱予以实现了,期间也遇到了许多问题。借此与大家分享一下。 首先,我们要熟悉遗传算法的基本原理与运算流程。 基本原理:遗传算法是一种典型的启发式算法,属于非数值算法范畴。它是模拟达尔文的自然选择学说和自然界的生物进化过程的一种计算模型。它是采用简单的编码技术来表示各种复杂的结构,并通过对一组编码表示进行简单的遗传操作和优胜劣汰的自然选择来指导学习和确定搜索的方向。遗传算法的操作对象是一群二进制串(称为染色体、个体),即种群,每一个染色体都对应问题的一个解。从初始种群出发,采用基于适应度函数的选择策略在当前种群中选择个体,使用杂交和变异来产生下一代种群。如此模仿生命的进化进行不断演化,直到满足期望的终止条件。 运算流程: Step 1:对遗传算法的运行参数进行赋值。参数包括种群规模、变量个数、交叉概率、变异概率以及遗传运算的终止进化代数。 Step 2:建立区域描述器。根据轨道交通与常规公交运营协调模型的求解变量的约束条件,设置变量的取值范围。 Step 3:在Step 2的变量取值范围内,随机产生初始群体,代入适应度函数计算其适应度值。 Step 4:执行比例选择算子进行选择操作。 Step 5:按交叉概率对交叉算子执行交叉操作。 Step 6:按变异概率执行离散变异操作。 Step 7:计算Step 6得到局部最优解中每个个体的适应值,并执行最优个体保存策略。 Step 8:判断是否满足遗传运算的终止进化代数,不满足则返回Step 4,满足则输出运算结果。 其次,运用遗传算法工具箱。 运用基于Matlab的遗传算法工具箱非常方便,遗传算法工具箱里包括了我们需要的各种函数库。目前,基于Matlab的遗传算法工具箱也很多,比较流行的有英国设菲尔德大学开发的遗传算法工具箱GATBX、GAOT以及Math Works公司推出的GADS。实际上,GADS 就是大家所看到的Matlab中自带的工具箱。我在网上看到有问为什么遗传算法函数不能调用的问题,其实,主要就是因为用的工具箱不同。因为,有些人用的是GATBX带有的函数,但MATLAB自带的遗传算法工具箱是GADS,GADS当然没有GATBX里的函数,因此运行程序时会报错,当你用MATLAB来编写遗传算法代码时,要根据你所安装的工具箱来编写代码。

相关文档
最新文档