目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

要求
1.开发一个软件工具,可以直观地演示如何在LTE-A异构网络中通过基站的睡眠模式节约能源
2.需要演示基于用户的移动性如何设置基站的开关(睡眠模式)
3.自己设计基站睡眠模式的直观展示原则
4.在模拟异构网络时展示系统的能量消耗

成果
1.一个软件工具可以直观展示LTE-A异构网中基站的睡眠模式
2.在特定的异构网络布局和特定的时间框架下演示基站的开启和关闭
3.直观展示能源效率基站睡眠模式的性能指标

这里,我们主要设置一个19个基站构造的规则六边形小区,具体的仿真效果如下所示:

这里,我们模拟了19个基站构成的小区,每个小区中间位置有一个基站,上图中红色区域部分。然后紫色的带内表示用户,这些点是在随机的运动的。蓝色方框是在每个小区内随机分布的PICO微微网络基站。

另外,这里我们模拟的是一个城市的中心区域的模型,即中间小区用户数量较多,基站基本上处于满负荷状态,而周边几个小区用户数量较少。

用户在实际中做的运动方程为随机方向的变速运动,因此这里设备的运动方程用如下的式子表示:

这里,假设设备是平面运动的,所以Z一直为0.

其中速度因子,我考虑是模拟设备的变加速运动,即一个固定的速度V0和每个时刻不同的加速度的情况。角度为一个恒定的值与随机变量的叠加。即:

这样的情况,可以更加符合实际的设备运动的复杂情况。当a(t)为0的时候,设备做匀速运动。当a(t)为常数的时候,为匀加速运动,当a(t)为变化的值得时候,那么系统就为变加速运动。

然后这里我简单的接收一下我们这个异构网络的休眠切换算法:

在异构网络中,由于PICO网络的能耗远远小于MICRO基站的能耗,因此,在实际中,我们需要尽可能多的将设备与PICO基站建立连接,并同时通过系统对没有用户参与连接的MICRO基站进行关闭。

节点休眠算法的主要含义为:

当基站关闭以后,可以大大降低能耗,此时的基站失去了发送的能力,被称为休眠基站。而在一个大型的网络中,由于每个单一的基站并不会在每时每刻都处于工作之中,那么会对整个网络产生一定的冗余,在这样一个环境中,完全可以让一部分基站休眠,而让另一部分基站工作。另外,在基站密度较高的区域,此时,在不影响整个小区性能的前提下,通过关闭一部分基站的方法,可以有效降低整个小区的功耗。

下面讨论在引入基站休眠算法之后,整个小区的功耗。

假设在某一时刻,整个小区有k0个基站关闭,k-k0个基站在正常工作,那么整个小区的总的功耗为:

先对一个普通的能耗问题进行仿真,即如果检测到对应小区的用户数量为0,则基站自动进入休眠状态,如果出现用户,则基站开始工作。

第二,对比用户和宏基站距离以及和微微基站的距离;

第三,开关判决:

如果均不在两种基站的有效覆盖范围之内,那么保持原来的状态,

如果用户在邻近的宏基站的覆盖范围之内,那么当前用户和宏基站建立连接,而关闭对应的微微基站,如果用户在微微基站的覆盖范围之内,那么用户和微微基站建立连接,并关闭宏基站。

如果用户同时在微微基站和宏基站的有效覆盖范围内,那么选择实际功耗小的基站进行连接,通常情况下,如果微微基站没有饱和,则用户直接和微微基站建立连接。

第四,功耗的计算,即计算处于工作状态的基站,然后计算对应每个基站的用户数量,然后计算总的功耗:

2.仿真效果预览

matlab2022a仿真结果如下:

3.MATLAB核心程序

..............................................
%基站坐标
%macrocell
XMBS   = [];
YMBS   = [];%=============用户运动=====================================================
PX  = zeros(NU,TIME);
PY  = zeros(NU,TIME);
figure(1);
ind = 0;
for i=(-1*p):p for j=(-1*q):q %先确定macrocell的拓扑结构Xcen = i*1.5*R; Ycen = (j+mod(i,2)/2)*sqrt(3)*R; if sqrt(Xcen^2 + Ycen^2) <= 4*R   x = x0 + Xcen; y = y0 + Ycen; XMBS = [XMBS,Xcen];YMBS = [YMBS,Ycen];plot(x,y,'b');hold on;plot(Xcen,Ycen,'r*');hold on endend
end %然后产生picocell位置
NP    = 2;
XPBS0 = zeros(19,NP);
YPBS0 = zeros(19,NP);
XPBS  = zeros(19*NP,1);
YPBS  = zeros(19*NP,1);
II    = zeros(1,19);
for i=1:19 j=1;while j<=NP     %随机生成横坐标XPBS0(i,j) = (1000/sqrt(3)*rand()-500/sqrt(3))+XMBS(i);%随机生成纵坐标YPBS0(i,j) = (500*rand()-250)+YMBS(i);%算pico距离macro的距离distance  = sqrt((XPBS0(i,j)-XMBS(i))^2+(YPBS0(i,j)-YMBS(i))^2);h         = 1;judge     = 0;picodis   = 50;while h<=il=1;while l<j%遍历已经生成的pico,确认pico之间的距离picodis=sqrt((XPBS0(i,j)-XPBS0(h,l))^2+(YPBS0(i,j)-YPBS0(h,l))^2);if picodis<40%如果有距离小于40的,则不满足条件,跳出循环,重新生成pico              judge=1;break;end;l=l+1;end;if judge==1break;endh=h+1;end;if abs(XPBS0(i,j)-XMBS(i)) + abs(YPBS0(i,j)-YMBS(i))/sqrt(3)<= 500/sqrt(3)&&distance>75&&picodis>40 j = j+1;endend II(i)=i;
endfor i=1:19 for j = 1:NPplot(XPBS0(i,j),YPBS0(i,j),'b-s'); hold on;end
end
%PICO坐标值的转换
XPBS = reshape(XPBS0,[19*NP,1]);
YPBS = reshape(YPBS0,[19*NP,1]);axis equal;
hold on;
plot(Xu,Yu,'m.');
hold on;
legend('小区边界','基站BS');
axis([-world-5,world+5,-world-5,world+5]);
title('模拟场景(红色BS:ON,黑色BS:OFF)');
hold on;%假设最匀速运动
for t = 1:TIMEtfor i = 1:NUif t == 1PX(i,t) = Xu(i);PY(i,t) = Yu(i);elseV(i)    = 23*(0.5+randn);Theta(i)= pi*randn;%确定一个随机的运动方向 PX(i,t) = PX(i,t-1) + V(i)*cos(Theta(i));PY(i,t) = PY(i,t-1) + V(i)*sin(Theta(i));endend
end%%
%=============智能节点休眠算法==============================================
%基站坐标
XMBS;
YMBS;
%用户移动路线的坐标变化情况
PX;
PY;Power1 = zeros(1,TIME);
Power2 = zeros(1,TIME);%各个小区的用户连接数
USERS1 = zeros(19,TIME);
USERS2 = zeros(19,TIME);
USERS1p= zeros(19*NP,TIME);
USERS2p= zeros(19*NP,TIME);for times = 1:TIMEdisp(times);for j = 1:NUUX(j) = PX(j,times);UY(j) = PY(j,times);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%PART I 计算基站全部正常工作的时候的网络的能耗%PART I 计算基站全部正常工作的时候的网络的能耗%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%计算每个小区内对应的人数%用户所在小区的编号%先计算MICROUE_BSid1 = zeros(1,NU);BS_UEn1  = zeros(1,19);Pow_bs1  = zeros(1,19);for j1 = 1:NUfor j2 = 1:19dist(j2) = sqrt((UX(j1) - XMBS(j2))^2 + (UY(j1) - YMBS(j2))^2);end%计算最近的,即其对应的小区位置[V,I] = min(dist);UE_BSid1(j1) = I;end%再计算PICROUE_BSid1p = zeros(1,NU);BS_UEn1p  = zeros(1,19*NP);Pow_bs1p  = zeros(1,19*NP);for j1 = 1:NUfor j2 = 1:19*NPdistP(j2) = sqrt((UX(j1) - XPBS(j2))^2 + (UY(j1) - YPBS(j2))^2);end%计算最近的,即其对应的小区位置[V,I] = min(distP);UE_BSid1p(j1) = I;end%根据每个用户和宏小区和微小区之间的距离,判断当然用户和虹小区建立连接,还是和微小区建立连接%统计每个用户,其连入情况%再计算PICROUE_BSid1P2 = zeros(2,NU);for j = 1:NUMind = UE_BSid1(j);Pind = UE_BSid1p(j);%判断该用户具体连接到哪个基站Mdist= sqrt((UX(j) - XMBS(Mind))^2 + (UY(j) - YMBS(Mind))^2);Pdist= sqrt((UX(j) - XPBS(Pind))^2 + (UY(j) - YPBS(Pind))^2);if Mdist >= 2*PdistUE_BSid1P2(:,j) = [0,Pind];elseUE_BSid1P2(:,j) = [1,Mind];  endend%根据实际情况,计算宏基站功率和微基站功率MM = find(UE_BSid1P2(1,:)==1);PP = find(UE_BSid1P2(1,:)==0);%统计每个小区的用户个数for j1 = 1:19e=find(UE_BSid1P2(2,MM)==j1);  BS_UEn1(j1) = length(e);endfor j1 = 1:19if BS_UEn1(j1) <= SNUPow_bs1(j1) = 137+57*BS_UEn1(j1)/SNU;elsePow_bs1(j1) = 137+57; endendfor j1 = 1:19*NPe=find(UE_BSid1P2(2,PP)==j1);  BS_UEn1p(j1) = length(e);endfor j1 = 1:19*NPif BS_UEn1p(j1) <= SNUPPow_bs1p(j1) = 12+8*BS_UEn1p(j1)/SNU;elsePow_bs1p(j1) = 12+8; endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%PART II 基站休眠算法 %PART II 基站休眠算法 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    %先计算MICROUE_BSid2 = zeros(1,NU);BS_UEn2  = zeros(1,19);Pow_bs2  = zeros(1,19);for j1 = 1:NUfor j2 = 1:19dist2(j2) = sqrt((UX(j1) - XMBS(j2))^2 + (UY(j1) - YMBS(j2))^2);end%计算最近的,即其对应的小区位置[V,I] = min(dist2);UE_BSid2(j1) = I;end%再计算PICROUE_BSid2p = zeros(1,NU);BS_UEn2p  = zeros(1,19*NP);Pow_bs2p  = zeros(1,19*NP);for j1 = 1:NUfor j2 = 1:19*NPdistP(j2) = sqrt((UX(j1) - XPBS(j2))^2 + (UY(j1) - YPBS(j2))^2);end%计算最近的,即其对应的小区位置[V,I] = min(distP);UE_BSid2p(j1) = I;end%根据每个用户和宏小区和微小区之间的距离,判断当然用户和虹小区建立连接,还是和微小区建立连接%统计每个用户,其连入情况%再计算PICROUE_BSid2P2 = zeros(2,NU);for j = 1:NUMind2 = UE_BSid2(j);Pind2 = UE_BSid2p(j);%判断该用户具体连接到哪个基站Mdist2= sqrt((UX(j) - XMBS(Mind2))^2 + (UY(j) - YMBS(Mind2))^2);Pdist2= sqrt((UX(j) - XPBS(Pind2))^2 + (UY(j) - YPBS(Pind2))^2);if Mdist2 >= 2*Pdist2UE_BSid2P2(:,j) = [0,Pind2];elseUE_BSid2P2(:,j) = [1,Mind2];  endend%根据实际情况,计算宏基站功率和微基站功率MM2 = find(UE_BSid2P2(1,:)==1);PP2 = find(UE_BSid2P2(1,:)==0);%统计每个小区的用户个数for j1 = 1:19e2=find(UE_BSid2P2(2,MM2)==j1);  BS_UEn2(j1) = length(e2);end[ON_OFF2m,Power2m] = func_sleep(SNU,BS_UEn2,19,NP);for j1 = 1:19*NPe2=find(UE_BSid2P2(2,PP)==j1);  BS_UEn2p(j1) = length(e2);end[ON_OFF2p,Power2p] = func_sleep(SNUP,BS_UEn2p,19*NP,NP);%记录能耗_全部打开的能耗Power1(times) = sum(Pow_bs1) + sum(Pow_bs1p);%普通休眠下的能耗Power2(times) = sum(Power2m) + sum(Power2p);USERS1(:,times)  = BS_UEn1;USERS1p(:,times) = BS_UEn1p;USERS2(:,times)  = BS_UEn2';USERS2p(:,times) = BS_UEn2p';
end%%
%=============根据基站休眠算法的优化结果,动态的显示基站开关状态===============
%动态显示不同时期的开关状态和对应的能耗对比效果
figure;
plot(1:TIME,Power1,'b','linewidth',2);
hold on
plot(1:TIME,Power2,'g','linewidth',2);
xlabel('仿真时间');
ylabel('小区总功耗');
grid on
legend('未进行基站休眠的网络功耗','进行基站休眠的网络功耗');%动画演示
figure;
for t = 1:TIMEif mod(t,5)==1subplot(221);tmps1 = USERS1(:,t);stem(1:19,tmps1);title('没有sleep mode的情况下每一个小区连接用户的数目');axis([0,20,0,40]);subplot(222);tmps2 = USERS2(:,t);IND1  = find(tmps2==0);IND2  = find(tmps2>0);stem(IND2,tmps2(IND2),'b');hold on;stem(IND1,tmps2(IND1),'r');hold off;legend('基站打开','基站关闭');title('有sleep mode下各个小区连接用户的数目的动态图');axis([0,20,0,40]);subplot(2,2,[3,4]);plot(1:t,Power1(1:t),'b','linewidth',2);hold onplot(1:t,Power2(1:t),'r','linewidth',2);xlabel('仿真时间');ylabel('小区总功耗');grid onlegend('未进行基站休眠的网络功耗','进行基站休眠的网络功耗');axis([1,TIME,2500,3800]);endpause(0.0005);
end
01_090_m

4.完整MATLAB

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

V

m基于基站休眠的LTE-A异构网络中节能算法matlab仿真相关推荐

  1. m基于随机接入代价的异构网络速率分配算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 无线接入技术发展迅速,异构网络并存的现象普遍存在:同时,随着终端用户数量的剧增.业务类型的多样化和高 ...

  2. m基于ABC人工蜂群优化的无线传感器网络路由优化算法matlab仿真,对比优化前后网络寿命,效率以及可靠性

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.MATLAB核心程序 4.完整算法代码文件 1.算法仿真效果 matlab2022a仿真结果如下: 2.算法涉及理论知识概要 无线传感器网络通常使 ...

  3. 基于miu小波变换的人体步态数据检测和识别算法matlab仿真

    目录 一.理论基础 3.2.1加速度计 3.2.2陀螺仪 3.3基于IMU设备的人体步态数据的采集 二.MATLAB仿真程序 三.仿真结果 一.理论基础 在进行数据采集的过程中,需要根据实际情况选择合 ...

  4. 基于RSS和TOA两种方法的无线传感器网络定位测量算法matlab仿真

    up目录 一.理论基础 二.核心程序 三.测试结果 一.理论基础 无线传感器网络(Wireless Sensor Networks, WSN)是一种分布式传感网络,它的末梢是可以感知和检查外部世界的传 ...

  5. 基于盲估计和ICA的单通道盲分离算法–Matlab仿真

    关键词:参数盲估计.单通道.盲分离.ICA算法 盲源分离简单的来讲就是在不明确系统的传输特性的前提下,从系统的源信号估计出观测信号的传输信道. 假设n个未知的源信号,各传感器接收到m个混合的观测信号, ...

  6. 异构网络垂直切换算法LTE/WIMAX切换

    1.问题描述: 异构网络垂直切换算法LTE/WIMAX切换 2.部分程序: %%         the simulation of this program is for heterogeneous ...

  7. 【论文翻译】HeteSim:异构网络中相关性度量的通用框架

    原文链接:https://blog.csdn.net/Mrong1013967/article/details/115330139 HeteSim:异构网络中相关性度量的通用框架 摘要 相似性搜索是许 ...

  8. 【文献阅读】异构网络中的联邦优化——FedProx

    本文是FedProx的论文,值得一看. 由于本文之前有简单看过一次,这次就不细读,就只读其中比较重要的部分也就是PedProx的实现和收敛证明. 定义 1:(-不精确解) 对于一个函数  ,其中 .我 ...

  9. 论文笔记——HDD算法:异构网络中信息扩散的深度学习方法

    HDD算法 发表在knowledge-Based Systems上的一篇文章.有许多现实世界的复杂系统与多类型相互作用的实体,可以被视为异构网络,包括人类连接和生物进化.这类网络的主要问题之一是预测信 ...

最新文章

  1. Unbuntu18.04通过apt源方式安装mysql5.7.22
  2. HDOJ 2015 偶数求和 解题报告
  3. springboot-数据访问
  4. MySQL性能的五大配置参数(内存参数)
  5. dj鲜生-20-模版的抽离-base父模板的生产
  6. 系统优化的方法有哪些
  7. 浅谈 OpenResty
  8. bzoj千题计划269:bzoj2655: calc (拉格朗日插值)
  9. dbeaver查看执行计划_SAP学习基础篇(52):PP模块-物料需求计划
  10. Ubuntu19.04 创建桌面快捷方式
  11. 业务侧-到底应该怎么做A/Btest
  12. 计算机制图员主要学什么,制图员
  13. 001、【C语言编程题目】猴子吃桃问题
  14. java面试题大全2
  15. C# 图形处理-缩略图,图片合并,图片写文字,图片调整
  16. android获取固定uuid,Android获取本机唯一序列号和可变UUID方法
  17. 翻译: 深入深度学习 2.3. 线性代数 pytorch
  18. 官网下载 Vivado
  19. 华为od-检测热点字符
  20. unity脚本控制逐渐消失_Unity实现只狼弹反后处理效果

热门文章

  1. Android基础——JSON数据的全方位解析
  2. CP56time2a时标格式说明
  3. 一文读懂什么是软件供应链安全
  4. 通达OA 精灵登录时提示“库没有注册”(图文)
  5. 晚上学习效率太低怎么办?
  6. netcore部署docker,在图片处理时有乱码或者The type initializer for ‘Gdip‘ throw an exception异常
  7. MySQL + MGR学习培训计划
  8. python 计算给定日期是该年的第几天数
  9. 高通+android笔记本电脑,华为发布三款笔记本电脑,其中一款搭载高通骁龙850处理器...
  10. 指针进阶·八道笔试题(四)