一 环境说明
解决此问题所使用的环境是:
- MATLAB版本:MATLAB2018b
- 操作系统:win10专业版
- 资料链接(谢菲尔德工具箱):链接:https://pan.baidu.com/s/18GOVYGZgz8tuKbx86wPQJw
提取码:vh2p
二 解决问题
谢菲尔德工具箱在MATLAB2018中的安装。
三 解决过程
- 下载链接中的谢菲尔德工具箱。
其中的rename.bat文件是用来将文件的大写名称改成小写名称(如果不改,使用会有问题)的,此资料中的.M文件已经处理,无需再处理*。
- 设置谢菲尔德工具箱的路径。
主页——设置路径——添加文件夹——谢菲尔德工具箱——保存——关闭。
PS:这里的路径一定要写到gatbx这一层,才能成功。
由于此资料中的文件均已改成小写名称,所以可以直接使用。 - 检测:
(1)命令行窗口输入:v= ver(“gatbx”)
(2)[Chrom,Lind,BaseV]=crtbp(5,10)
(3)代码验证
clc,clear
figure(1);
hold on;
lb = 1; ub = 2;
ezplot('sin(10*pi*X)/X',[lb,ub]);
xlabel('自变量/X')
ylabel('因变量/Y')
Nind = 40;
Max_gen = 20;
Preci = 20;
GGAP = 0.95;
px = 0.7;
pm = 0.01;
trace = zeros(2,Max_gen);
FieldD = [Preci;lb;ub;1;0;1;1];
Chrom = crtbp(Nind,Preci);
gen = 0;
X = bs2rv(Chrom,FieldD);
Objv = sin(10 * pi * X)./X;
while gen < Max_genFitnv = ranking(Objv);Selch = select('sus',Chrom,Fitnv,GGAP);Selch = recombin('xovsp',Selch,px);Selch = mut(Selch,pm);X = bs2rv(Selch,FieldD);Objvsel = sin(10 * pi * X)./X;[Chrom,Objv] = reins(Chrom,Selch,1,1,Objv,Objvsel);X = bs2rv(Chrom,FieldD);gen = gen + 1;[Y,I] = min(Objv);trace(1,gen) = X(I);trace(2,gen) = Y;
end
plot(trace(1,:),trace(2,:),'bo');
grid on;
plot(X,Objv,'b*');
figure(2);
plot(1:Max_gen,trace(2,:));
grid on;
xlabel('遗传代数')
ylabel('解的变化')
title('进化过程')
BestY = trace(2,end);
BestX = trace(1,end);
fprintf(['最优解:\nX = ',num2str(BestX),'\nY = ',num2str(BestY),'\n'])
如果解决了问题,请给个小心心,如有问题,欢迎留言
求助
CSDN中的公式编译搞不了,求大神帮助。