1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJiYkpht
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
异构网络垂直切换是指在不同的移动通信网络之间进行快速自适应切换的技术。在异构网络中,不同类型的网络可能具有不同的带宽、延迟、信号强度等性能指标,因此在不同的应用场景下,需要采用不同的网络来实现最佳的通信效果。异构网络垂直切换技术可以通过多属性决策判决算法来实现。多属性决策判决算法是一种能够将多个属性的权重考虑进来,从而得出一个最优的决策结果的决策分析方法。在异构网络垂直切换中,多属性决策判决算法可以用来确定何时进行网络切换以及切换到哪个网络。
4.部分源码
..................................................................................
for iii = 1:length(Sp_ms)
for iii2 = 1:STime%各种速度仿真STime次,计算平均
[iii,iii2]
t = 0;
%数组计数器
Ind = 0;
Ind2 = 0;
tmp1 = 1;
tmp2 = 1;
Q1 = [];
while (t < Time-delta )
%计算时间
t = t + delta*Sp_ms(iii);
Ind = Ind + Sp_ms(iii);
Ind2 = Ind2 + 1;
for Nj = 1:NUE
%根据坐标位置,得到MB的当前区域,在一个小范围内,进行仿真,
if Ind2 == 1
Xp = 200*randn(1,1)+220;
Yp = 0;
else
Xp = Xp + Sp_ms(iii);
Yp = 0;
end
ddd = sqrt((Xp - P_wla(1))^2 + (Yp - P_wla(2))^2);
if ddd >= 400
Xp = 200*randn(1,1)+220;
Yp = 0;
else
Xp = Xp;
Yp = 0;
end
%根据不同的区域,确定有几个网络
ID(:,Nj) = func_NET_ID(Xp,Yp,P_wla,P_lte,R_wla,R_lte);
%计算RSRP值
RSRP_wla(Nj) = func_Rsrp_cal(Xp,Yp,Sp_ms(iii),P_wla,F_wla,t,Pow_wla,ISFAST);
RSRP_lte(Nj) = func_Rsrp_cal(Xp,Yp,Sp_ms(iii),P_lte,F_lte,t,Pow_lte,ISFAST);
end
%===========================================================================
%定义一个业务矩阵,我们认为时延最重要
%接收功率、最大的传输速率、时延、费用价格
C=[1 5 1/7 3;
1/5 1 1/3 1/2;
7 3 1 2;
1/3 2 1/2 1];
%计算权值W
for i = 1:4
w2(i) = (C(i,1)*C(i,2)* C(i,3)* C(i,4))^0.25;
end
for i = 1:4
w(i) = w2(i)/sum(w2);
end
w1 = w(1);
w2 = w(2);
w3 = w(3);
w4 = w(4);
%计算网络贡献权值由上面的分层法计算得到
%接收功率、最大的传输速率、时延、费用价格
for Nj = 1:NUE
%将功率dbm转换为标准功率w
PP_wla(Nj) = 10^(RSRP_wla(Nj)/20);
PP_lte(Nj) = 10^(RSRP_lte(Nj)/20);
%构成矩阵,并规划化
Rs = [PP_wla(Nj),Rb_wla,DLY_wla,MNY_wla;
PP_lte(Nj),Rb_lte,DLY_lte,MNY_lte];
[r,c] = size(Rs);
for j = 1:c
Mins = min(Rs(:,j));
Maxs = max(Rs(:,j));
for i = 1:r
R(i,j) = (Rs(i,j)-Mins)/(Maxs);
end
end
if ID(:,Nj) == [1,0]'
Networkcontribution_wla(Nj) = w1*R(1,1) + w2*R(1,2) + w3*R(1,3) + w4*R(1,4);
Networkcontribution_lte(Nj) = 0;
elseif ID(:,Nj) == [0,2]'
Networkcontribution_wla(Nj) = 0;
Networkcontribution_lte(Nj) = w1*R(2,1) + w2*R(2,2) + w3*R(2,3) + w4*R(2,4);
elseif ID(:,Nj) == [1,2]'
Networkcontribution_wla(Nj) = w1*R(1,1) + w2*R(1,2) + w3*R(1,3) + w4*R(1,4);
Networkcontribution_lte(Nj) = w1*R(2,1) + w2*R(2,2) + w3*R(2,3) + w4*R(2,4);
else
Networkcontribution_wla(Nj) = 0;
Networkcontribution_lte(Nj) = 0;
end
end
%初始化UE驻留网络,根据RSRP值,来初始化驻留小区网络
if Ind2 <= 1
for Nj = 1:NUE
[V,I] = max([Networkcontribution_wla(Nj),Networkcontribution_lte(Nj)]);
USER_SPACE(Ind2,Nj) = I;
end
UE_Spec_NET(Ind2) = USER_SPACE(Ind2,UE_Spec);
else
%STEP1:检查当前网络是否处于重负载状态
%计算各个网络中用户个数
tmps = USER_SPACE(Ind2-1,:);
Num_wla = length(find(tmps == 1));
Num_lte = length(find(tmps == 2));
%指定分析用户将要切入的网络
UE_Spec_ID = USER_SPACE(Ind2,UE_Spec);
isfull = 0;%初始,小区没有饱和
%判断该小区是否满负荷
if UE_Spec_ID == 1
if Num_wla >= Nfull_wla;isfull = 1;else;isfull = 0; end;
end
if UE_Spec_ID == 2
if Num_lte >= Nfull_lte;isfull = 1;else;isfull = 0; end;
end
%如果否,则接纳该用户,即可以进行接纳其接入,即可以垂直切换
if isfull == 0
[V2,I2] = max([Networkcontribution_wla(UE_Spec),Networkcontribution_lte(UE_Spec)]);
UE_Spec_NET(Ind2) = I2;
else
%如果是,系统检查当前网络是否有可用容量
UE_Spec_ID = USER_SPACE(Ind2-1,UE_Spec);
isfull2 = 0;%初始,小区没有饱和
%判断该小区是否满负荷
if UE_Spec_ID == 1
if Num_wla >= Nfull_wla;isfull2 = 1;else;isfull2 = 0; end;
end
if UE_Spec_ID == 2
if Num_lte >= Nfull_lte;isfull2 = 1;else;isfull2 = 0; end;
end
if isfull2 == 1%如果没有,则拒绝该用户的接入请求
UE_Spec_NET(Ind2) = -inf;%负无穷,表示拒绝接入
else
UE_Spec_NET(Ind2) = UE_Spec_NET(Ind2-1);
end
end
end
.............................................................................
end
end
N1(iii) = mean(Q1);
end
figure;
plot(Sp_ms,N1,'-bs',...
'LineWidth',1,...
'MarkerSize',6,...
'MarkerEdgeColor','k',...
'MarkerFaceColor',[0.9,0.0,0.0]);
xlabel('Speed');
ylabel('网络吞吐量');
grid on;
legend('RSRP切换算法');
save R1b.mat Sp_ms N1
12_051_m