当前位置:文档之家› 第五章-遗传算法工具箱函数

第五章-遗传算法工具箱函数

第五章遗传算法工具箱函数本章介绍英国设菲尔德大学开发的遗传算法工具箱函数。

由于MATLAB高级语言的通用性,对问题用M文件编码,与此配对的是MA TLAB先进的数据分析、可视化工具、特殊目的的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。

MATLAB遗传算法工具箱为遗传算法从业者和第一次实验遗传算法的人提供了广泛多样的有用函数。

遗传算法工具箱使用MA TLAB矩阵函数为实现广泛领域的遗传算法建立一套通用工具,这个遗传算法工具是用M文件写成的,是命令行形式的函数,能完成遗传算法大部分重要功能的程序的集合。

用户可通过这些命令行函数,根据实际分析的需要,编写出功能强大的MATLAB程序。

5.1 工具箱结构本节给出GA工具箱的主要程序。

表5.1为遗传算法工具箱中的各种函数分类表。

表5.1 遗传算法工具箱中函数分类表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。

二进制和整数变异操作由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 有如下结构:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡ubin lbin scale code ub lb len 这里矩阵的行组成如下: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 =0则从表示范围中去掉边界,lbin =1或ubin = 1则在表示范围中包含边界。

例5.1 函数bs2rv 应用举例。

下面的二进制种群Chrom ,由函数crtbp 创建,表示在[-1,10]之间的一组简单变量,程序代码表示如何使用函数bs2rv 将算术表示的格雷码或二进制串表示转换为实值表现型。

Chrom = crtbp(4,8) % 创建任意染色体,如为二进制串0000011110001001chrom 0010100011011011⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦FieldD = [8; -1; 10; 1; 0; 1; 1]; % 包括边界Phen = bs2rv(Chrom,FieldD) % 转换二进制到实值,使用算术刻度0.78439.3961phen 1.07065.2980-⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭ FieldD = [8; 1; 10; 1; 1; 0; 0];% 不包括边界 Phen = bs2rv(Chrom,FieldD) % 转换二进制到实值,使用对数刻度6.62235.0615phen 2.72771.5236⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭算法说明:bs2rv 作为GA 工具箱的一个M 文件执行,如果使用对数刻度,其范围必须不能包含零。

5.2.2 函数 crtbase功能:创建基向量格式:BaseVec = crtbase(Lind, Base)详细说明:crtbase 产生向量的元素对应染色体结构的基因座,使用不同的基本字符表示建立种群时这个函数可与函数crtbp 联合使用。

BaseV ec = crtbase(Lind, Base)创建长度为Lind 长的向量,它的每个元素由基本字符决定,如果Lind 是向量,BaseVec 的长度为Lind 的总长,如果Base 也是一个长为Lind 长的向量,则BaseVec 是一组由Lind 和基本字符Base 的元素决定长度的基本字符组组成。

当描述染色体结构的基因位基本字符时,最后一选项是有用的。

例5.2 函数BaseV ec 应用举例。

下面的程序代码为种群创建一有4个基数为8的基本字符{0,1,2,3,4,5,6,7}和6个基数为5的基本字符{0,1,2,3,4}的基本字符向量。

BaseV= crtbase ([4 6], [8 5])BaseV =[8 8 8 8 5 5 5 5 5 5]参见:crtbp ,bs2rv5.2.3 函数 crtbp功能:创建初始种群格式:① [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)运行后得0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1Chrom 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 = 1 0 0 1 1 0 1 1 0 1 1⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭Lind = 9;BaseV = [ 2 2 2 2 2 2 2 2 2 ];② 创建一长度为9有6个个体的随机种群,这里前四个基因位是基本字符{0,1,2,3,4,5,6,7},后五个基因位是基本字符{0,1,2,3}。

BaseV = crtbase([4 5], [8 4]);[Chrom,Lind,BaseV] = crtbp(6,BaseV);或[Chrom,Lind,BaseV] = crtbp([6,9],[8 8 8 8 4 4 4 4 4]);运行后得431120203147521110130100002Chrom 155720231457701303424033110⎛⎫ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭Lind = 9;BaseV = [8 8 8 8 4 4 4 4 4];算法说明:crtbp 是GA 工具箱中的一个M 文件,它使用了MA TLAB 随机函数rand 。

参见:crtbase ,crtrp5.2.4 函数 crtrp。

相关主题