基于GA遗传优化算法的Okumura-Hata信道参数估计算法matlab仿真

66 阅读2分钟

1.算法仿真效果

matlab2022a仿真结果如下(完整代码运行后无水印):

 

1.jpeg

2.jpeg

3.jpeg  

 

2.算法涉及理论知识概要

      遗传算法(Genetic Algorithm, GA)是一种模拟自然界生物进化过程的全局优化搜索算法,由John Holland于1975年提出。它利用达尔文的自然选择和遗传学原理,通过选择、交叉、变异等操作对一组解(称为种群)进行迭代优化,以求解复杂优化问题。在无线通信领域,GA常被用来估计信道模型中的未知参数,比如Okumura-Hata模型中的传播损耗参数,以提高模型预测的准确性。

 

       Okumura-Hata模型是评估城市环境中移动通信系统中传播损耗的经典模型,主要用于预测频率范围为150 MHz至1500 MHz的开阔地带和市区环境下的路径损耗。其基本形式为:

 

a7a7895268ca505288d109c8d05a0a49_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

 

       使用遗传算法来估计Okumura-Hata模型中的未知参数(如χ或其他可能的环境修正因子),主要流程包括以下几个步骤:

 

f83c58fb695dff2710ea7a8de5e41432_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png  

bd2a218e6f77fba76dd931be4d526e99_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png  

3.MATLAB核心程序 `%%

while gen < MAXGEN;   

      gen

      Pe0 = 0.9995;

      pe1 = 0.0005;

 

      FitnV=ranking(Objv);    

      Selch=select('sus',Chrom,FitnV);    

      Selch=recombin('xovsp', Selch,Pe0);   

      Selch=mut( Selch,pe1);   

      phen1=bs2rv(Selch,FieldD);   

 

      for a=1:1:NIND  

          X           = phen1(a,:);

          %计算对应的目标值

          [epls]      = func_obj(X);

          E           = epls;

          JJ(a,1)     = E;

      end

      IDX = find(JJ > 100000000);

      JJ(IDX)=[];

 

 

      Objvsel=(JJ);    

      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   

      gen=gen+1;

      Error(gen) = mean(JJ);

      [VV,II]    = min(JJ);

end

 

figure;

plot(Error,'linewidth',2);

grid on

xlabel('迭代次数');

ylabel('遗传算法优化过程');

legend('Average fitness');

 

[V,I] = min(JJ);

X     = phen1(I,:);

rng('default');

y     = wireless_hata_attenuation(floor(X(1))+1,X(2),X(3),X(4),d);

 

 

RMSE2 = sqrt(mean((T2-y).^2));

 

figure;

plot(T2)

hold on

plot(1:5:length(y),y(1:5:end),'rx')

legend('Okumura-Hata信道数据','优化后Okumura-Hata信道数据');

xlim([0,100]);

 

 

 

disp('优化前后拟合值的RMSE对比');

 

RMSE1

RMSE2

 

disp('SNR估计值');

X

0X_063m`