当前位置:首页 > 第五章-遗传算法工具箱函数【精品毕业设计】(完整版)
第五章 遗传算法工具箱函数
本章介绍英国设菲尔德大学开发的遗传算法工具箱函数。
由于MATLAB高级语言的通用性,对问题用M文件编码,与此配对的是MATLAB先进的数据分析、可视化工具、特殊目的的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。MATLAB遗传算法工具箱为遗传算法从业者和第一次实验遗传算法的人提供了广泛多样的有用函数。
遗传算法工具箱使用MATLAB矩阵函数为实现广泛领域的遗传算法建立一套通用工具,这个遗传算法工具是用M文件写成的,是命令行形式的函数,能完成遗传算法大部分重要功能的程序的集合。用户可通过这些命令行函数,根据实际分析的需要,编写出功能强大的MATLAB程序。
5.1 工具箱结构
本节给出GA工具箱的主要程序。表5.1为遗传算法工具箱中的各种函数分类表。
表5.1 遗传算法工具箱中函数分类表
创建种群 crtbase crtbp crtrp ranking scaling reins rws select sus 创建基向量 创建任意离散随机种群 创建实值初始种群 适应度计算 常用的基于秩的适应度计算 比率适应度计算 选择函数 一致随机和基于适应度的重插入 轮盘选择 高级选择例程 随机遍历采样 变异算子 mut mutate mutbga 离散变异 高级变异函数 实值变异 交叉算子 recdis recint reclin recmut recombin xovdp xovdprs xovmp xovsh
离散重组 中间重组 线性重组 具有变异特征的线性重组 高级重组算子 两点交叉算子 减少代理的两点交叉 通常多点交叉 洗牌交叉 56
xovshrs xovsp xovsprs migrate bs2rv rep 减少代理的洗牌交叉 单点交叉 减少代理的单点交叉 子种群的支持 在子种群间交换个体 实用函数 二进制串到实值的转换 矩阵的复制 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。
57
二进制和整数变异操作由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有如下结构:
?len??lb????ub??? code???scale???lbin???ubin???这里矩阵的行组成如下:
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 =
58
0则从表示范围中去掉边界,lbin =1或ubin = 1则在表示范围中包含边界。
例5.1 函数bs2rv应用举例。下面的二进制种群Chrom,由函数crtbp创建,表示在[-1,10]之间的一组简单变量,程序代码表示如何使用函数bs2rv将算术表示的格雷码或二进制串表示转换为实值表现型。
Chrom = crtbp(4,8) % 创建任意染色体,如为二进制串
?0?1chrom???0??10001001000010111100010011?1?? 0??1?FieldD = [8; -1; 10; 1; 0; 1; 1]; % 包括边界
Phen = bs2rv(Chrom,FieldD) % 转换二进制到实值,使用算术刻度
??0.7843???9.3961? phen???1.0706???5.2980??FieldD = [8; 1; 10; 1; 1; 0; 0];
Phen = bs2rv(Chrom,FieldD)
% 不包括边界
% 转换二进制到实值,使用对数刻度
?6.6223???5.0615? ?phen??2.7277???1.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 ([4 6], [8 5]) BaseV =
[8 8 8 8 5 5 5 5 5 5]
参见:crtbp,bs2rv
5.2.3 函数 crtbp
59
共分享92篇相关文档