您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 第五章-遗传算法工具箱函数
56第五章遗传算法工具箱函数本章介绍英国设菲尔德大学开发的遗传算法工具箱函数。由于MATLAB高级语言的通用性,对问题用M文件编码,与此配对的是MATLAB先进的数据分析、可视化工具、特殊目的的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。MATLAB遗传算法工具箱为遗传算法从业者和第一次实验遗传算法的人提供了广泛多样的有用函数。遗传算法工具箱使用MATLAB矩阵函数为实现广泛领域的遗传算法建立一套通用工具,这个遗传算法工具是用M文件写成的,是命令行形式的函数,能完成遗传算法大部分重要功能的程序的集合。用户可通过这些命令行函数,根据实际分析的需要,编写出功能强大的MATLAB程序。5.1工具箱结构本节给出GA工具箱的主要程序。表5.1为遗传算法工具箱中的各种函数分类表。表5.1遗传算法工具箱中函数分类表创建种群crtbasecrtbpcrtrp创建基向量创建任意离散随机种群创建实值初始种群适应度计算rankingscaling常用的基于秩的适应度计算比率适应度计算选择函数reinsrwsselectsus一致随机和基于适应度的重插入轮盘选择高级选择例程随机遍历采样变异算子mutmutatemutbga离散变异高级变异函数实值变异交叉算子recdisrecintreclinrecmutrecombinxovdpxovdprsxovmpxovsh离散重组中间重组线性重组具有变异特征的线性重组高级重组算子两点交叉算子减少代理的两点交叉通常多点交叉洗牌交叉57xovshrsxovspxovsprs减少代理的洗牌交叉单点交叉减少代理的单点交叉子种群的支持migrate在子种群间交换个体实用函数bs2rvrep二进制串到实值的转换矩阵的复制5.1.1种群表示和初始化种群表示和初始化函数有:crtbase,crtbp,crtrp。GA工具箱支持二进制、整数和浮点数的基因表示。二进制和整数种群可以使用工具箱中的crtbp建立二进制种群。crtbase是附加的功能,它提供向量描述整数表示。种群的实值可用crtrp进行初始化。在二进制代码和实值之间的变换可使用函数bs2rv,它支持格雷码和对数编码。5.1.2适应度计算适应度函数有:ranking,scaling。适应度函数用于转换目标函数值,给每一个个体一个非负的价值数。这个工具箱支持Goldberg的偏移法(offsetting)和比率法以及贝克的线性评估算法。另外,ranking函数支持非线性评估。5.1.3选择函数选择函数有:reins,rws,select,sus。这些函数根据个体的适应度大小在已知种群中选择一定数量的个体,对它的索引返回一个列向量。现在最合适的是轮盘赌选择(即rws函数)和随机遍历抽样(即sus函数)。高级入口函数select为选择程序,特别为多种群的使用提供了一个方便的接口界面。在这种情况下,代沟是必须的,这就是整个种群在每一代中没有被完全复制,reins能使用均匀的随机数或基于适应度的重新插入。5.1.4交叉算子交叉算子函数有:recdis,recint,reclin,recmut,recombin,xovdp,xovdprs,xovmp,xovsh,xovshrs,xovsp,xovsprs。交叉是通过给定的概率重组一对个体产生后代。单点交叉、两点交叉和洗牌交叉是由xovsp、xovdp、xovsh函数分别完成的。缩小代理交叉函数分别是:xovdprs、xovshrs和xovsprs。通用的多点交叉函数是xovmp,它提供均匀交换的支持。为支持染色体实值表示,离散的、中间的和线性重组分别由函数recdis、recint、reclin完成。函数recmut提供具有突变特征的线性重组。函数recombin是一高级入口函数,对所有交叉操作提供多子群支持入口。5.1.5变异算子变异算子函数有:mut,mutate,mutbga。58二进制和整数变异操作由mut完成。实值的变异使用育种机函数mutbga是有效的。Mutate对变异操作提供一个高级接口。5.1.6多子群支持多子群支持函数:migrate。遗传算法工具箱通过高层遗传操作函数migrate对多子群提供支持,它的一个功能是在子群中交换个体。一个单一种群通过使用工具箱中函数修改数据结构,使其分为许多子种群,这些子种群被保存在连续的数据单元块中。高层函数如select和reins可独立地操作子种群,包含在一个数据结构中的每一子种群允许独自向前衍化。基于孤岛或回迁模式,migrate允许个体在子种群中迁移。5.2遗传算法中的通用函数在这一节,将详细介绍在MATLAB中用于遗传算法的各种工具箱函数,对每个函数从功能、语法格式、使用说明以及用法举例等方面进行阐述。关于每个函数的适用信息由在线帮助工具提供。5.2.1函数bs2rv功能:二进制串到实值的转换格式:Phen=bs2rv(Chrom,FieldD)详细说明:Phen=bs2rv(Chrom,FieldD),根据译码矩阵FieldD将二进制串矩阵Chrom转换为实值向量。返回矩阵Phen包含对应的种群表现型。使用格雷编码的二进制染色体表示被推荐作为量化间隔的规则海明距离,可使遗传搜索减少欺骗,设置量化点间刻度的可选方案是选择线性或对数编码从二进制变换到实值。对数刻度用于决策变量的范围不知道,作为大范围参数的边界时,搜索可用较少的位数,以减少GA的内存需求和计算量。矩阵FieldD有如下结构:ubinlbinscalecodeublblen这里矩阵的行组成如下:len是包含在Chrom中每个子串长度,注意sum(len)等于length(Chrom)。lb和ub是行向量,分别指明每个变量使用的下界和上界。code是二进制行向量,指明子串是怎样编码的,code(i)=1为标准的二进制编码,code(i)=0则为格雷编码。scale是二进制行向量,指明每个子串是否使用对数或算术刻度,scale(i)=0则为算术,scale(i)=1则为对数。lbin和ubin是二进制行向量,指明表示范围中是否包含每个边界。选择lbin=0或ubin=590则从表示范围中去掉边界,lbin=1或ubin=1则在表示范围中包含边界。例5.1函数bs2rv应用举例。下面的二进制种群Chrom,由函数crtbp创建,表示在[-1,10]之间的一组简单变量,程序代码表示如何使用函数bs2rv将算术表示的格雷码或二进制串表示转换为实值表现型。Chrom=crtbp(4,8)%创建任意染色体,如为二进制串0000011110001001chrom0010100011011011FieldD=[8;-1;10;1;0;1;1];%包括边界Phen=bs2rv(Chrom,FieldD)%转换二进制到实值,使用算术刻度0.78439.3961phen1.07065.2980FieldD=[8;1;10;1;1;0;0];%不包括边界Phen=bs2rv(Chrom,FieldD)%转换二进制到实值,使用对数刻度6.62235.0615phen2.72771.5236算法说明:bs2rv作为GA工具箱的一个M文件执行,如果使用对数刻度,其范围必须不能包含零。5.2.2函数crtbase功能:创建基向量格式:BaseVec=crtbase(Lind,Base)详细说明:crtbase产生向量的元素对应染色体结构的基因座,使用不同的基本字符表示建立种群时这个函数可与函数crtbp联合使用。BaseVec=crtbase(Lind,Base)创建长度为Lind长的向量,它的每个元素由基本字符决定,如果Lind是向量,BaseVec的长度为Lind的总长,如果Base也是一个长为Lind长的向量,则BaseVec是一组由Lind和基本字符Base的元素决定长度的基本字符组组成。当描述染色体结构的基因位基本字符时,最后一选项是有用的。例5.2函数BaseVec应用举例。下面的程序代码为种群创建一有4个基数为8的基本字符{0,1,2,3,4,5,6,7}和6个基数为5的基本字符{0,1,2,3,4}的基本字符向量。BaseV=crtbase([46],[85])BaseV=[8888555555]参见:crtbp,bs2rv5.2.3函数crtbp60功能:创建初始种群格式:①[Chrom,Lind,BaseV]=crtbp(Nind,Lind)②[Chrom,Lind,BaseV]=crtbp(Nind,BaseV)③[Chrom,Lind,BaseV]=crtbp(Nind,Lind,Base)详细说明:遗传算法的第一步是创建由任意染色体组成的原始种群。crtbp创建一元素为随机数的矩阵Chrom。格式①创建一大小为Nind×Lind的随机二元矩阵,这里Nind指定种群中个体的数量,Lind指定个体的长度。此格式习惯于指定染色体的尺寸(维度)。格式②返回长度为Lind的染色体结构,染色体基因位的基本字符由向量BaseV决定。格式③用于产生基本字符为Base的染色体矩阵。如果Base是向量,Base的元素值指定了染色体的基因位的基本字符。在这种情况下,右边的第二个变元可省略,即为格式②。例5.3使用函数crtbp创建初始种群的应用举例。①创建一个长度为9、有6个个体的随机种群。[Chrom,Lind,BaseV]=crtbp(6,9)或[Chrom,Lind,BaseV]=crtbp(6,9,BaseV)运行后得011001000001101110000110111Chrom100000001111110110011011011Lind=9;BaseV=[222222222];②创建一长度为9有6个个体的随机种群,这里前四个基因位是基本字符{0,1,2,3,4,5,6,7},后五个基因位是基本字符{0,1,2,3}。BaseV=crtbase([45],[84]);[Chrom,Lind,BaseV]=crtbp(6,BaseV);或[Chrom,Lind,BaseV]=crtbp([6,9],[888844444]);运行后得431120203147521110130100002Chrom155720231457701303424033110Lind=9;BaseV=[888844444];算法说明:crtbp是GA工具箱中的一个M文件,它使用了MATLAB随机函数rand。参见:crtbase,crtrp5.2.4函数crtrp61功能:创建实值原始种群。遗传算法的第一步是创建由任意个体组成的原始种群。crtrp创建元素为均匀分布随机数的矩阵。格式:Chrom=crtrp(Nind,FieldDR)详细说明:Chrom=crtrp(Nind,FieldDR)创建一大小为Nind×Nvar的随机实值矩阵,这里Nind指定了种群中个体的数量,Nvar指定每个个体的变量个数。Nvar来自FieldDR,Nvar=size(FieldDR,2)。FieldDR(FieldDescriptionRealvalue)是一大小为2×Nvar的矩阵,并包含每个个体变量的边界,第一行包含下界,第二行包含上界。FieldDR被用在另一些函数中(变异)。例5.4使用函数crtrp创建一具有6个个体,每个个体有4个变量的随机种群。定义边界变量:100503020%FieldDR100503020%下界上界创建初始种群:Chrom=crtrp(6,FieldDR)40.23-17.1728.9515.3882.0613.2613.35-9.0952.4325.6415.20-2.54Chrom-47.5049.109.0910.65-90.50-13.46-25.63-0.8947
本文标题:第五章-遗传算法工具箱函数
链接地址:https://www.777doc.com/doc-1718934 .html