种群表示和初始化
函数 bs2rv: 二进制串到实值的转换
Phen=bs2rv(Chrom,FieldD)
FieldD=[len, lb, ub, code, scale, lbin, ubin]
code(i)=1为标准的二进制编码,code(i)=0为格雷编码
scale(i)=0为算术刻度,scale(i)=1为对数刻度
函数 crtbp: 创建初始种群
[Chrom,Lind,BaseV]=crtbp(Nind,Lind)
[Chrom,Lind,BaseV]=crtbp(Nind,BaseV)
[Chrom,Lind,BaseV]=crtbp(Nind,Lind,BaseV)
Nind指定种群中个体的数量,Lind指定个体的长度
函数 crtrp: 创建实值原始种群
Chrom=crtrp(Nind,FieldDR)
适应度计算
函数 ranking: 基于排序的适应度分配(此函数是从最小化方向对个体进行排序的)
FitV=ranking(ObjV)
FitV=ranking(ObjV, RFun)
FitV=ranking(ObjV, RFun, SUBPOP)
Rfun(1)线性排序标量在[1 2]间为,非线性排序在[1 length(ObjV)-2]
Rfun(2)指定排序方法,0为线性排序,1为非线性排序
SUBPOP指明ObjV中子种群的数量,默认为1
选择
高级函数 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,允许子代数多于父代的数量
rws: 轮盘赌选择
NewChrIx=rws(FitnV, Nsel) 使用轮盘赌选择从一个种群中选择Nsel个个体
NewChrIx 是为育种选择的个体的索引值
sus: 随机遍历抽样
NewChrIx=sus(FitnV, Nsel)
交叉
高级函数 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
recdis: 离散重组
NewChrom=recdis(OldChorm)
recint: 中间重组
NewChrom=recint(OldChorm)
reclin: 线性重组
NewChrom=reclin(OldChorm)
xovdp: 两点交叉
NewChrom=xovdp(OldChrom, XOVR)
XOVR为交叉概率, 默认为0.7
Xovdprs: 减少代理的两点交叉
NewChrom=xovdprs(OldChrom, XOVR)
Xovmp: 多点交叉
NewChrom=xovmp(OldChrom, XOVR, Npt, Rs)
Npt指明交叉点数, 0 洗牌交叉;1 单点交叉;2 两点交叉; 默认为0
Rs指明使用减少代理, 0 不减少代理;1 减少代理; 默认为0
Xovsh: 洗牌交叉
NewChrom=xovsh(OldChrom, XOVR)
Xovshrs: 减少代理的洗牌交叉
NewChrom=xovshrs(OldChrom, XOVR)
Xovsp: 单点交叉
NewChrom=xovsp(OldChrom, XOVR)
Xovsprs: 减少代理的单点交叉
NewChrom=xovsprs(OldChrom, XOVR)
变异
高级函数 mutate: 个体的变异
NewChorm=mutate(MUT_F, OldChorm, FieldDR)
NewChorm=mutate(MUT_F, OldChorm, FieldDR, MutOpt)
NewChorm=mutate(MUT_F, OldChorm, FieldDR, MutOpt, SUBPOP)
MUT_F为包含低级变异函数的字符串,例如mut, mutbga, recmut
mut: 离散变异算子
NewChrom=mut(OldChorm, Pm)
NewChrom=mut(OldChorm, Pm, BaseV)
Pm为变异概率,默认为Pm=0.7/Lind
mutbga: 实值种群的变异(遗传算法育种器的变异算子)
NewChrom=mutbga(OldChorm, FieldDR)
NewChrom=mubga(OldChorm, FieidDR, MutOpt)
MutOpt(1)是在[ 0 1]间的重组概率的标量,默认为1
MutOpt(2)是在[0 1]间的压缩重组范围的标量,默认为1(不压缩)
recmut: 具有突变特征的线性重组
NewChrom=recmut(OldChorm, FieldDR)
NewChrom=recmut(OldChorm, FieidDR, MutOpt)
重插入
函数 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包含Chorm中个体的目标值,对基于适应度的重插入是必需的
ObjVSel包含Selch中个体的目标值,如子代数量大于重插入种群的子代数量是必需的
其他函数
矩阵复试函数 rep: MatOut=rep(MatIn, REPN) REPN为复制次数