目次
1. アルゴリズムシミュレーション効果
matlab2022a のシミュレーション結果は次のとおりです。
2. アルゴリズムには理論的知識の概要が含まれます
NB-IoT は、低消費電力、低コスト、大容量、広いカバレッジを実現できる新興の低電力広域 IoT (LPWAN) 通信テクノロジーであり、IoT アプリケーション シナリオに適しています。NB-IoTネットワークでは、IoTデバイスの数が多く、通信頻度が低く、データ量が少ないため、リソースの割り当てが重要な課題となります。したがって、NB-IoTネットワークのリソース利用効率と通信品質を向上させるためには、NB-IoTネットワークに適したリソース割り当て最適化アルゴリズムを設計する必要があります。
SWAP(Sleep-Work-Active-Power)とは、NB-IoTネットワークに適したリソース管理戦略であり、デバイスのスリープ、ワーク、アクティブ状態を切り替えることで省エネルギーと通信品質保証を実現します。スリープ状態では、デバイスは最小限のエネルギー消費のみを維持するため、デバイスの寿命を大幅に延ばすことができます。動作状態では、デバイスはデータの収集と送信を行います。アクティブ状態では、デバイスは高負荷のためにより多くのリソースを占有します。 - 高速データ伝送。SWAP戦略はデバイスの消費電力と通信品質のバランスをとることができるため、NB-IoTネットワークに適したリソース管理戦略となります。
NB-IoT ネットワークにおけるリソース割り当ての主な問題は、限られたリソースの下で合理的なスケジューリング戦略を通じて IoT デバイスの通信ニーズを満たす方法です。この問題を解決するには、SWAP ベースのリソース割り当て最適化アルゴリズムを使用して、スリープ、作業、アクティブ状態の間の合理的な切り替えを通じて、NB-IoT ネットワークのリソース利用効率と通信品質を向上させることができます。
SWAP に基づくリソース割り当て最適化アルゴリズムには、主に次の手順が含まれます。
デバイス状態スイッチング戦略の設計: NB-IoT ネットワーク内のデバイスの特性に応じて、合理的なデバイス状態スイッチング戦略を設計できます。通常、デバイスは初期状態ではスリープ状態にありますが、センサー データを収集する必要がある場合、デバイスはデータの収集と送信を行う動作状態に切り替わり、データの送信が完了すると、デバイスは通常のスリープ状態に戻ります。エネルギーを節約するためのスリープ状態。デバイスが高速データ送信を実行する必要がある場合、デバイスはアクティブ状態に切り替わり、データ送信により多くのリソースを占有します。
リソース割り当てアルゴリズムの設計: 機器の状態切り替え戦略に従って、合理的なリソース割り当てアルゴリズムを設計します。一般に、リソース割り当てアルゴリズムでは、デバイスの通信要件、ネットワークの混雑、デバイスの電力などの要素を考慮する必要があります。これらの要素を総合的に考慮することで、エネルギー消費と通信品質のバランスをとったリソース割り当てアルゴリズムを設計できます。
リソース割り当て戦略の実装: NB-IoT ネットワークでは、リソース割り当て戦略の実装では、ネットワークの混雑、デバイスのステータス、電力消費などの要因を考慮する必要があります。一般に、リソース割り当てポリシーは動的な調整方法で実装できます。具体的には、ネットワークが混雑している場合は、デバイスの状態を調整してネットワークの混雑を軽減することでデバイスのデータ送信速度を下げることができ、デバイスの電力が低い場合は、デバイスのサンプリング周波数を下げることでエネルギーを節約できます。またはデバイスをスリープ状態に切り替えます。
アルゴリズムの評価と最適化: アルゴリズムのパフォーマンスを評価するには、特定の評価指標を採用する必要があります。一般に、エネルギー消費量や通信品質などの指標を使用して、アルゴリズムのパフォーマンスを評価できます。アルゴリズムのパフォーマンスが十分でない場合は、アルゴリズムの設計と実装を最適化することでアルゴリズムのパフォーマンスを向上させることができます。
要約すると、SWAP に基づくリソース割り当て最適化アルゴリズムは、NB-IoT ネットワークのリソース利用効率と通信品質を向上させることができます。実際のアプリケーションでは、最適な通信効果とエネルギー消費を達成するために、特定のアプリケーション シナリオとデバイス特性に従って合理的なリソース割り当てアルゴリズムと戦略を設計する必要があります。
3. MATLABコアプログラム
.......................................................................
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
4. 完全なアルゴリズム コード ファイル
V