zoukankan      html  css  js  c++  java
  • 数学建模算法(七):遗传算法

    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]
  • 相关阅读:
    PCB工作台
    A/D转换
    gerber文件生成与PCB3D视图
    软考考前冲刺第十四、十五章算法设计与面向对象程序设计
    数据库之范式
    Java第九天
    软考考前冲刺第十三章UML建模
    软考错题合集之16-05-AM
    Java第八天
    Java第七天
  • 原文地址:https://www.cnblogs.com/pursuit1996/p/5149563.html
Copyright © 2011-2022 走看看