本文作者:南海一号
今天我给大家讲一讲如何安装matlab的遗传算法工具箱。大家都知道,遗传算法是matlab一个非常经典的智能算法。它通过模仿自然界生物的进化来实现优化效果。在很多问题上,这都是一种非常有效的解决方式。
但是,遗传算法的搭建过程非常复杂。这对matlab小白来说非常的不友好。而且matlab自带的那些遗传算法的工具箱没法满足广大同学们的需要。不过幸运的是有很多人自己写了一些遗传算法工具箱供大家使用,其中比较有名的就是谢菲尔德大学遗传算法的matlab工具箱。今天我就要教大家怎么安装谢菲尔德大学的这个遗传算法工具箱。
下面是我用工具箱解决的优化问题图
最终得到了最优点:
下面我教大家如何安装。
1:首先,大家要下载压缩包。
大家可以到这个官网下载:http://codem.group.shef.ac.uk/index.php/ga-toolbox。
2:解压这个压缩包。在我下面分享的百度网盘里面下载我上传的两个可执行文件(1,2)。这两个可执行文件的代码我已经写好了,打包在了里面。不需要大家编写代码。
3:点开gatbx,通过网盘里面的可执行文件(1,2)修改后缀。记住,先双击1号文件,过5秒再双击2号文件。
4:把这个处理后的文件夹复制粘贴到toolbox里面。
5:打开matlab,将这个文件添加到路径。如果这一步看不懂,就可以看一看我在下面的视频。
下面是网盘资源
链接:https://pan.baidu.com/s/1-Vhkz3DC5zV7OxLrwC9Dkw
提取码:9emx
复制这段内容后打开百度网盘手机App,操作更方便哦
二:测试工具箱
我找到了一个用到遗传算法工具箱的程序,用来测试工具箱的有效性。
关于这个代码,下次我会给大家重点讲解。
代码如下
clc
clear all
close all
%% 画出函数图
figure(1);
hold on;
lb=1;ub=2; %函数自变量范围【1,2】
ezplot('sin(10*pi*X)/X',[lb,ub]); %画出函数曲线
xlabel('自变量/X')
ylabel('函数值/Y')
%% 定义遗传算法参数
NIND=40; %个体数目
MAXGEN=20; %最大遗传代数
PRECI=20; %变量的二进制位数
GGAP=0.95; %代沟
px=0.7; %交叉概率
pm=0.01; %变异概率
trace=zeros(2,MAXGEN); %寻优结果的初始值
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<MAXGEN
FitnV=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为个体的序号
[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*'); %画出最后一代的种群
hold off
%% 画进化图
figure(2);
plot(1:MAXGEN,trace(2,:));
grid on
xlabel('遗传代数')
ylabel('解的变化')
title('进化过程')
bestY=trace(2,end);
bestX=trace(1,end);
fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])
参考文献:《MATLAB智能算法30个案例分析代码》
图片来源:https://pixabay.com/zh/images/search/%E7%B3%96%E8%91%AB%E8%8A%A6/