• bai07
    了解作者
  • matlab
    开发工具
  • 6KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 23
    下载次数
  • 2018-05-14 19:35
    上传日期
大地电磁一维遗传算法反演,采用遗传算法对大地电磁进行视电阻率反演
大地电磁一维遗传算法反演.zip
  • 遗传算法
  • mutation.m
    730B
  • decodebinary.m
    297B
  • selection.m
    1.6KB
  • initpop.m
    437B
  • crossover.m
    963B
  • F_target.m
    93B
  • decodechrom.m
    477B
  • fhi.m
    137B
  • mt1d.m
    597B
  • GARun.m
    1.1KB
  • calobjvalue.m
    367B
  • best.m
    363B
  • calfitvalue.m
    332B
内容介绍
% 2.4 选择复制 % 选择或复制操作是决定哪些个体可以进入下一代。程序中采用赌轮盘选择法选择,这种方法较易实现。 % 根据方程 pi=fi/∑fi=fi/fsum ,选择步骤: % 1) 在第 t 代,由(1)式计算 fsum 和 pi % 2) 产生 {0,1} 的随机数 rand( .),求 s=rand( .)*fsum % 3) 求 ∑fi≥s 中最小的 k ,则第 k 个个体被选中 % 4) 进行 N 次2)、3)操作,得到 N 个个体,成为第 t=t+1 代种群 %遗传算法子程序 %Name: selection.m %选择复制 % function [newpop]=selection(pop,fitvalue) % totalfit=sum(fitvalue); %求适应值之和 % fitvalue=fitvalue/totalfit; %单个个体被选择的概率 % fitvalue=cumsum(fitvalue); %如 fitvalue=[1 2 3 4],则 cumsum(fitvalue)=[1 3 6 10] % [px,py]=size(pop); % ms=sort(rand(px,1)); %从小到大排列 % fitin=1; % newin=1; % while newin<=px % if(ms(newin))<fitvalue(fitin) % newpop(newin)=pop(fitin); % newin=newin+1; % else % fitin=fitin+1; % end % end function [newpop]=selection(pop,fitvalue) totalfit=sum(fitvalue); %求适应值之和 fitvalue=fitvalue/totalfit; %单个个体被选择的概率 fitvalue=cumsum(fitvalue); %如 fitvalue=[1 2 3 4],则 cumsum(fitvalue)=[1 3 6 10],不明白为什么要累加 [px,py]=size(pop); %20*10 ms=sort(rand(px,1)); %从小到大排列 fitin=1; newin=1; while newin<=px %选出20个新个体,有重复情况,和上面介绍的方法不太一样 if(ms(newin))<fitvalue(fitin) newpop(newin,:)=pop(fitin,:); newin=newin+1; else fitin=fitin+1; end end
评论
    相关推荐