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

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]

 

转载于:https://www.cnblogs.com/pursuit1996/p/5149563.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值