一 谢菲尔德遗传算法工具箱的主要函数如下表所示:

二 函数介绍—创建种群
1. crtbase
1.1 功能
创建一个所有染色体中最基本的染色体**对应的向量*语法:
1.2 语法
BaseVec = crtbase(Lind,Base)
1.3 输入参数
1 Lind:染色体长度2 Base:最基础,最基本的基因。
1.4 用例
BaseBec:返回基础基因组

2. crtbp:
2.1 功能
创建任意离散随机种群。即多个染色体组成的种群。
2.2 语法
[Chrom,Lind,BaseV] =crtbp(Nind,Lind)
[Chrom,Lind,BaseV]=crtbp(Nind,Base)
[Chrom,Lind,BaseV]=crtbp(Nind,Lind,Base)
2.3 用例
1.样式1:Chrom为一个Nind*Lind的染色体种群;Lind为种群中基因长度;BaseV为基因各位上的进制,并组成的Lind长的向量,默认基因进制为2.

2. 样式2:在样式1的基础上,指定种群基因的进制:Base;Base的长度即Lind。


- 样式3:与样式2效果相同,Lind即为Base的长度。
3. crtrp
3.1 功能
创建一个指定数量的,各个位指定范围的的种群。
3.2 语法
Chrom = crtrp(Nind,FieldDR)
Nind:种群数量;FieldDR:例如:
FieldDR = [-100 -50 -30 -20; % lower bound
100 50 30 20] % upper bound
种群中基因的位数=FieldDR的位数。
3.3 用例

三 函数介绍-适应度计算
1. ranking
1.1 功能
用户排序的适应度分配。
1.2 语法
FitnV=ranking(ObjV):
FitnV=ranking(ObjV,RFun):
FitnV=ranking(ObjV,RFun,SUBPOP):
1.Objv:按照个体的目标值ObjV(列向量)有小到大进行排序。
2.RFun:(1)如果RFun是在[1,2]之间的标量,则采用线性排列,这个标量指定选择的压差。
(2)如果RFun是一个具有两个参数的向量,则RFun(2)指定排序方法:0为线性排序,1为非线性排序;RFun(1)对线性排序,标量指定的选择压差RFun(1)必须在[1,2]之间,对非线性排序,RFun必须在[1,length(ObjV)-2]区间,如果为NAN,则RFun(1)假设为2.
(3)若RFun是长度为length(ObjV)的向量,则它包含对每一行的适应度值计算。
3.SUBPOP:ObjV中子种群的数量,缺省或为NAN时,SUBPOP=1,ObjV的所有子种群大小必须相同。
4.FitnV:返回值为个体适应度值的列向量。
1.3 用例
1.使用线性排序和压差为2估算适应度。

2. 使用非线性排序,压差为2,在ObjV中有两个子种群估算适应度。

2. scaling
稍后补充。
四 函数介绍-选择函数
1. select
1.1 功能
从种群中选择个体(高级函数)
1.2 语法
SelCh=select(SKL_F,Chrom,FitnV);
SelCh=select(SKL_F,Chrom,FitnV,GGAP);
SelCh=select(SKL_F,Chrom,FitnV,GGAP,SUBPOP);
- SEL_F:一个字符串,包含一个低级选择函数名,如rws或者sus.
- FitnV:ranking函数得到的适应度。表明了每个个体被选择的预期概率。
- GGAP:可选参数,指出了代沟部分种群被复制。缺省或为NAN,GGAP=1.0.
- SUBPOP:同ranking.
1.3 用例
假设Chrom由两个子种群组成,通过轮盘赌选择函数sus对每个子种群选择150%的个体。

2.reins
2.1 功能
重插入子代到种群。插入子代到当前种群,用子代代替父代并返回结果总群。
2.2 语法
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);
1.Chrom:父代种群。
2. SelCh:子代
3. SUBPOP:可选参数:表明子代或父代种群有多少个体,缺省或为NAN时,SUBPOP=1;
4. InsOpt:最多有两个参数的任选向量。InsOpt(1)是一个标量,表明子代代替父代的方法,0为均匀选择(子代代替父代使用均匀随机选自),1为适应度选择,子代代替父代中适应度最小的个体。缺省或为NAN,则假设InsOpt(1)=0;InsOpt(2)是一个在[0,1]区间的标量,表示每个子种群中重插入的子代个体在整个子种群中个体的比率,缺省或为NAN,则假设InsOpt(2)=1.0。
5. ObjVCh是一个可选列向量,包括Chrom中个体的目标量,对基于适应度的重插入,ObjVCh是必须的。
6. ObjVSel是一个可选参数,包含SelCh中个体的目标值。如果子代的数量大于重插入种群中子代的数量,则ObjVSel是必须的,这种情况子代将按它们的适应度大小选择插入。
2.3 用例
在5个个体的父代种群中插入子代种群。

3. rws
日后如果用到,再行补充。
五 函数介绍-交叉算子函数
1. recombin
1.1 功能
重组个体(高级函数)。
recombin完成种群个体的重组,在新种群NewChrom中返回重组后的个体,Chrom和NewChrom中的一行对应一个个体。
1.2 语法
NewChrom=recombin(REC_F,Chrom);
NewChrom=recombin(REC_F,Chrom,RecOpt);
NewChrom=recombin(REC_F,Chrom,RecOpt,SUBPOP);
- REC_f:包含低级重组函数名的字符串,例如:recdis或xovsp.
- RecOpt:一个指明交叉改了的任选参数,缺省或为NAN,将设为缺省。
- SUBPOP:同上。
1.3 用例
使用recombin对5个个体的种群进行重组。

2. 其他函数
其他函数,如果后续使用到,再行补充。
六 函数介绍–变异算子
1.mut
1.1 功能
离散变异算子。
1.2 语法
NewChrom=mut(OldChrom,Pm,BaseV);
OldChrom:当前种群;Pm:变异概率,缺省时为0.7/Lind;BaseV:染色体个体元素的变异基本字符(缺省时种群为二进制编码)。
1.3 用例
使用函数mut将当前种群变异为新种群。
- 种群为二进制。

- 种群为非二进制

2. 其他函数
日后如果用到,再行补充。
七 函数介绍-实用函数
1. bs2rv
1.1 功能
根据译码矩阵FieldD将二进制串矩阵Chrom转换为实数向量,返回十进制的矩阵。
1.2 语法
Phen=bs2rv(Chrom,FieldD)
FieldD=[len lb ub code scale lbin ubin]
- len:包含在Chrom中的每个子串的长度,注意:sum(len)=size(Chrom,2).
- lb和ub:分别是每个变量的上界和下届。
- code:表明子串是怎样编码的,1为标准编码,0为格雷码。
- scale:指明每个子串使用的刻度,0为算术刻度,1为对数刻度。
- lbin和ubin:指明表示范围中是否包含边界,0为不包含边界,1为包含边界。
1.3 用例
先创建[-1,10]区间的一组简单变量,然后使用bs2rv将二进制串表示成实值表现型。

2. rep
2.1 功能
矩阵复制。
2.2 语法
MatOut=rep(MatIn,REPN)
- MatIn:要复制的矩阵
- REPN:复制的次数,包含每个方向复制的次数。REPN(1)表示纵向复制次数,REPN(2)表示水平方向复制次数。
2.3 用例

本案例主要参考图书:MATLAB智能算法30个案例分析

















