📄 hanshuyouhua.txt
字号:
利用遗传算法计算下面函数的最大值
f(x)=x*sin(10*pi*x)+2.0
选择二进制编码,种群的个体数目为40 每个种群长度为20,使用代购为0.9 最大遗传代数25
下面是一元函数优化问题的matlab代码
figure(1);
fplot('variable*sin(10*pi*variable)+2.0',[-1,2]); %画出函数曲线
nind=40; %个体数目
maxgen=25; %最大遗传代数
preci=20; %变量的二进制位数
ggap=0.9; %代购
trace=zeros(2,maxgen);
fieldd=[20;-1;2;0;1;1]; %区域描述器
chrom=crtbp(nind,preci); %初始种群
gen=0; %代计数器
variable=bs2rv(chrom,fieldd); %计算初始种群的十进制转化
objv=variable*sin(10*pi*variable)+2.0; %计算目标函数值
while gen<maxgen,
fitnv=ranking(-objv); % 分配适应度值
selch=select('sus',chrom,fitnv,ggap);
selch=recombin('xovsp',selch,0.7);
selch=mut(selch);
variable=bs2rv(selch,fieldd);
objvsel=variable*sin(10*pi*variable)+2.0;
[chrom objv]=reins(chrom,selch,1,1,objv,objvsel);
gen=gen+1;
[y,i]=max(objv0,hold on;
plot(variable(i),y);
trace(1,gen)=max(objv);
trace(2,gen)=sum(objv)/length(objv);
end
variable=bs2rv(chrom,fieldd);
hold on,grid;
plot(variable,'objv','b*');
figure(2);
plot(trace(1,:);
hold on;
plot(trace(2,:),'-.');grid;
legend('jie de bian hua ','zhong qun jun zhi de bian hua');
对这个等级评定算法的缺省设置是选择等差为2和使用线性评估,给最适应个体的适应度值为2,最差个体的适应度值为0
选择层使用高级函数选择调用低级函数随机遍历抽样例程sus ,selch包含来之原始染色体的ggap*nind个个体。这些使用
高级函数recombin进行重组,recombin使个体通过selch被选择再生产,并使用单点交叉
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -