遗传算法工具箱函数集合

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档