m基于GA遗传优化算法的认知中继网络最优中继功率分配和最佳中继节点选择算法matlab仿真

本文涉及的产品
全球加速 GA,每月750个小时 15CU
简介: m基于GA遗传优化算法的认知中继网络最优中继功率分配和最佳中继节点选择算法matlab仿真

1.算法概述

1.png

    如图1表示一个潜伏式认知中继网络,在这个场景中有一对主用户和一对次级用户,主用户由一个发射器和一个接收器组成,次级用户由一个发射器、一个接收器和n个中继节点组成。次级用户的认知节点之间没有直接链路,中继节点采用放大转发工作模式。假设场景中涉及到的信道都是相互独立的块衰落信道,也就是说即时功率增益在每个传输块之间是保持不变的,但是当一个传输块变化到另一个传输块时是可能发生改变的。

2.png

   在现有捕获信道状态信息的技术支持下,假设次级用户能够获取完美的信道状态信息,即次级用户发射端和中继节点能通过不同的方法获取信道即时功率增益,从而使次级用户发射端和中继节点能够实现发射功率的最优分配以获得次级用户的最大吞吐量。 

   主用户在通信过程中可以采取不同的发射方案。为了计算的方便,本文假设主用户采用恒定功率的分配方案。为了从总体上保护主用户的通信质量,在主用户接收端考虑一个长时间平均的SINR约束条件。这个约束条件在本文中称为平均SINR约束条件,表述如下:

3.png

   为了保护主用户的实时传输,使其不会因为最大化次级用户的吞吐量而被中断,确保主用户的传输质量,进而保证主用户的业务质量,本文也对主用户接收端的每个传输状态的SINR强加一个约束。这个约束称为谷值SINR约束,表述如下:  

4.png
5.png

    本文的优化标是在平均SINR约束、谷值SINR约束以及平均发射功率约束下,充分的利用共享的频谱资源,获取尽可能大的次级用户吞吐量。 

6.png
7.png
8.png
9.png
10.png
11.png

2.仿真效果预览
matlab2022a仿真结果如下:

12.png
13.png
14.png
15.png
16.png

3.核心MATLAB代码预览

f3   = 2;
%中继节点到次用户接收端功率增益
f4   = 3;
%中继节点到主用户接收端之间的信道即时功率增益
f5   = 3;
%预先确定的主用户能够接受的最小的平均SINR阈值
A1 = 3.6;
A2 = 2.5;
%次级用户发射端和中继节点的平均发射功率预算
Q1 = 3.48;
Q2 = 3.3;
%**************************************************************************
%%
%先确定lemda1,lemda2,lemda3,lemda4
Num     = 2000;
beta1   = zeros(1,Num);
beta2   = zeros(1,Num);
beta3   = zeros(1,Num);
beta4   = zeros(1,Num);
lemdas1 = zeros(1,Num);
lemdas2 = zeros(1,Num);
lemdas3 = zeros(1,Num);
lemdas4 = zeros(1,Num);
lemda1  = 0;
lemda2  = 0;
lemda3  = 0;
lemda4  = 0;
 
for k = 1:Num-1
    %步长的动态调整
    alpha        = 0.15;
    beta1(k)     = alpha*((Num-k+1)/Num)^k;
    beta2(k)     = alpha*((Num-k+1)/Num)^k;
    beta3(k)     = alpha*((Num-k+1)/Num)^k;
    beta4(k)     = alpha*((Num-k+1)/Num)^k;
    lemdas1(k+1) = lemdas1(k) - beta1(k)*(mean((P1*f1)./(P2*f2 + N0))-A1);
    lemdas2(k+1) = lemdas2(k) - beta2(k)*(mean((P1*f1)./(P3*f5 + N0))-A2);
    lemdas3(k+1) = lemdas3(k) - beta3(k)*(Q1 - mean(P2));
    lemdas4(k+1) = lemdas4(k) - beta4(k)*(Q2 - mean(P3));
end
%通过迭代,获得四个lemda
lemda1  = lemdas1(end);
lemda2  = lemdas2(end);
lemda3  = lemdas3(end);
lemda4  = lemdas4(end);
 
figure(1);
plot(lemdas1,'b','linewidth',2);
hold on
plot(lemdas2,'r','linewidth',2);
hold on
plot(lemdas3,'k','linewidth',2);
hold on
plot(lemdas4,'g','linewidth',2);
grid on
legend('lemda1','lemda2','lemda3','lemda4');
xlabel('迭代次数');
ylabel('lemda');
axis([0,Num,-2,2]);
 
%%
%通过优化,计算得到最后最佳的功率分配情况
%先通过遗传优化获得最佳的P2和P3
%**********************首先通过我使用的优化过程计算**************************
%根据中继节点数目,产生每个次用户-中继的信道参数
SNR0 = 15;
SNR  = [8,12,15,20,4,11];
%测试发送数据
Signal = 1e6*rand(1,2);
x      = 2*Signal-1;
 
for jAFN = 1:AFN
    jAFN
    zsnl   = sqrt(1/(10^((SNR(jAFN))/10)));
    zsnl0  = sqrt(1/(10^((SNR0)/10)));
    %如下为需要拟合的参数
    P2o    = 3;
    P3o    = 3;
    %根据遗传算法进行参数的拟合
    MAXGEN = 200;
    NIND   = 600;
    Chrom  = crtbp(NIND,2*10);
    %14个变量的区间
    Areas  = [0  ,0;
              20 ,20];
 
    FieldD = [rep([10],[1,2]);Areas;rep([0;0;0;0],[1,2])];
    P2x_NIND    = zeros(NIND,1);
    P3x_NIND    = zeros(NIND,1);
    P2x         = zeros(MAXGEN,1);
    P3x         = zeros(MAXGEN,1);
    T           = zeros(MAXGEN,1);
    gen         = 0;
 
    for a=1:1:NIND 
        P2x_NIND(a) = P2o;      
        P3x_NIND(a) = P3o;
        %计算对应的目标值
        %计算不同中继点对应的信噪比
        Ysr     = sqrt(P2x_NIND(a)*f3)*x + zsnl*randn;
        Ysd     = sqrt(P3x_NIND(a))/sqrt(P2x_NIND(a)*f3 + N0)*sqrt(f4) * Ysr + zsnl0*randn; 
        Rr      = sum(Ysd.^2)/sum(x.^2); 
        
        L       = func_obj(Rr,mean(P1),P2x_NIND(a),P3x_NIND(a),f1,f2,f3,f4,f5,N0,lemda1,lemda2,lemda3,lemda4);
        E       = 1/L;
        J(a,1)  = E;
    end
    Objv  = (J+eps);
    gen   = 0; 
    while gen < MAXGEN;   
          FitnV=ranking(Objv);    
          Selch=select('sus',Chrom,FitnV);    
          Selch=recombin('xovsp', Selch,0.9);   
          Selch=mut( Selch,0.01);   
          phen1=bs2rv(Selch,FieldD);   
          for a=1:1:NIND  
              if  gen == 1
                  P2x_NIND(a) = P2o;      
                  P3x_NIND(a) = P3o;
              else
                  P2x_NIND(a) = phen1(a,1);      
                  P3x_NIND(a) = phen1(a,2); 
              end
              %计算不同中继点对应的信噪比
              Ysr     = sqrt(P2x_NIND(a)*f3)*x + zsnl*randn;
              Ysd     = sqrt(P3x_NIND(a))/sqrt(P2x_NIND(a)*f3 + N0)*sqrt(f4) * Ysr + zsnl0*randn; 
              Rr      = sum(Ysd.^2)/sum(x.^2); 
              %计算对应的目标值                   
              L       = func_obj(Rr,mean(P1),P2x_NIND(a),P3x_NIND(a),f1,f2,f3,f4,f5,N0,lemda1,lemda2,lemda3,lemda4);                       
              E       = 1/L;
              JJ(a,1) = E;
          end 
          Objvsel=(JJ+eps);    
          [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
          gen=gen+1; 
          %保存参数收敛过程和误差收敛过程以及函数值拟合结论
          P2x(gen)   = mean(P2x_NIND);
          P3x(gen)   = mean(P3x_NIND);
          Ysr     = sqrt(P2x(gen)*f3)*x + zsnl*randn;
          Ysd     = sqrt(P3x(gen))/sqrt(P2x(gen)*f3 + N0)*sqrt(f4) * Ysr + zsnl0*randn; 
          Rr      = sum(Ysd.^2)/sum(x.^2); 
          %计算对应的吞吐量
          T(gen)     = log2(1+Rr);
    end 
    %计算对应的目标值    
    Ysr           = sqrt(P2x(end)*f3)*x + zsnl*randn;
    Ysd           = sqrt(P3x(end))/sqrt(P2x(end)*f3 + N0)*sqrt(f4) * Ysr + zsnl0*randn; 
    Rr            = sum(Ysd.^2)/sum(x.^2); 
    Tp2p3(jAFN)   = log2(1+Rr);
    P2_best(jAFN) = P2x(end);      
    P3_best(jAFN) = P3x(end); 
end
 
%获得最佳中继点
[V,I] = max(Tp2p3);
 
disp('最优中继点:');
I
 
disp('最优功率分配结果:');
P2_best(I)
P3_best(I)
 
disp('吞吐量:');
Tp2p3(I)
01_088_m
相关文章
|
2天前
|
算法 数据挖掘 vr&ar
基于ESTAR指数平滑转换自回归模型的CPI数据统计分析matlab仿真
该程序基于ESTAR指数平滑转换自回归模型,对CPI数据进行统计分析与MATLAB仿真,主要利用M-ESTAR模型计算WNL值、P值、Q值及12阶ARCH值。ESTAR模型结合指数平滑与状态转换自回归,适用于处理经济数据中的非线性趋势变化。在MATLAB 2022a版本中运行并通过ADF检验验证模型的平稳性,适用于复杂的高阶自回归模型。
|
2天前
|
机器学习/深度学习 算法
基于心电信号时空特征的QRS波检测算法matlab仿真
本课题旨在通过提取ECG信号的时空特征并应用QRS波检测算法识别心电信号中的峰值。使用MATLAB 2022a版本实现系统仿真,涵盖信号预处理、特征提取、特征选择、阈值设定及QRS波检测等关键步骤,以提高心脏疾病诊断准确性。预处理阶段采用滤波技术去除噪声,检测算法则结合了一阶导数和二阶导数计算确定QRS波峰值。
|
4月前
|
机器学习/深度学习 算法
【MATLAB】GA_BP神经网络时序预测算法
【MATLAB】GA_BP神经网络时序预测算法
114 8
|
1月前
|
算法
基于GA-PSO遗传粒子群混合优化算法的CVRP问题求解matlab仿真
本文介绍了一种基于GA-PSO混合优化算法求解带容量限制的车辆路径问题(CVRP)的方法。在MATLAB2022a环境下运行,通过遗传算法的全局搜索与粒子群算法的局部优化能力互补,高效寻找最优解。程序采用自然数编码策略,通过选择、交叉、变异操作及粒子速度和位置更新,不断迭代直至满足终止条件,旨在最小化总行驶距离的同时满足客户需求和车辆载重限制。
|
1月前
|
机器学习/深度学习 算法 定位技术
MATLAB - 遗传算法(GA)求解旅行商问题(TSP)
MATLAB - 遗传算法(GA)求解旅行商问题(TSP)
33 3
|
2月前
|
传感器 机器学习/深度学习 算法
基于GA遗传算法的WSN网络节点覆盖优化matlab仿真
本研究应用遗传优化算法于无线传感器网络(WSN),优化节点布局与数量,以最小化节点使用而最大化网络覆盖率。MATLAB2022a环境下,算法通过选择、交叉与变异操作,逐步改进节点配置,最终输出收敛曲线展现覆盖率、节点数及适应度值变化。无线传感器网络覆盖优化问题通过数学建模,结合遗传算法,实现目标区域有效覆盖与网络寿命延长。算法设计中,采用二进制编码表示节点状态,适应度函数考量覆盖率与连通性,通过选择、交叉和变异策略迭代优化,直至满足终止条件。
|
2月前
|
算法 数据安全/隐私保护
基于GA遗传优化算法的Okumura-Hata信道参数估计算法matlab仿真
在MATLAB 2022a中应用遗传算法进行无线通信优化,无水印仿真展示了算法性能。遗传算法源于Holland的理论,用于全局优化,常见于参数估计,如Okumura-Hata模型的传播损耗参数。该模型适用于150 MHz至1500 MHz的频段。算法流程包括选择、交叉、变异等步骤。MATLAB代码执行迭代,计算目标值,更新种群,并计算均方根误差(RMSE)以评估拟合质量。最终结果比较了优化前后的RMSE并显示了SNR估计值。
44 7
|
3月前
|
算法
基于GA遗传优化的混合发电系统优化配置算法matlab仿真
**摘要:** 该研究利用遗传算法(GA)对混合发电系统进行优化配置,旨在最小化风能、太阳能及电池储能的成本并提升系统性能。MATLAB 2022a用于实现这一算法。仿真结果展示了一系列图表,包括总成本随代数变化、最佳适应度随代数变化,以及不同数据的分布情况,如负荷、风速、太阳辐射、弃电、缺电和电池状态等。此外,代码示例展示了如何运用GA求解,并绘制了发电单元的功率输出和年变化。该系统原理基于GA的自然选择和遗传原理,通过染色体编码、初始种群生成、适应度函数、选择、交叉和变异操作来寻找最优容量配置,以平衡成本、效率和可靠性。
|
3月前
|
算法
基于GA-PSO遗传粒子群混合优化算法的VRPTW问题求解matlab仿真
摘要: 本文介绍了考虑时间窗的车辆路径问题(VRPTW),在MATLAB2022a中进行测试。VRPTW涉及车辆从配送中心出发,服务客户并返回,需在指定时间窗内完成且满足车辆容量限制,目标是最小化总行驶成本。文章探讨了遗传算法(GA)和粒子群优化(PSO)的基本原理及其在VRPTW中的应用,包括编码、适应度函数、选择、交叉、变异等步骤。同时,提出了动态惯性权重、精英策略、邻域搜索、多种群和启发式信息等优化策略,以应对时间窗限制并提升算法性能。
106 11
|
2月前
|
机器学习/深度学习 数据采集 算法
Python实现GA(遗传算法)对SVM分类模型参数的优化
Python实现GA(遗传算法)对SVM分类模型参数的优化