大地电磁反演-精英选择改进.zip

  • bai07
    了解作者
  • matlab
    开发工具
  • 7KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 25
    下载次数
  • 2018-05-14 19:44
    上传日期
利精英选择改进后的遗传算法进行大地电磁视电阻率反演
大地电磁反演-精英选择改进.zip
  • 精英选择改进
  • Crossover.m
    956B
  • CalculateBest.m
    456B
  • TargetFunction.m
    885B
  • Decode.m
    328B
  • Mutate.m
    928B
  • DecodeToModel.m
    490B
  • F_target.m
    117B
  • SelectAndCopy.m
    787B
  • StartPopulation.m
    192B
  • EliteChoice.m
    1.2KB
  • mt1d.m
    597B
  • MTInverse_GARun.m
    3.2KB
  • CalculateFitnessValue.m
    319B
内容介绍
clear clc %先正演得到场值 T=logspace(-3,4,100); rho=[150,180,130]; h=[180,190]; lambda1=[rho,h]; rhos =mt1d(lambda1); %加入噪声 rhos=rhos+0.05.*(-1+2.*rand(size(rhos))).*rhos; e=1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 遗传参数设置 length=[30,30,30,30,30]; a=[100,100,100,100,100]; b=[200,200,200,200,200]; p=0.2; %定义前30%为精英,不参与交叉变异,值的范围在0-1之间 CrossoverProbability=0.6; %交叉概率 MutationProbability=1; %变异概率 PopulationSize=3000; %群体大小 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 遗传算法主体 PopulationLength=sum(length); %字符串长度(个体长度) PopulationParent= StartPopulation( PopulationSize,PopulationLength ); %随机产生初始群体 k=1; while(e(end)>0.03) tic TargetFunctionValue = TargetFunction( rhos,PopulationParent,length,a,b ); %计算父代群体目标函数值 FitnessValue = CalculateFitnessValue( TargetFunctionValue ); %计算父代群体的适値 [ PopulationContinue,newFitnessValue,PopulationSave ] = EliteChoice( PopulationParent,FitnessValue,p ); %精英选择 PopulationSelect = SelectAndCopy( PopulationContinue,newFitnessValue ); %选择复制 PopulationCrossover = Crossover( PopulationSelect,CrossoverProbability ); %交叉 PopulationMutate = Mutate( PopulationCrossover,MutationProbability ); %变异 PopulationChild=[PopulationSave;PopulationMutate]; %组成新子代 ChildTargetFunctionValue = TargetFunction( rhos,PopulationChild,length,a,b ); %计算子代群体的目标函数 FitnessValue = CalculateFitnessValue( ChildTargetFunctionValue ); %计算子代群体的适値 [BestIndividual,BestFitnessValue] = CalculateBest( PopulationChild,FitnessValue ); %计算最大适値及其所对应的个体 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 解码进行计算误差 lambda(k,:) = DecodeToModel( BestIndividual,length,a,b ); e(k)=F_target( rhos,lambda(k,:) ); figure(1) plot(e) title('误差变化曲线') xlabel('迭代次数') ylabel('%') %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 进行下一次迭代 disp(k);disp(e(end)); k=k+1; PopulationParent=PopulationChild; if(k>250) break end toc end figure(2) semilogx(T,rhos,'b--','LineWidth',1.5); hold on rhos1 =mt1d(lambda1); semilogx(T,rhos1,'g--','LineWidth',1.5) index=find(e==min(e)); rhos2=mt1d(lambda(index(1),:)); semilogx(T,rhos2,'r--','LineWidth',1.5) title('MT遗传算法一维反演对比') xlabel('时间T/s') ylabel('视电阻率') legend('模型正演之后加入噪声的曲线','模型理论正演曲线','遗传算法反演模型正演曲线',0) figure(3) % 绘制模型对比阶梯图 hh=[1,h(1),h(1)+h(2),2*(h(1)+h(2))]; rhorho=[rho,rho(end)]; stairs(hh,rhorho,'b-','LineWidth',1.5); hold on h1=[1,lambda(index(1),4),lambda(index(1),4)+lambda(index(1),5),2*(lambda(index(1),4)+lambda(index(1),5))]; rho1=[lambda(index(1),1:3),lambda(index(1),3)]; stairs(h1,rho1,'r--o','LineWidth',1.5); % set(gca, 'XLim',[0 1000]);set(gca, 'YLim',[150 200]); xlabel('深度Depth/m') ylabel('视电阻率\rho_a/(\Omega·m)') title('遗传算法反演模型与实际模型对比'); legend('实际模型','反演模型',0);
评论
    相关推荐
    • Vc.rar
      基于VC++大地电磁数据处理软件开发 pdf文档 说明了原理和开发过程
    • 大地电磁一维PSO反演.rar
      可进行大地电磁一维PSO反演计算,计算视电阻率
    • MT-1D.zip
      大地电磁一维正演程序,适用于地球物理专业的学生,仅做参考。
    • kaokie.zip
      电磁勘探与大地电磁学 K型曲线,D.G型曲线 一维正演 视电阻率
    • 二次拟合MATLABm文件代码-genetic-mt1d:利用遗传算法对大地电磁数据进行一维反演
      Genetic-mt1d是一维大地电磁(MT)反演程序,它使用实值遗传算法为视电阻率和相位响应的数据集找到最合适的反演模型。 它是阿尔伯塔大学GEOPH526班级项目的一部分。 尽管我无法保证结果的正确性,但我成功地使用它来...
    • android从bootloader到launcher启动流程整理
      讲述android 开机流程 从boot rom---bootloader---init--zygote---systemserver---ams 并附上自己整理的每个流程的流程图 ,清晰熟悉android 启动流程
    • 基于python开发的全国新工商采集工具 v1.2版本
      这个软件是通过scrapy爬虫框架结合代理IP池再加上request模拟请求技术以及验证码识别技术,可以做到日更新采集全国新工商信息。采集的数据自动存储在mysql数据库表里,可下载全量1.8亿多企业工商基本信息和36维度的详细信息.支持sql和excel导出数据包格式。
    • 卷积神经网络
      这是卷积神经网络的一个实际用例,已经调试好了,能够在matlab上成功运行,适合从事卷积神经网络(CNN)研究的人员学习使用。
    • OFDM的MATLAB仿真
      1.使用Matlab实现一个OFDM系统。 OFDM系统具体参数参照LTE标准,具体为: 系统带宽:5MHz; OFDM符号长度:0.0714ms; 子载波间隔:15kHz; CP长度:OFDM符号长度的7 ; FFT点数:512; 2.选择一种降低OFDM系统峰均比的算法,在1的基础上实现,并分析其性能。
    • matlab匹配滤波代码-matlab_for_thesis:Matlab博士学位论文代码
      matlab匹配滤波代码博士论文的MATLAB代码 博士论文的MATLAB代码的一部分,“井田双色散水下声通道中的多载波通信”。 函数下的func_JingTian文件夹 FUNC_JINGTIAN包含多载波通信中一些通常需要的功能: OFDM调制/解调模块,包括几种数据辅助的信道估计方法和差分解调; 快速实现GFDM和C-FBMC调制/解调,分别包括时域和频域的迫零(ZF)和匹配滤波(MF)均衡; 为OFDM信道估计中使用的压缩感测方法计算字典的功能; 增加信道效应,施加宽带多普勒失真的功能; 通过线性调频Z变换(CZT)以任意精度对频域中的信号进行重采样; Hermite函数合成的信号之间的交叉歧义函数的计算。 演示文件夹 以下列出了四个演示 demo1:使用基本追踪(BP)算法形式的压缩感知方法对OFDM进行稀疏2-D信道估计; demo2:比较基本数据辅助OFDM信道估计算法,包括常规频域插值和基于IDFT的变换域方法; demo3:圆形滤波器组多载波(C-FBMC / OQAM)的基于DFT特征向量的原型滤波器合成; demo4:用于广义频分复用(GFDM)的辅助日期辅助无干