Matlab遗传算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab遗传算法:
安装包:
如果是Matlab安装光盘上的工具箱,重新执行安装程序,选中即可。如果是单独下载的工具箱,则需要把新的工具箱(以下假设工具箱名字为svm)解压到toolbox目录下,然后用addpath或者pathtool把该工具箱的路径添加到matlab的搜索路径中,最后用which newtoolbox_command.m来检验是否可以访问。如果能够显示新设置的路径,则表明该工具箱可以使用了。具体请看工具箱自己代的README文件。
1.1 举例:
要添加的工具箱为svm,则解压后,里边有一个目录svm,假设matlab安装在D:\MATLAB6p5,将svm目录拷贝至D:\MATLAB6p5\toolbox,然后运行matlab,在命令窗口输入addpath D:\MATLAB6p5\toolbox\svm回车,来添加路径。然后在svm目录下,任意找一个m文件,以svcinfo.m为例,在命令窗口中输入whichsvcinfo.m。如果显示出该文件路径,如D:\MATLAB6p5\toolbox\svm\svcinfo.m,则安装成功,当然也可以在命令窗口输入path来查看。
实例:
求解模型:TC=x1+2*x2+3*x3+4*x4,-1<=x<=0
根据上面的求解模型,可以写出模型的.M文件如下,即适应度函数
function TC=TotalCost(x)
TC=0;
for i=1:4
TC=TC+i*x(i);
end
然后,可以利用遗传算法工具箱来写出遗传算法运行的主要程序,如下:
%定义遗传算法参数
NIND=20; %个体数目
MAXGEN=200; %最大遗传代数
NVAR=4; %变量维数
PRECI=20; %变量的二进制位数
GGAP=0.9; %代沟
trace=zeros(MAXGEN,2); %算法性能跟踪
%建立区域描述器
FieldD=[rep(PRECI,[1,NVAR]);rep([-1;0],[1,NVAR]);rep([1;0;1;1],[1,NVAR])]; Chrom=crtbp(NIND,NVAR*PRECI); %创建初始种群
gen=0; %代计数器
ObjV=TotalCost(bs2rv(Chrom,FieldD)); %计算初始种群个体的目
标函数值
while gen FitnV=ranking(ObjV); %分配适应度值 SelCh=select('sus',Chrom,FitnV,GGAP); %选择 SelCh=recombin('xovsp',SelCh,0.7); %重组 SelCh=mut(SelCh,0.07); %变异 ObjVSel=TotalCost(bs2rv(SelCh,FieldD)); %计算子代目标函数值[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入 gen=gen+1; %输出最优解及其对应的10个变量的十进制值 [Y,I]=min(ObjVSel); Y,X=bs2rv(Chrom(I,:),FieldD); trace(gen,1)=min(ObjV); trace(gen,2)=sum(ObjV)/length(ObjV); end plot(trace(:,1));hold on; plot(trace(:,2),'-.');grid; legend('种群均值的变换','最优解的变化');