Matlab遗传算法

Matlab遗传算法
Matlab遗传算法

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('种群均值的变换','最优解的变化');

相关主题
相关文档
最新文档