遗传算法工具箱函数集合
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GA Tool Function of Sheffield University
一、种群初始化函数crtbp、crtrp、crtbase
1.函数crtbp:创建二进制种群
[Chrom,Lind,BaseV]=crtbp(Nind,Lind*维度);多维函数需要乘以维度[Chrom,Lind,BaseV]=crtbp(Nind,BaseV)
BaseV = crtbase([Nind,Lind],[a,b])
Nind种群中个体的数量,Lind指定个体或者染色体的长度;
2.函数crtrp:创建实值原始种群
Chrom=crtrp(Nind,FieldDR);FieldDR为2*Nvar的矩阵,第一行表示取值的下界,第二行表示取值的上界;其中Nvar向量的长度即为染色体的长度。
3.实用函数bs2rv:二进制串到实值的转换
Phen=bs2rv(Chrom,FieldD)
FieldD=[len, lb, ub, code, scale, lbin, ubin]
FieldD=[rep(len(Chrom),[1,维度]); rep([lb;ub],[1,维度]); rep([code;scale;lbin;ubin],[1,维度])]; 多维情形
len表示染色体的长度;
lb,ub分别为变量取值的上下界;
code(i)=1为标准的二进制编码,code(i)=0为格雷编码;
scale(i)=0为算术刻度,scale(i)=1为对数刻度;
lbin,ubin表示取值是否含有边界,取零去掉边界,取1含有边界;
二、适应度计算函数ranking、scaling
1.基于排序的适应度分配
FitV=ranking(ObjV, RFun, SUBPOP)
Rfun(1)线性排序标量在[1 2]间,default=2;非线性排序在[1, length(ObjV)-2],这一值是指定选择的压差;
Rfun(2)指定排序方法,0为线性排序(默认),1为非线性排序
SUBPOP指明ObjV中子种群的数量,默认为1
2.线性适应度计算scaling
线性比率不适合目标函数返回负的适应度值的情形
FitnV = scaling(ObjV,Smul)
三、选择高级函数select:
SelCh=select(SEL_F, Chrom, FitnV)
SelCh=select(SEL_F, Chrom, FitnV, GGAP)
SelCh=select(SEL_F, Chrom, FitnV, GGAP, SUBPOP)
SEL_F是一字符串,为一低级选择函数名,如rws或sus
GGAP指出了代沟,默认为1;也可大于1,允许子代数多于父代的数量
1.rws: 轮盘赌选择
NewChrIx=rws(FitnV, Nsel) 使用轮盘赌选择从一个种群中选择Nsel个个体NewChrIx 是为育种选择的个体的索引值
2.sus:随机遍历抽样
NewChrIx=sus(FitnV, Nsel)
3.重插入函数reins:(重插入子群到种群)有代沟必须使用重插入函数。Chorm=reins(Chorm, SelCh)
Chorm=reins(Chorm, SelCh, SUBPOP)
Chorm=reins(Chorm, SelCh, SUBPOP, InsOpt, ObjVch)
[Chorm, ObjVch]=reins(Chorm, SelCh, SUBPOP, InsOpt, ObjVch, ObjVSel)
InsOpt(1)指明用子代代替父代的选择方法,0为均匀选择,1为基于适应度的选择,默认为0
InsOpt(2)指明在[0 1]间每个子种群中重插入的子代个体在整个子种群中的个体的比率,默认为1
ObjVch包含Chrom中个体的目标值,对基于适应度的重插入是必需的ObjVSel包含Selch中个体的目标值,如子代数量大于重插入种群的子代数量是必需的。
四、交叉函数
重组准则:奇数行与它的下一个偶数行配对,如果矩阵OldChrom的行数是奇数,最后一个奇数行不交配并添加到NewChrom的最后一行。
1.recombin:重组个体高级函数
NewChrom=recombin(REC_F, Chrom)
NewChrom=recombin(REC_F, Chrom, RecOpt)
NewChrom=recombin(REC_F, Chrom, RecOpt, SUBPOP)
REC_F是包含低级重组函数名的字符串,例如recdis,recint,reclin,xovdp, xovdprs, xovmp, xovsh, xovshrs, xovsp, xovsprs
RecOpt是指明交叉概率的任选参数;
2.recdis:离散重组
NewChrom=recdis(OldChorm)
3.recint:中间重组;只能应用于实值种群
NewChrom=recint(OldChorm)
4.reclin:线性重组;只能应用于实值种群
NewChrom=reclin(OldChorm)
5.recmut:具有突变特征的线性重组;只能应用于实值种群
NewChrom=recmut(OldChorm, FieidDR, MutOpt) 其中MutOpt是一个二值向量,第一个参数为重组概率,第二个参数为重组压缩值,默认值为[1,1]
6.Xovsp:单点交叉
NewChrom=xovsp(OldChrom, XOVR)
7.Xovsprs:减少代理的单点交叉
NewChrom=xovsprs(OldChrom, XOVR)
8.xovdp:两点交叉
NewChrom=xovdp(OldChrom, XOVR)
XOVR为交叉概率,默认为0.7
9.Xovdprs:
减少代理的两点交叉
NewChrom=xovdprs(OldChrom, XOVR)
10.Xovsh:洗牌交叉
NewChrom=xovsh(OldChrom, XOVR)
11.Xovshrs:减少代理的洗牌交叉
NewChrom=xovshrs(OldChrom, XOVR)
12.Xovmp:多点交叉
NewChrom=xovmp(OldChrom, XOVR, Npt, Rs)
Npt指明交叉点数,0 洗牌交叉;1 单点交叉;2 两点交叉;默认为0
Rs指明使用减少代理,0 不减少代理;1 减少代理;默认为0
五、变异函数mutate、mut、mutbga
1.mutate:
NewChorm=mutate(MUT_F, OldChorm, FieldDR, MutOpt, SUBPOP)
MUT_F为包含低级变异函数的字符串,例如mut, mutbga
MutOpt同mutbga中的选项,是一个二值向量;
SUBPOP默认为1,决定OldChrom中子种群的数量
2.mut:离散变异算子
NewChrom=mut(OldChorm, Pm)
NewChrom=mut(OldChorm, Pm, BaseV)
Pm为变异概率,默认为Pm=0.7/Lind
3.mutbga:实值种群的变异
NewChrom=mutbga(OldChorm, FieidDR, MutOpt)
MutOpt(1)是变异概率,默认为1/Nvar;