首页 > 编程语言 > 详细

数学建模算法(七):遗传算法

时间:2016-01-21 23:06:49      阅读:165      评论:0      收藏:0      [点我收藏+]

1.matlab

clc
clear
NVAR=2;
NIND=40;%种群大小?
MAXGEN=100;%最大遗传代数?
LIND=10;%个体长度(变量的二进制位数)?
GGAP=0.9;%代沟
trace=zeros(2,MAXGEN);
FieldD=[LIND LIND
0e4 0.6e4 %lb:每个变量的下界(x,y的下界)(这里是一区的)?
1e4 1.4e4%ub:每个变量的上届(x,y的上界)?
1 1
0 0
1 1
1 1 ];
Chrom=crtbp(NIND,LIND*NVAR); %创建一个初始种群,二进制编码
unit=bs2rv(Chrom,FieldD); %二进制转为十进制(初始种群)(本题中初始种群的横纵%坐标)
ObjV=fun(unit);%计算目标函数值
for gen=1:MAXGEN
FitnV=ranking(-ObjV);%分配适应度
SelCh=select(sus,Chrom,FitnV,GGAP);%选择sus:随机遍历抽样
SelCh=recombin(xovsp,SelCh,0.7);%交叉(重组)概率0.7,xovsp:单点交叉
SelCh=mut(SelCh); %变异?
unit=bs2rv(SelCh,FieldD);%二进制十进制转换(子代个体)
ObjVSel=fun(unit); %目标函数值(子代个体)
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%重插入子代的新种群?
[Y(gen),I(gen)]=max(ObjV);%Y为最优个体下的目标函数值,I为最优个体在种群的下标
trace(1,gen)=max(ObjV);%遗传算法性能追踪
trace(2,gen)=sum(ObjV)/length(ObjV);
end
unit=bs2rv(Chrom,FieldD);
figure
plot(trace(1,1:gen),b-o);
hold on
plot(trace(2,1:gen),r-o);
grid on
legend(最大浓度,种群平均浓度,4)
title(遗传算法查找As污染性能图)
xlabel(进化代数)
ylabel(浓度)
u1=unit(I(gen),:);
u2=max(Y);
u=[u1,u2]

 

数学建模算法(七):遗传算法

原文:http://www.cnblogs.com/pursuit1996/p/5149563.html

(1)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!