MATLAB遗传算法工具箱及其应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5
函数crtbase
BaseVec = crtbase(Lind, Base) % This function creates a vector containing the base of the loci crtbase产生向量的元 素对应染色体结构的基因座 BaseVec = crtbase([4,6],[8,5]) %创建一有4个基数为8的基 本字符{0,1,2,3,4,5,6,7}和6个基数为5的基本字符 {0,1,2,3,4}的基本字符向量
19
函数 reins
功能:重插入子代到种群。 格式:① Chrom = reins(Chrom,SelCh) ② Chrom = reins(Chrom,SelCh,SUBPOP)
③ Chrom = reins(Chrom,SelCh,SUBPOP,InsOpt,ObjVCh)
④ [Chrom,ObjVCh]= reins(Chrom,SelCh,SUBPOP,InsOpt,ObjVCh,ObjVSel) 详细说明:reins完成插入子代到当前种群,用子代代替父代 并返回结果种群。子代包含在矩阵SelCh中,父代在矩阵 Chrom中,Chrom和Selch中每一行对应一个个体。
7
函数crtbp
crtbp % 创建二进制串染色体 ① 创建一个长度为9、有6个个体的随机种群。 [Chrom,Lind,BaseV] = crtbp (6,9)
8
函数crtbp
② 创建一长度为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,[8 8 8 8 4 4 4 4 4]);
26
函数 rws
轮盘赌选择方法举例。考虑8个个体的种群,假设已计算出 适应度FitnV:
FitnV = [1.50; 1.35; 1.21; 1.07; 0.92; 0.78; 0.64; 0.5]
函数 ranking
(2) 使用非线性排序和选择压差为2估算适应度。
FitnV = ranking(ObjV,[2 1])
15
函数 ranking
(3)使用Rfun中的值估算适应度。
FitnV = ranking(ObjV,[2 1])
16
函数 ranking
(4)使用非线性排序,选择压差为2,在ObjV中有两个子种群 估算适应度。
20
函数 reins
功能:重插入子代到种群。 格式:① Chrom = reins(Chrom,SelCh) ② Chrom = reins(Chrom,SelCh,SUBPOP) ③ Chrom = reins(Chrom,SelCh,SUBPOP,InsOpt,ObjVCh) ④ [Chrom,ObjVCh]= reins(Chrom,SelCh,SUBPOP,InsOpt,ObjVCh,ObjVSel) 详细说明:reins完成插入子代到当前种群,用子代代替父代 并返回结果种群。子代包含在矩阵SelCh中,父代在矩阵 Chrom中,Chrom和Selch中每一行对应一个个体。 SUBPOP是一可选参数,指明Chrom和SelCh中子种群的个 数。如果SUBPOP省略或为NaN,则假设SUBPOP=1。在 Chrom和SelCh中每个子种群必须具有相同大小。
12
函数 ranking
(2)如果RFun是一在[1,2]内的标量,则是线性排序,这 个标量指定选择的压差。 (3)如果RFun是一具有两个参数的向量,则
RFun(1):对线性排序,标量指定的选择压差RFun(1)必须
在[1,2]之间;对非线性排序,RFun(1)必须在[1, length(ObjV)-2]之间。如果为NaN,则RFun(1)假设为2。 RFun(2):指定排序方法。0为线性排序,1为非线性排序。 (4)如果RFun为长为length(ObjV)的向量,则它包含对每 一行的适应度值计算。
13
函数 ranking
SUBPOP是一任选参数,指明在ObjV中子种群的数量。如 果省略SUBPOP或为NaN,则假设SUBPOP=1。在ObjV中 的所有子种群大小必须相同。
如果ranking被调用于多子种群,则ranking独立地对每个子
种群执行。
FitnV = ranking(ObjV)
14
4
二、遗传算法工具箱结构
1、种群表示和初始化函数:crtbase,crtbp,crtp。 crtbase crtbp crtrp 创建种群 创建基向量 创建任意离散随机种群 创建实值初始种群
GA工具箱支持二进制、整数和浮点数的基因表示。二进制 和整数种群可以使用工具箱中的crtbp建立二进制种群。 crtbase是附加的功能,它提供向量描述整数表示。种群的 实值可用crtrp进行初始化。在二进制代码和实值之间的变 换可使用函数bs2rv,它支持格雷码和对数编码。
FitnV = ranking(ObjV,[2 1],2)
17
函数 scaling
功能:线性适应度计算。 格式:FitnV = scaling(ObjV,Smul) 详细说明:scaling转换一种群的目标值ObjV为由Smul的值
决定上界的适应度值。scaling使用Goldberg描述的线性比率
100 50 30 20] % upper bound
Chrom = crtrp(6,FieldDR)
10
二、遗传算法工具箱结构
2、适应度计算:ranking,scaling。 适应度函数用于转换目标函数值,给每一个个体一个非 负的价值数。这个工具箱支持Goldberg的偏移法和比率法 以及贝克的线性评估算法。另外,ranking函数支持非线性 评估。 ranking scaling 常用的基于秩的适应度计算 比率适应度计算
法。 (1) ObjV=[1;2;3;4;5;6] FitnV = scaling(ObjV)
18
二、遗传算法工具箱结构
3、选择函数:reins,rws,select,sus。 这些函数根据个体的适应度大小在已知种群中选择一定 数量的个体,对它的索引返回一个列向量。现在最合适的 是轮盘赌选择法(即rws函数)和随机遍历抽样(即sus函 数)。高级入口函数select为选择程序,特别为多种群的使 用提供了一个方便的接口界面。在这种情况下,代沟是必 需的,即整个种群在每一代中没有被完全复制。reins能使 用均匀的随机数或基于适应度的重新插入。 reins rws select sus 一致随机和基于适应度的重插入 轮盘选择 高级选择例程 随机遍历采样
6
函数crtbp
crtbp % 创建二进制串染色体 ① [Chrom,Lind,BaseV] = crtbp(Nind,Lind) %创建一大小为 Nind× Lind的随机二元矩阵,这里Nind指定种群中个体的数 量,Lind指定个体的长度。此格式习惯于指定染色体的尺寸 (维度)。 ② [Chrom,Lind,BaseV] = crtbp(Nind,BaseV) %返回长度为 Lind 的染色体结构,染色体基因位的基本字符由向量BaseV 决定 ③ [Chrom,Lind,BaseV] = crtbp(Nind,Lind,Base) %用于产生 基本字符为Base的染色体矩阵。如果Base是向量,Base的 元素值指定了染色体的基因位的基本字符。在这种情况下, 右边的第二个变元可省略,即为格式②。
SelCh=crtrp(2,FieldDR2); % 产生2个个体的子代种群
Chrom = reins(Chrom,SelCh)
25
函数 rws
功能:轮盘赌选择。 格式:NewChrIx = rws(FitnV,Nsel)
详细说明:rws在当前种群中按照它们的适应度FitnV选择
Nsel个个体繁殖。 FitnV是一包含种群中每个个体性能尺寸的列向量,它能通 过使用函数ranking或scaling计算每个个体的适应度水平来 得到。返回值NewChrIx是为育种选择的个体的索引值,按 照它们的选择顺序排列,这些选择的个体能通过评估函数 Chrom(NewChrIx,:)恢复。 rws是一低级选择函数,通常被select调用。
第四讲 遗传算法工具箱及应用
1
内容提要 • • • • 遗传算法流程回顾 遗传算法工具箱结构 遗传算法工具箱通用函数 遗传算法工具箱应用
2
一、遗传算法流程回顾
生成初始种群
个体 染色体
计算适应度 终止 ? 选择-复制 交叉 结束
基因
遗传算法基本流程框图
变异 生成新一代种群
3
二、遗传算法工具箱结构
9
函数 crtrp
Chrom = crtrp(Nind,FieldDR); % 创建元素为均匀分布随机 十进制数染色体 Nind - A scalar containing the number of individuals in
the new population.指定了种群中个体的数量 FieldDR - A matrix of size 2 by number of variables describing the boundaries of each variable. FieldDR = [-100 -50 -30 -20; % lower bound
23
函数 reins
(1)下面的程序代码为在6个个体的父代种群中插入子代种 群。
FieldDR1=[-10,-5,-3,-1;10,5,3,1]; % 定义边界变量
Chrom=crtrp(6,FieldDR1); % 产生6个个体的父代种群
24
函数 reins
(2)FieldDR2=[-100,-50,-30,-20;100,50,30,20]; % 定义 边界变量
本节介绍的是英国谢菲尔德大学开发的遗传 算法工具箱。 由于MATLAB高级语言的通用性,对问题用 M文件编码,与此配对的是MATLAB先进的数 据分析、可视化工具、特殊目的的应用领域工 具箱和展现给使用者具有研究遗传算法可能性 的一致环境。 GA工具箱本质是个函数包,用户只要安装 了这个工具箱或者软件自带了这个工具箱,就 可以调用这些函数命令,从而编ቤተ መጻሕፍቲ ባይዱ出强大的 MATLAB遗传算法程序。
21
函数 reins
InsOpt是一最多有两个参数的任选向量。 InsOpt(1)是一标量,指明用子代代替父代的选择方法。0—
—均匀选择,子代代替父代使用均匀随机选择。1——基于
适应度的选择,子代代替最小适应的个体。如果省略 InsOpt(1)或为NaN,则假设InsOpt(1)=0。 InsOpt(2)是一在[0,1]间的标量,表示每个子种群中重插入 的子代个体与整个子种群中个体的比率。如果省略InsOpt(2) 或为NaN,则假设InsOpt(2)=1.0。 如果InsOpt省略或为NaN,则InsOpt为缺省值。
11
函数 ranking
功能:基于排序的适应度分配。 格式:① FitnV = ranking(ObjV) ② FitnV = ranking(ObjV,RFun)
③ FitnV = ranking(ObjV,RFun,SUBPOP)
ranking按照个体的目标值ObjV由小到大的顺序对它们进行 排序,并返回一包含对应个体适应度值FitnV的列向量。这 个函数是从最小化方向对个体进行排序的. RFun是一任选向量,有1、2或length(ObjV)个参数。 (1)如果省略RFun或为NaN,则采用线性排序,选择压差 假设为2。
22
函数 reins
ObjVCh是一可选的列向量,包含Chrom中个体的目标值。 对基于适应度的重插入,ObjVCh是必需的。
ObjVSel是一可选的列向量,包含Selch中个体的目标值。如
果子代的数量大于重插入种群中的子代数量,则ObjVSel是 需要的。在这种情况下,子代将按它们的适应度选择插入。 在格式④中,输出参数ObjVCh是子代个体的适应度值,包 含子代中原个体的适应度值ObjVCh 和产生的新个体的适应 度值ObjVSel。