yj1.m :简单一元函数优化实例,利用遗传算法计算下面函数的最大值
0.2)*10sin()(+=x x x f π,∈x [-1, 2]
选择二进制编码,种群中个体数目为40,每个种群的长度为20,使用代沟为0.9,
最大遗传代数为25
译码矩阵结构:??????????
???????
????
?=ubin lbin scale code
ub lb len FieldD 译码矩阵说明:
len – 包含在Chrom 中的每个子串的长度,注意sum(len)=length(Chrom); lb 、ub – 行向量,分别指明每个变量使用的上界和下界;
code – 二进制行向量,指明子串是怎样编码的,code(i)=1为标准二进制编码,
code(i)=0则为格雷编码; scale – 二进制行向量,指明每个子串是否使用对数或算术刻度,scale(i)=0为算术
刻度,scale(i)=1则为对数刻度; lbin 、ubin – 二进制行向量,指明表示范围中是否包含每个边界,选择lbin=0或
ubin=0,表示从范围中去掉边界;lbin=1或ubin=1则表示范围中包含边界; 注:增加第22行:variable=bs2rv(Chrom, FieldD);否则提示第26行plot(variable(I),
Y, 'bo'); 中variable(I)越界
yj2.m :目标函数是De Jong 函数,是一个连续、凸起的单峰函数,它的M 文件objfun1包含在GA 工具箱软件中,De Jong 函数的表达式为:
∑
==
n
i i x x f 1
2
)(, 512512≤≤-i x
这里n 是定义问题维数的一个值,本例中选取n=20,求解 )(min x f ,程序主要变量:
NIND (个体的数量):=40;
MAXGEN (最大遗传代数):=500;
NV AR (变量维数):=20;
PRECI (每个变量使用多少位来表示):=20;
GGAP (代沟):=0.9
注:函数objfun1.m 中switch 改为switch1,否则提示出错,因为switch 为matlab
保留字,下同!
yj3.m :多元多峰函数的优化实例,Shubert 函数表达式如下,求)(min x f 【shubert.m 】