yj1.m:简单一元函数优化实例,利用遗传算法计算下面函数的最大值
, [-1, 2]
选择二进制编码,种群中个体数目为 40,每个种群的长度为 20,使用代沟为 0.9,最
大遗传代数为 25
译码矩阵结构:
译码矩阵说明:
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 是定义问题维数的一个值,本例中选取 n=20,求解 ,程序主要变量:
NIND(个体的数量):=40;
MAXGEN(最大遗传代数):=500;
NVAR(变量维数):=20;
PRECI(每个变量使用多少位来表示):=20;
GGAP(代沟):=0.9
注:函数 objfun1.m 中 switch 改为 switch1,否则提示出错,因为 switch 为 matlab 保留
字,下同!
yj3.m:多元多峰函数的优化实例,Shubert 函数表达式如下,求
,
注:第 10 行各变量的上下限改为[-10;10],原来为[-3;3];
第 25 行改为:[Y, I]=min(ObjV);原来为[Y, I]=min(ObjVSel);以此将染色体的个体值与
shubert()函数值对应起来,原表达式不具有 shubert()函数自变量和应变量的
对应关系
yj4.m:收获系统最优控制,收获系统(Harvest)是一个一阶的离散方程,表达式为
, 1,2,…,N
【shubert.m】