目录

1.算法概述

2.仿真效果预览

3.核心MATLAB代码预览

4.完整MATLAB程序


1.算法概述

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

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

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

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

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

2.仿真效果预览

matlab2022a仿真结果如下:

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:AFNjAFNzsnl   = 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;endObjv  = (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 == 1P2x_NIND(a) = P2o;      P3x_NIND(a) = P3o;elseP2x_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('最优中继点:');
Idisp('最优功率分配结果:');
P2_best(I)
P3_best(I)disp('吞吐量:');
Tp2p3(I)
01_088_m

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

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

  1. 【MATLAB教程案例12】基于GA遗传优化算法的函数极值计算matlab仿真及其他应用

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  2. 模糊聚类FCM算法和基于GA遗传优化的FCM聚类算法matlab仿真

    目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 在各种糊聚类算法中 ,模糊C -均值聚类算法FCM (FuzzyC MeanClusteri ...

  3. m基于GA遗传优化+SA模拟退火的混合改进算法的多产品多机器生产优化matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 这里,我们首先介绍一下改进算法的基本原理,按照前面说的,这里我们主要将GA和SA进行合并. 这里,我 ...

  4. m基于GA遗传优化算法的陆基制导系统地面站布设策略matlab仿真,并输出GDOP值

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 遗传算法的起源可追溯到20世纪60年代初期.1967年,美国密歇根大学J. Holland教授的学生 ...

  5. m基于GA遗传优化的GRNN广义回归神经网络销售数据预测算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 随着市场经济的发展和全球化,国内外企业面临着越来越残酷的市场竞争,要想赢得竞争,赢得市场,从事商品销 ...

  6. 基于GA遗传优化的flog任务调度算法matlab仿真

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  7. 【MATLAB教程案例96】基于GA优化的WSN最大覆盖率和最少节点部署数量matlab仿真

    欢迎订阅<FPGA学习入门100例教程>.<MATLAB学习入门100例教程> 本课程学习成果预览: 1.软件版本 matlab2021a 2.理论概述 关于理论知识,我们首先 ...

  8. 基于蚂蚁-遗传优化算法的路径规划问题(Matlab代码实现)

  9. 基于蜻蜓优化算法的认知无线电网络的服务质量研究附Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

最新文章

  1. 自动驾驶第一案结果敲定,谷歌无人驾驶和Uber达成2.5亿美元和解协议
  2. ASP.NET小知识
  3. JSP中base href=%=basePath%作用
  4. 网易云信12月大事记
  5. 数据库学习笔记---connect by的简单用法
  6. setjmp 与 longjmp
  7. Vim中的remap,noremap,nnoremap和vnoremap映射命令有什么区别?
  8. 一种基于DCNN模型的云检测方法介绍
  9. ezcad2激光打标软件_振镜篇:激光振镜工作原理
  10. Chrome插件安装 程序包无效
  11. 威纶触摸屏485轮询通讯_【威纶】触摸屏 界面制作软件 EBpro使用手册.pdf
  12. 北大计算机陈旭,北大图灵班——欢迎来到计算机王国
  13. FileZilla 使用技巧
  14. 信号处理常用matlab之数字滤波器及滤波函数
  15. 调试一个开源的车牌识别算法遇到的总结
  16. 数据库学习总结(六)——查询练习题(1)
  17. 【程序员的浪漫】花式表白
  18. 第七届“华文奖”开展 特设主题向余光中致敬
  19. 当台式机能搜索到WiFi,但是连不上WiFi时,如何解决?
  20. 基于Vue实现的网页音乐播放器

热门文章

  1. Pandas(十一)--时间序列相关
  2. 贪心算法--乘船问题
  3. win10打不开设置,弹出来找不到应用程序
  4. Hologres 弹性计算在 OLAP 分析上的实践和探索
  5. Storage: Xcopy Offload
  6. 站长必须知道的seo知识!
  7. execve, execlp, execvp, execle比较
  8. 山东大学教授计算机学院郭雷,中国科学院院士郭雷校友做客山东大学育贤校友讲坛...
  9. BST(二叉搜索树)
  10. 氮化镓功率芯片 NV6123、NV6113 PowerVQFN 5A