您现在的位置:首页 >> 网络协议 >> 内容

m基于NB-IoT网络的SWAP资源分配优化算法matlab仿真

时间:2023/5/11 22:46:10 点击:

  核心提示:12_054_m,包括程序操作录像+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJiclJxv

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

      SWAP(Sleep-Work-Active-Power)是一种适用于NB-IoT网络的资源管理策略,它通过设备的睡眠、工作和活跃三种状态的切换来实现能量的节约和通信质量的保证。在睡眠状态下,设备仅仅保持最小的能量消耗,可以大大延长设备的寿命;在工作状态下,设备会进行数据采集和传输;在活跃状态下,设备会占用更多的资源进行高速的数据传输。SWAP策略可以平衡设备的能量消耗和通信质量,因此成为了一种适合NB-IoT网络的资源管理策略。

4.部分源码

.......................................................................

figure;

load GS\R2.mat

plot(N2,SUCC,'-bs',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.0,0.0]);

hold on

load SWAP\R2.mat

plot(N2,SUCC,'-r>',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.9,0.0]);

hold on

legend('GS','SWAP');

xlabel('UE数量');

ylabel('连接成功率');

grid on

 

ylim([0.1,1]);

 

 

 

figure;

load GS\R3.mat

plot(M2,SUCC,'-bs',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.0,0.0]);

hold on

load SWAP\R3.mat

plot(M2,SUCC,'-r>',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.9,0.0]);

hold on

legend('GS','SWAP');

xlabel('Num of channels');

ylabel('连接成功率');

grid on

 

 

 

figure;

load SWAP\R1.mat

plot(P2,'-bs',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.0,0.0]);

hold on

load GS\R1.mat

plot(P2,'-r>',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.9,0.0]);

hold on

xlabel('时间段');

ylabel('各个时段频谱占用率');

grid on

legend(['SWAP频谱占用率:',num2str(mean(P2))],['GS频谱占用率:',num2str(mean(P2))]);

 

 

 

figure;

subplot(121)

load GS\R1.mat

bar3(Nbt2);

xlabel('各个时段');

ylabel('各个频段');

zlabel('服务用户数量');

title(['GS']);

 

 

subplot(122)

load SWAP\R1.mat

bar3(Nbt2);

xlabel('各个时段');

ylabel('各个频段');

zlabel('服务用户数量');

title(['SWAP']);

 

 

..............................................................................

 

    %提出最偏好的RB 

    UEn    = [];

    UEn    = find(UNMATCH==0);

    best   = [];

    for i = 1:length(UEn)

        best(i) = UELIST(UEn(i));%重新计算偏好列表 

    end

    %SWAP

    %GA得到的初始匹配状态

    bestf=best;

    %初始化列表?记录当前每一个资源块已匹配的用户设备数目

    Q = [];

    for i=1:M

        Q(i)=length(find(bestf==i)); 

    end

    for n = 1:N

        %表示资源块中可获得的空位置

        for n_ = 1:N

            %表示资源块中可获得的空位置

            if n~=n_

               l = UNMATCH(n);

               l_= UNMATCH(n_);

               %满足(3.7a)~(3.7h) %c,d和f本身就是设置0和1了,所以不用重复判决

               if t>=0 & t<=T-1 & t+Nr<=T & sum(RB)<=qmax;

                  %更新匹配状态

                  UNMATCH(n)=l_;

               end

            end

        end

    end

    idxf  = find(UNMATCH==1);

    bestf = [];

    for i = 1:length(idxf)

        bestf(i) = UELIST(idxf(i));%重新计算偏好列表 

    end

    

    

    %显示要求的两个指标

    for ij = 1:M

        tmps = find(bestf==ij);

        %设置成功率

        Perf = rand;

        Nbt(ij,jj,mk) = round(Perf*length(tmps));

    end

    P(jj,mk) = length(unique(Nbt(:,jj,mk)))/M;

end

end

P2  = zeros(T,1);

for mk = 1:MTKL

    Nbt2 = Nbt2+Nbt(:,:,mk);

    P2   = P2+P(:,mk);

end

Nbt2 = Nbt2/MTKL;

P2   = P2/MTKL;

 

 

 

% %输出则是各个频段在不同时间段的服务用户初始化定义

% Nbt = zeros(M,T);

% %整个频谱的利用率,这里按时段划分,计算每个时段的整体利用率,并输出整体的平均领用率

% P   = zeros(1,T);

 

figure;

plot(P2,'b-o');

xlabel('时间段');

ylabel('各个时段频谱利用率');

grid on

title(['整体频谱利用率:',num2str(mean(P2))]);

 

figure;

bar3(Nbt2);

xlabel('各个时段');

ylabel('各个频段');

zlabel('服务用户数量');

save R1.mat Nbt2 P2

12_054_m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168