首页 > 行业资讯 > 【物理应用】基于粒子群算法实现大地电磁视电阻率反演优化附matlab代码

【物理应用】基于粒子群算法实现大地电磁视电阻率反演优化附matlab代码

时间:2022-08-12 来源: 浏览:

【物理应用】基于粒子群算法实现大地电磁视电阻率反演优化附matlab代码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集

1 内容介绍

为了落实习近平总书记向地球深部进军的重要指示,国土资源部、科技部、教育部等相关部委推出了国家重点研发计划“深地资源勘查开采”。因大地电磁测深方法勘探深度大,其在深部地球资源勘查中具有比较良好的前景。  大地电磁测深已在石油、金属、地下水等资源勘探中得到了广泛的应用。但该方法的关键环节:反演,由于在一定条件下,效果还是不尽人意,有待进一步的改善。本文探索了利用粒子群算法来对大地电磁测深资料进行反演的技术方法。粒子群算法是一种寻求最优解的方法,目前在多个领域得到了广泛有效的应用,但是在电磁勘探领域几乎没有得到应用。首先,我们在深入分析粒子群算法的基本思想和详细算法的基础上,结合大地电磁测深反演的基本原理和技术要求,设计了一种新的反演方法:大地电磁测深的粒子群反演方法。其次,依据设计的反演方法,在matlab软件开发平台上,编写了大地电磁测深的正演程序和反演程序,实现了基于粒子群算法的大地电磁测深的反演软件。然后,利用理论数据对该反演方法的正确性进行了检验,证明了反演程序的正确性。设计了几种不同的地电模型,利用正演程序计算得到理论的响应曲线,利用我们开发出的反演软件对理论数据进行反演,把反演结果与已知模型对比进行了检验。最后,针对准噶尔盆地乌伦古坳陷实测大地电磁测深数据,利用该方法进行了反演计算,并与地震解释结果进行对比,表明了该方法的有效性。 

2 仿真代码

clear

clc

%       做一次正演

lambda=[50,200,10,500,300];

rhos=mt1d(lambda);

% 加误差

rhos=rhos+0.05.*(-1+2.*rand(size(rhos))).*rhos;

%       开始粒子群优化算法

SwarmSize=200;

Dimensionality=5;

lambda_min=[0,0,0,300,100];

lambda_max=[200,500,20,700,500];

Swarm=zeros(SwarmSize,Dimensionality);

vactor=zeros(SwarmSize,Dimensionality);

FitnessValue=zeros(SwarmSize,1);

newFitnessValue=FitnessValue;

% v_min=[0,0,0,0,0];

v_max=[0.5,0.5,0.5,0.5,0.5];

v_min=-v_max;

w=0.729;%惯性权重

MaxW=0.95;

MinW=0.4;

c1=2;%加速因子

     end

            newFitnessValue(i,1)=CalculateFitnessValue( rhos,Swarm(i,:) );

            %更新历史最优解

            if(newFitnessValue(i,1)>FitnessValue(i,1))

                FitnessValue(i,1)=newFitnessValue(i,1);

                optSwarmHistory(i,:)=Swarm(i,:);

            end

            %如果速度全部为0,则重新初始化

    %         if(vactor(i,:)==zeros(1,Dimensionality))

    %             vactor(i,:)=v_min+(v_max-v_min).*rand(1,Dimensionality);

    %         end

        end

        %更新全局最优解

        [ optSwarmAll,bestFitnessValue ] = SearchBest( optSwarmHistory,FitnessValue );

        t=t+1;

        e(t) = F_target(  rhos,optSwarmAll );

        

        figure(1)

        plot(e)

            title(’目标函数变化曲线’)

        xlabel(’迭代次数’)

        ylabel(’目标函数值’)

        

        if(t>tmax)

            break;

        end

%     end

end

figure(2)

semilogx(rhos,’b*-’,’LineWidth’,1.5);

hold on

rhos2=mt1d(optSwarmAll);

semilogx(rhos2,’r--’,’LineWidth’,1.5)

title(’MT粒子群优化算法一维反演对比’)

xlabel(’时间T/s’)

ylabel(’视电阻率’)

legend(’模型理论正演曲线’,’粒子群优化算法反演模型正演曲线’,0)

figure(3)

% 绘制模型对比阶梯图

Index=(Dimensionality+1)/2;

hhh=cumsum(lambda(Index+1:end));

rho_i=lambda(1:Index);

h=[1,hhh,2*(hhh(end))];

rho=[rho_i,rho_i(end)];

stairs(h,rho,’b-*’,’LineWidth’,1.5);

hold on

hh=cumsum(optSwarmAll(Index+1:end));

h1=[1,hh,2*(hh(end))];

rho1=[optSwarmAll(1:Index),optSwarmAll(Index)];

stairs(h1,rho1,’r--o’,’LineWidth’,1.5);

set(gca, ’XLim’,[0 2*(hh(end))]);set(gca, ’YLim’,[0 max([rho1,rho])+5]);

xlabel(’深度Depth/m’)

ylabel(’视电阻率ho_a/(Omega·m)’)

title(’粒子群优化算法反演模型与实际模型对比’);

legend(’理论模型’,’反演模型’,0);

3 运行结果

4 参考文献

[1]陈紫静. 大地电磁测深的粒子群反演方法[D]. 桂林理工大学, 2019.

[2]张倩, 王玲, 江沸菠. 电阻率层析成像的二维改进粒子群优化算法反演[J]. 物探与化探, 2015, 39(5):6.

[3]蔡涵鹏, 贺振华, 黄德济. 基于粒子群优化算法波阻抗反演的研究与应用[J]. 石油地球物理勘探, 2008(5):7.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐