《2022年遗传算法工具箱函数 .pdf》由会员分享,可在线阅读,更多相关《2022年遗传算法工具箱函数 .pdf(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、56 第五章遗传算法工具箱函数本章介绍英国设菲尔德大学开发的遗传算法工具箱函数。由于 MATLAB高级语言的通用性,对问题用M 文件编码,与此配对的是MA TLAB 先进的数据分析、可视化工具、特殊目的的应用领域工具箱和展现给使用者具有研究遗传算法可能性的一致环境。MATLAB遗传算法工具箱为遗传算法从业者和第一次实验遗传算法的人提供了广泛多样的有用函数。遗传算法工具箱使用MATLAB 矩阵函数为实现广泛领域的遗传算法建立一套通用工具,这个遗传算法工具是用M 文件写成的,是命令行形式的函数,能完成遗传算法大部分重要功能的程序的集合。用户可通过这些命令行函数,根据实际分析的需要,编写出功能强大的
2、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
3、 xovdprs xovmp xovsh 离散重组中间重组线性重组具有变异特征的线性重组高级重组算子两点交叉算子减少代理的两点交叉通常多点交叉洗牌交叉名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 31 页 -57 xovshrs xovsp xovsprs 减少代理的洗牌交叉单点交叉减少代理的单点交叉子种群的支持migrate 在子种群间交换个体实用函数bs2rv rep 二进制串到实值的转换矩阵的复制5.1.1 种群表示和初始化种群表示和初始化函数有:crtbase,crtbp,crtrp。GA 工具箱支持二进制、整数和浮点数的基因表示。二进制和整数种群可以使用工具箱中的 c
4、rtbp 建立二进制种群。crtbase是附加的功能,它提供向量描述整数表示。种群的实值可用crtrp 进行初始化。在二进制代码和实值之间的变换可使用函数bs2rv,它支持格雷码和对数编码。5.1.2 适应度计算适应度函数有:ranking,scaling。适应度函数用于转换目标函数值,给每一个个体一个非负的价值数。这个工具箱支持Goldberg 的偏移法(offsetting)和比率法以及贝克的线性评估算法。另外,ranking 函数支持非线性评估。5.1.3 选择函数选择函数有:reins,rws,select,sus。这些函数根据个体的适应度大小在已知种群中选择一定数量的个体,对它的索引
5、返回一个列向量。现在最合适的是轮盘赌选择(即 rws 函数)和随机遍历抽样(即 sus函数)。高级入口函数 select为选择程序,特别为多种群的使用提供了一个方便的接口界面。在这种情况下,代沟是必须的,这就是整个种群在每一代中没有被完全复制,reins 能使用均匀的随机数或基于适应度的重新插入。5.1.4 交叉算子交叉算子函数有:recdis,recint,reclin,recmut,recombin,xovdp,xovdprs,xovmp,xovsh,xovshrs,xovsp,xovsprs。交叉是通过给定的概率重组一对个体产生后代。单点交叉、两点交叉和洗牌交叉是由xovsp、xovdp
6、、xovsh 函数分别完成的。缩小代理交叉函数分别是:xovdprs、xovshrs 和 xovsprs。通用的多点交叉函数是xovmp,它提供均匀交换的支持。为支持染色体实值表示,离散的、中间的和线性重组分别由函数recdis、recint、reclin 完成。函数recmut 提供具有突变特征的线性重组。函数recombin 是一高级入口函数,对所有交叉操作提供多子群支持入口。5.1.5 变异算子变异算子函数有:mut,mutate,mutbga。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 31 页 -58 二进制和整数变异操作由mut 完成。实值的变异使用育种机函数mu
7、tbga 是有效的。Mutate对变异操作提供一个高级接口。5.1.6 多子群支持多子群支持函数:migrate。遗传算法工具箱通过高层遗传操作函数migrate 对多子群提供支持,它的一个功能是在子群中交换个体。一个单一种群通过使用工具箱中函数修改数据结构,使其分为许多子种群,这些子种群被保存在连续的数据单元块中。高层函数如select 和 reins 可独立地操作子种群,包含在一个数据结构中的每一子种群允许独自向前衍化。基于孤岛或回迁模式,migrate 允许个体在子种群中迁移。5.2 遗传算法中的通用函数在这一节,将详细介绍在MATLAB中用于遗传算法的各种工具箱函数,对每个函数从功能、
8、语法格式、使用说明以及用法举例等方面进行阐述。关于每个函数的适用信息由在线帮助工具提供。5.2.1 函数 bs2rv 功能:二进制串到实值的转换格式:Phen=bs2rv(Chrom,FieldD)详细说明:Phen=bs2rv(Chrom,FieldD),根据译码矩阵FieldD 将二进制串矩阵Chrom 转换为实值向量。返回矩阵Phen包含对应的种群表现型。使用格雷编码的二进制染色体表示被推荐作为量化间隔的规则海明距离,可使遗传搜索减少欺骗,设置量化点间刻度的可选方案是选择线性或对数编码从二进制变换到实值。对数刻度用于决策变量的范围不知道,作为大范围参数的边界时,搜索可用较少的位数,以减少
9、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 是二进制行向量,指明表示范围中是否包含每个边
10、界。选择 lbin=0 或 ubin=名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 31 页 -59 0 则从表示范围中去掉边界,lbin =1 或 ubin=1 则在表示范围中包含边界。例 5.1 函数 bs2rv 应用举例。下面的二进制种群Chrom,由函数crtbp 创建,表示在-1,10之间的一组简单变量,程序代码表示如何使用函数bs2rv 将算术表示的格雷码或二进制串表示转换为实值表现型。Chrom=crtbp(4,8)%创建任意染色体,如为二进制串0000011110001001chrom0010100011011011FieldD=8;-1;10;1;0;1;1;
11、%包括边界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产生向量的元素对应染色体结构的
12、基因座,使用不同的基本字符表示建立种群时这个函数可与函数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 的基本字
13、符 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 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 31 页 -60 功能:创建初始种群格式:Chrom,Lind,BaseV=crtbp(Nind,Lind)Chrom,Lind,BaseV=crtbp(Nind,BaseV)Chrom,Lind,BaseV=crtbp(Nind,Lind,Base)详细说明:遗传算法的第一步是创建由任意染色体组成的原始种群。crtbp 创建一元素为随机数的
14、矩阵Chrom。格式创建一大小为Nind Lind 的随机二元矩阵,这里 Nind 指定种群中个体的数量,Lind指定个体的长度。此格式习惯于指定染色体的尺寸(维度)。格式返回长度为Lind 的染色体结构,染色体基因位的基本字符由向量BaseV 决定。格式用于产生基本字符为Base的染色体矩阵。如果 Base是向量,Base的元素值指定了染色体的基因位的基本字符。在这种情况下,右边的第二个变元可省略,即为格式。例 5.3使用函数 crtbp 创建初始种群的应用举例。创建一个长度为9、有 6 个个体的随机种群。Chrom,Lind,BaseV=crtbp(6,9)或Chrom,Lind,Base
15、V=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 1Lind=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,Lin
16、d,BaseV=crtbp(6,9,8 8 8 8 4 4 4 4 4);运行后得431120203147521110130100002Chrom155720231457701303424033110Lind=9;BaseV=8 8 8 8 4 4 4 4 4;算法说明:crtbp 是 GA 工具箱中的一个M 文件,它使用了MA TLAB 随机函数rand。参见:crtbase,crtrp 5.2.4 函数 crtrp 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 31 页 -61 功能:创建实值原始种群。遗传算法的第一步是创建由任意个体组成的原始种群。crtrp创建元素为均匀
17、分布随机数的矩阵。格式: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
18、个变量的随机种群。定义边界变量: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.21-25.297.89-10.48参见:mutbga,recdis,recint,reclin 5.2.5 函数 migrate 功能:在子种群间迁移个体。格式:Chrom=migrate(Chrom,SUBPOP)Chr
19、om=migrate(Chrom,SUBPOP,MigOpt)Chrom=migrate(Chrom,SUBPOP,MigOpt,ObjV)Chrom,ObjV=migrate(Chrom,SUBPOP,MigOpt,ObjV)详细说明:migrate 完成在当前种群Chrom 的子种群间迁移个体,并返回迁移后的种群Chrom。Chrom 的一行对应一个个体。子种群的数量由SUBPOP 指定。在Chrom 中的子种群按照下列方案进行有序排列。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 31 页 -62 112111222212ChromNNSUBPOPSUBPOPNSUBPO
20、PINDSubPopINDSubPopINDSubPopINDSubPopINDSubPopINDSubPopINDSubPopINDSubPopINDSubPop所有子种群必须有相同数量的个体。MigOpt 是一最大具有三个参数的可选向量。MigOpt(1):是个体在子种群间的迁移概率。如果省略或为NaN,则假定 MigOpt(1)=0.2(即20%)。如果迁移概率不为0,则在每个子种群至少有一个个体迁移。MigOpt(2):是指定迁移选择方式的标量。0 为均匀迁移,1 为基于适应度的迁移。如果省略或为 NaN,则假设 MigOpt(2)=0。MigOpt(3):是指定迁移种群结构的标量。0
21、 为完全网状结构,1 为近邻结构,2 为环状结构。如果省略或为NaN,则假设MigOpt(3)=0。如果省略MigOpt 或为 NaN,则假设为缺省值。ObjV 是具有与Chrom 同样行数的任选列向量,并包含Chrom 所有个体对应的目标函数值。对于基于适应度的迁移(MigOpt(2)=1),则 ObjV 为必选项。如果 ObjV 是一输入输出参数,则目标函数值将按照迁移个体进行拷贝,并保存重新计算的整个种群的目标函数值。例 5.5 下面列举函数migrate 各种调用的情形。Chrom=(Chrom,SUBPOP)在一子种群中选择20的个体,并用均匀选择方式与从其它所有子种群中选择的个体进
22、行替换。这个过程将对所有子种群做一遍。其中MigOpt=0.2,0,0 Chrom=migrate(Chrom,SUBPOP,NaN 1 NaN,ObjV)在一子种群中选择20%的个体并用从其它所有子种群中选择最适应(较小的 ObjV)的个体替换。(网状结构)这个过程将对所有子种群重复。Chrom,ObjV=migrate(Chrom,SUBPOP,0.3 1 2,ObjV)在一子种群中选择30%的个体并用从单向环状结构的邻近子种群中选择最适应(较小的ObjV)的个体替换。这个过程将对所有子种群重复。第一个子种群从最后一个子种群接收它的新的个体(SUBPOP)。ObjV 按照迁移个体进行返回。
23、这个迁移方案如下:subpop1-subpop2-subpop3-.-subpopSUBPOP-subpop1 Chrom,ObjV=migrate(Chrom,SUBPOP,NaN NaN 1,ObjV)在一子种群中选择20%的个体并用均匀选择方式与从两个相邻子种群中选择的个体替换。这个过程将对所有子种群重复一遍。第一个子种群从第二个子种群和最后一个子种群中接收新的个体。最后一个子种群从第一个子种群和第SUBPOP-1 个子种群接收新的个体。ObjV 按照迁移个体进行返回。这个迁移方案如下:名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 31 页 -63 subpopSUBPO
24、P-subpop1subpop2subpopSUBPOP-subpop1 参见:select,recombin,mutate,reins 5.2.6 函数 mut 功能:离散变异算子。格式:NewChrom=mut(OldChrom,Pm)NewChrom=mut(OldChrom,Pm,BaseV)详细说明:mut 取当前种群的表示,并用特定概率对每个元素变异。如果染色体和种群结构中允许不同的基本字符,则mut 允许用一个附加的变量BaseV 来指定染色体中每一个元素的基本字符。假定种群为二进制编码,NewChrom=mut(OldChrom,Pm),取当前种群OldChrom,每一行对应一
25、个体并用概率Pm变异每一个元素。如果省略,则假设Pm=0.7/Lind,这里 Lind 是染色体结构的长度。这个值的选择将使染色体中的每一个元素的变异概率近似为0.5。NewChrom=mut(OldChrom,Pm,BaseV)使用第三个变量指明染色体个体元素的变异的基本字符。在这里,length(BaseV)=Lind,Lind 是染色结构的长度。mut 是一低级变异函数,通常被mutate 调用。例 5.6 下面的程序代码为使用函数mut 将当前种群变异为新种群。调用变异函数。0000011110001001OldChrom=0010100011011011变异 OldChrom 使用缺
26、省的概率,通过调用变异函数:NewChrom=mut(OldChrom)这时,OldChrom 将变成 NewChrom:NewChrom=00100111110000010000000011011011 创建一长度为8 有 6 个个体的随机种群。BaseV=8 8 8 4 4 4 4 4;Chrom,Lind,BaseV=crtbp(6,BaseV);6 1 0 3 2 2 2 20 4 0 2 1 1 3 16 0 2 0 2 1 1 3Chrom=5 4 7 3 1 1 1 31 3 7 3 3 2 3 14 1 4 0 0 0 3 3NewChrom=mut(Chrom,0.0778,
27、BaseV)因此 Chrom 将变成名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 31 页 -64 6 1 0 3 2 2 2 20 4 0 2 1 1 3 16 0 2 0 2 2 1 3NewChrom=5 4 7 3 1 1 1 31 3 7 3 0 2 3 14 1 4 0 0 0 3 3需要补充说明的是,如果二进制串使用变异概率1,则调用过程及获得的结果如下:mut(1 0 1 0 1 1 1 0,1);运行后得ans=0 1 0 1 0 0 0 1 参见:mutate,mutbga 5.2.7 函数 mutate 功能:个体的变异(高级函数)。格式:NewChrom
28、=mutate(MUT_F,OldChrom,FieldDR)NewChrom=mutate(MUT_F,OldChrom,FieldDR,MutOpt)NewChrom=mutate(MUT_F,OldChrom,FieldDR,MutOpt,SUBPOP)详细说明:mutate 执行种群OldChrom 中个体的变异,并在新种群NewChrom 中返回变异后的个体,OldChrom 和 NewChrom 中每一行对应一个个体。MUT_F 是一字符串,包含低级变异函数的名字例如mutbga 或 mut。对实值变量,FieldDR 是一大小为2 Nvar 的矩阵,指定每个变量的边界;对离散值变
29、量,FieldDR 是一大小为1 Nvar 的矩阵,指定每个变量的基本字符。如果FieldDR 省略、空或为NaN,则指定变量为二进制表示。MutOpt 是一任选参数项,包含变异概率,个体变量的突变可能性。如果MutOpt 省略,一缺省突变概率被假设。对实值变异,MutOpt 可能包含第二个参数说明压缩变异的范围的标量(参见 mutbga)。SUBPOP 是一任选参数项,决定 OldChrom 中子种群的数量。如果 SUBPOP 省略或 NaN,则假设 SUBPOP=1。OldChrom 中的所有子种群必须有相同的大小。例 5.7 变异函数 mutate 的应用举例。下面的程序代码为一个二进制
30、种群和一个十进制种群的变异。对于二进制种群,选取MUT_F=mut 0 0 1 1 1 0 1 00 1 0 0 1 0 1 1OldChrom=1 0 0 1 1 0 0 00 0 0 0 0 0 1 0NewChrom=mutate(mut,Chrom);运行后得0 0 1 1 1 0 1 00 1 0 0 1 0 1 1NewChrom=1 0 0 1 1 0 0 10 0 0 0 0 0 1 0对于十进制种群,选取MUT_F=mutbga。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 31 页 -65 Chrom=crtbp(6,BaseV);%6 个个体的种群,Bas
31、eV 同上运行后得2 0 0 2 3 1 2 15 4 4 3 0 1 3 36 6 5 2 2 1 3 2Chrom=3 2 0 2 3 1 3 33 3 7 3 3 3 1 12 0 3 0 2 2 2 3边界定义如下:FieldDR=0 0 0 0 0 0 0 0 8 8 8 4 4 4 4 4NewChrom=mutate(mutbga,Chrom,FieldDR);%将 Chrom 变异为 NewChrom 运行后得2 0 0 2 3 1 2 15 4 4 3 0 1 3 36 6 5 2 2 1 3 2NewChrom=3 2 0 2 3 1 3 33 3 7 3 3 3 1 12
32、 0 3 0 2 2 2 3算法说明:mutate 检测输入参数的一致性和调用低级变异函数,如果mutate 被调用于多子群,则每个子群分别调用低级变异函数。参见:mutbga,mut,recombin,select 5.2.8 函数 mutbga 功能:实值种群的变异(遗传算法育种器的变异算子)。格式:NewChrom=mutbga(OldChrom,FieldDR)NewChrom=mutbga(OldChrom,FieldDR,MutOpt)详细说明:mutbga 对实值种群OldChrom,使用给定的概率,变异每一个变量,返回变异后的种群NewChrom。FieldDR 是一矩阵,包含
33、每个变量的边界。(参看 crtrp)MutOpt 是一可选向量,具有两个参数的最大值。MutOpt(1)是变异概率。如果缺省或为NaN,则 MutOpt(1)=1/Nvar,这里 Nvar 是由size(FieldDR,2)定义的每个个体的变量数。这个值被选定,则表示每个个体的变异数近似为1。MutOpt(2)是0,1之间的一个量,压缩变异的范围。如果省略或为NaN,则假设 MutOpt(2)=1(不压缩)。格式利用保存在矩阵OldChrom 中的当前种群,使用概率MutOpt(1)附加的一个小随机值(变异步长大小)变异每个变量,变异步长可由MutOpt(2)限定。mutbga 是低级变异函数
34、,通常调用mutate。例 5.8 使用函数 mutbga 变异实值种群应用举例。考虑下面具有三个实值个体的种群:名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 31 页 -66 40.2381-17.176628.953015.3883OldChrom82.064213.263913.3596-9.091652.439625.641015.2014-2.5435边界定义如下:20305010020-30-50-100-FieldDR变异 OldChrom 的变异概率为1/4,不压缩变异范围。NewChrom=mutbga(OldChrom,FieldDR,1/4 1.0);m
35、utbga 产生一中间任务表MutMx,决定变异的变量,并为加入的delta 所表识(参看算法)。例如:0001MutMx00100011第二个中间表delta 标识正常的变异步长大小。例如:0.25050.25050.25050.25050.00010.00010.00010.00010.25000.25000.25000.2500delta在变异后,NewChrom 成为7.5539-7.6858-25.641052.43969.0916-13.355913.263982.064220.000028.953017.1766-40.2381NewChromNewChrom-OldChrom
36、显示变异的步长。0004.6117NewChromOldChrom00-0.0037000-7.5156-5.0104算法说明:一个变量的变异是由以下计算得到的:mutated variable=variable+MutMx range MutOpt(2)delta 具有概率 MutOpt(1),则 MutMx=1,否则为 0(+或-具有相等概率)。range=0.5*变量的域(范围)。如果 m=20,概率为 1/m,则ia=1,否则为 0。使用 m=20,变异算子能定位最优值到精度为Range*MutOpt(2)*2-19。变异算子 mutbga能在个体变量和变异范围定义的立方体中产生最多的
37、点。这个测试经常接近变量,即小步长概率大于大步长概率。参见:mutate,recdis,recint,reclin 5.2.9 函数 ranking 功能:基于排序的适应度分配。格式:FitnV=ranking(ObjV)名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 31 页 -67 FitnV=ranking(ObjV,RFun)FitnV=ranking(ObjV,RFun,SUBPOP)详细说明:ranking按照个体的目标值ObjV 由小到大的顺序对它们进行排序,并返回一包含对应个体适应度值FitnV 的列向量。这个函数是从最小化方向对个体进行排序的。RFun是一任选
38、向量,有1、2或length(ObjV)个参数。如果 RFun是一在 1,2内的标量,则是线性排序,这个标量指定选择的压差。如果 RFun是一具有两个参数的向量,则RFun(1):对线性排序,标量指定的选择压差RFun(1)必须在 1,2之间;对非线性排序,RFun(1)必须在 1,length(ObjV)-2 之间。如果为 NaN,则 RFun(1)假设为 2。RFun(2):指定排序方法。0为线性排序,1为非线性排序。如果 RFun为长为 length(ObjV)的向量,则它包含对每一行的适应度值计算。如果省略 RFun或为 NaN,则采用线性排序,选择压差假设为2。SUBPOP是一任选参
39、数,指明在ObjV 中子种群的数量。如果省略SUBPOP或为 NaN,则假设SUBPOP=1。在 ObjV 中的所有子种群大小必须相同。如果 ranking被调用于多子种群,则ranking独立地对每个子种群执行。例5.9 函数 ranking应用举例。下面为取不同参数时使用函数ranking对10个个体的种群进行排序。考虑具有 10个个体的种群,其当前目标值如下:TObjV=12345109876(1)使用线性排序和选择压差为2估算适应度。FitnV=ranking(ObjV)2.0000 1.7778 1.5556 1.3333 1.1111FitnV 0 0.2222 0.4444 0.
40、6667 0.8889(2)使用非线性排序和选择压差为2估算适应度。FitnV=ranking(ObjV,2 1)2.0000 1.6633 1.3833 1.1504 0.9568FitnV=0.3807 0.4577 0.5504 0.6618 0.7957名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 31 页 -68(3)使用 Rfun 中的值估算适应度。50403025181410753RFunFitnV=ranking(ObjV,RFun)50 40 30 25 18FitnV=3 5 7 10 14(4)使用非线性排序,选择压差为2,在 ObjV 中有两个子种群估
41、算适应度。FitnV=ranking(ObjV,2 1,2)2.0000 1.2889 0.8307 0.5354 0.3450FitnV=0.3450 0.5354 0.8307 1.2889 2.0000或2.001.280.830.530.34FitnV=0.340.530.831.282.00算法说明:这个算法对线性和非线性的排序首先对目标函数值进行降序排序。最小适应度个体被放置在排序的目标函数值列表的第一个位置,最适应个体放置在位置Nind 上。这里Nind 是种群中个体的数量。每个个体的适应度值根据它在排序种群中的位置Pos计算出来。对线性排序,其适应度值由下式计算:(1)()22
42、(1)(1)PosFitnV PosspspNind对非线性排序:NindiPosiXXNindPosFitnV11)()(这里 X是多项式方程的方根:spXspXspXspNindNind21)1(0向量 FitnV 是没有排序的,反映原始输入向量ObjV 的顺序。参见:select,rws,sus 名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 31 页 -69 5.2.10 函数 recdis 功能:离散重组格式:NewChrom=recdis(OldChrom)详细说明:recdis完成当前种群OldChrom 中一对个体的离散重组,在交配后返回新的种群NewChrom
43、。OldChrom 中每一行对应一个个体。交配的一对是有序的,奇数行与它下一个偶数行配对。如果矩阵 OldChrom 的行数是奇数,最后一个奇数行不交配并添加到NewChrom 的末端。因此种群被组织成需要交配的连续对。通过使用函数ranking达到计算每个个体的适应度水平和使用选择函数(例如 select)在当前种群中按适应度相关的概率选择个体。recdis是一个低级重组函数,通常被函数recombin调用。例5.10 离散重组函数recdis应用举例。下面的程序代码为5个实值个体种群的离散重组。考虑如下具有5个实值个体的种群:40.23-17.1728.9515.3882.0613.261
44、3.35-9.09OldChrom=52.4325.6415.20-2.54-47.5049.109.0910.65-90.50-13.46-25.63-0.89完成离散重组:NewChrom=recdis(OldChrom)函数 recdis提供一中间掩码表决定哪些父个体为子代贡献哪些变量。例如:12122211Mask=21211122重组后 NewChrom 成为如下:40.2313.2628.95-9.09%(1),1&282.0613.2628.9515.38%(2),1&2NewChrom=-47.5025.649.09-2.54%(3),3&452.4325.649.0910.6
45、5%(4),3&4maskrowmaskrowmaskrowmaskrow由于在父种群 OldChrom 的个体数量是奇数,最后一个个体不参加重组而附加到NewChrom并且后代返回到用户空间,因此40.2313.2628.95-9.0982.0613.2628.9515.38NewChrom=-47.5025.649.09-2.5452.4325.649.0910.65-90.50-13.46-25.63-0.89算法说明:离散重组是在个体间交换变量值,对每个变量,贡献给子代变量值的父亲是用随机的相同的概率挑选的。离散重组产生父母定义的个体的所有可能。参见:recombin,recint,r
46、eclin,ranking,sus,rws 5.2.11 函数 recint 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 31 页 -70 功能:中间重组格式:NewChrom=recint(OldChrom)详细说明:recint 完成当前种群OldChrom 成对个体的中间重组,返回交配后的新种群NewChrom。OldChrom 中每一行对应一个个体。recint是一个只能应用于实值(非二进制、非整数)变量种群的函数。交配的对是有序的,奇行与它下一个偶行配对。如果OldChrom 的行数是奇数,最后一个奇数行不参与交配,直接加到NewChrom 的末尾。因此种群根据交
47、配要求组织成连续的对。通过使用 ranking计算每个个体的适应度水平和使用一个选择函数(例如 select)和与适应度相关的概率在 recint是一低级重组函数,通常被recombin调用。例5.11 中间重组函数 recint应用举例。下面的程序代码为具有3个实值个体种群的中间重组。考虑下面具有3个实值个体的种群。40.23-17.1728.9515.38%1OldChrom=82.0613.2613.35-9.09%252.4325.6415.20-2.54%3父代父代父代执行中间重组:NewChrom=recint(OldChrom);通过向最先的父个体增加不同微量产生新值,中间比率因
48、子表Alpha被产生,例如:-0.130.500.320.16%1Alpha1.120.540.441.16%2子代子代因此,重组后的NewChrom 成为:34.40-1.9223.8611.33%(1,;),12NewChrom=87.11-0.5921.98-13.04%(2,;),12AlphaAlpha父 和父 和由于父种群 OldChrom 的个体数是奇数,最后一个个体不参加重组直接加入NewChrom,因此返回用户空间的后代如下:34.40-1.9223.8611.33NewChrom=87.11-0.5921.98-13.0452.4325.6415.20-2.54算法说明:中
49、间重组重组双亲值使用如下公式:offspring=parent1+Alpha(parent2-parent1)这里 Alpha是在区间-0.25,1.25内随机一致性选择产生的标量因子。Recint对重组的每一对值产生一新的 Alpha。中间重组能产生略大于双亲定义的立体空间中的任意点。中间重组与线性重组reclin 相似。然而 recint对每对值使用了一新的Alpha值一起重组,而reclin对每对双亲使用一Alpha因子。参见:recombin,recdis,reclin,ranking,sus,rws 5.2.12 函数 reclin 功能:线性重组格式:NewChrom=reclin
50、(OldChrom)详细说明:reclin 完成当前种群OldChrom 成对个体的线性重组,返回交配后的新种群名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 31 页 -71 NewChrom。OldChrom 中每一行对应一个个体。reclin 是一个只能应用于实值(非二进制、非整数)变量种群的函数。交配的对是有序的,奇行与它下一个偶行配对。如果OldChrom 的行数是奇数,最后一个奇数行不参与交配,直接加到NewChrom 的末尾。因此种群根据交配要求组织成连续的对。通过使用 ranking计算每个个体的适应度水平和使用一个选择函数(例如 select)用与适应度相关的