首页 > 编程语言 >基于GA遗传优化算法的Okumura-Hata信道参数估计算法matlab仿真

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

时间:2024-07-13 22:19:17浏览次数:20  
标签:Okumura Selch 算法 matlab JJ Hata 优化 gen

1.算法仿真效果

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

 

 

 

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

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

 

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

 

 

 

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

 

 

 

 

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

  

标签:Okumura,Selch,算法,matlab,JJ,Hata,优化,gen
From: https://www.cnblogs.com/51matlab/p/18300830

相关文章

  • 深度优先搜索+算法设计+python
    一、问题描述小明想知道哪个岛是最大的岛屿,请你用深度优先遍历算法来帮助他。如图所示,为了方便计算,我们使用一个二维数组来表示一片海域,用0表示水面,用1表示陆地,我们的任务是找出其中最大的岛屿。注意,岛屿是指上下左右四个方向相连接的陆地区域。二、问题求解deflargest_is......
  • 【CPO-TCN-BiGRU-Attention回归预测】基于冠豪猪算法CPO优化时间卷积双向门控循环单元
    %数据准备%假设有一个输入变量X和一个目标变量Y%假设数据已经存储在X和Y中,每个变量为列向量%参数设置inputWindowSize=10;%输入窗口大小outputWindowSize=1;%输出窗口大小numFeatures=1;%输入变量的数量numFilters=32;%TCN中的滤波器数......
  • 【matlab】大数据基础与应用实例
    目录引言线性回归模型基本形式最小二乘法多元线性回归线性回归的假设模型评估应用独热编码原理应用场景优点缺点数据收集数据可视化数据处理与分析完整代码引言线性回归模型线性回归模型是一种用于预测连续值输出(或称为因变量)的统计方法,它基于一个或多个......
  • 24暑假算法刷题 | Day11 | LeetCode 150. 逆波兰表达式求值,239. 滑动窗口最大值,347.
    目录150.逆波兰表达式求值题目描述题解239.滑动窗口最大值题目描述题解347.前K个高频元素题目描述题解150.逆波兰表达式求值点此跳转题目链接题目描述给你一个字符串数组tokens,表示一个根据逆波兰表示法表示的算术表达式。请你计算该表达式。返回一个......
  • 24暑假算法刷题 | Day9 | LeetCode 151. 反转字符串中的单词,28. 找出字符串中第一个匹
    目录151.反转字符串中的单词题目描述题解28.找出字符串中第一个匹配项的下标题目描述题解459.重复的子字符串题目描述题解卡码网55.右旋字符串题目描述题解151.反转字符串中的单词点此跳转题目链接题目描述给你一个字符串s,请你反转字符串中单词的顺......
  • Day66 代码随想录打卡|回溯算法篇---分割回文串
    题目(leecodeT131):给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串。返回 s 所有可能的分割方案。方法:本题是一个分割回文串的问题,是回溯算法的另一类问题。针对一个字符串,我们要对其进行分割,并且确保分割后生成的子串也必须全都是回文串。分析回溯三......
  • 使用 AI 解决一道算法题
    善用AI。AI可以是一个好帮手。问题问题是工作中遇到的。题目很简单:将一个文件的文本内容中的命中指定正则表达式的部分用<qthighlight--命中规则的文本--qthighlight>包围起来。每个这样的命中内容,如果前后五行没有这样的标签围起来的内容,则作为一个独立块输出;如果......
  • js 实现二分搜索算法
    二分算法搜索数字二分搜索算法是一种在有序数组中查找目标值的高效方法。其时间复杂度为(O(\logn))。下面是用JavaScript实现的二分搜索算法:functionbinarySearch(arr,target){letleft=0;letright=arr.length-1;while(left<=right){......
  • js 实现冒泡排序算法
    冒泡排序是一种简单的排序算法。它重复地遍历待排序的列表,比较相邻的元素并交换位置,如果它们的顺序错误。这个过程会重复进行,直到整个列表排序完成。下面是用JavaScript实现的冒泡排序算法:functionbubbleSort(arr){letn=arr.length;letswapped;do{......
  • 数据结构题目:几种典型排序算法的实现
    1、实验目的实现几种典型的排序算法2、实验具体要求分别利用直接插入/折半插入/希尔/冒泡/快速/简单选择排序算法实现将待排序序列{26,6,18,8,36,66,56,76,99}由小到大排序,并输出结果。3、实验设计思路(编程语言、模块划分及函数功能描述等)模块划分及函数功能描述:主函数模......