m基于多属性决策判决算法的异构网络垂直切换matlab性能仿真,对比网络吞吐量,网络负载,平均切换次数,阻塞率,回报值

发布时间 2023-06-25 22:47:32作者: 我爱C编程

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

 

 

2.算法涉及理论知识概要

       异构网络垂直切换是指在不同的移动通信网络之间进行快速自适应切换的技术。在异构网络中,不同类型的网络可能具有不同的带宽、延迟、信号强度等性能指标,因此在不同的应用场景下,需要采用不同的网络来实现最佳的通信效果。异构网络垂直切换技术可以通过多属性决策判决算法来实现。多属性决策判决算法是一种能够将多个属性的权重考虑进来,从而得出一个最优的决策结果的决策分析方法。在异构网络垂直切换中,多属性决策判决算法可以用来确定何时进行网络切换以及切换到哪个网络。

 

异构网络垂直切换的过程通常包括以下几个步骤:

       数据采集:在每个网络中收集一些关于网络性能的数据,例如延迟、带宽、信号强度等。

       属性权重确定:确定每个属性的相对重要性,这通常需要依据具体的应用场景和用户需求来确定。

       属性归一化:将各属性值转化为01之间的数值,方便进行比较和决策。

       属性评估:将各属性值进行综合评估,得到一个综合评分,用来表示当前网络的性能。

       决策判定:基于综合评分和属性权重,采用多属性决策判决算法计算出最佳网络,并进行切换。

       在异构网络垂直切换中,根据具体的应用场景和用户需求,可以选择不同的判定算法和权重系数来实现最佳的切换效果。

多属性决策判决算法

      多属性决策判决算法是一种常用的决策分析方法,它可以将多个属性的权重考虑进来,从而得出一个最优的决策结果。在异构网络垂直切换中,多属性决策判决算法可以用来确定何时进行网络切换以及切换到哪个网络。

      在多属性决策判决算法中,每个属性都有一个相对权重,这个权重通常取决于属性的重要性。在异构网络垂直切换中,属性可能包括延迟、带宽、信号强度等指标。

       假设有n个属性,每个属性的权重为w1, w2, ..., wn,对应的属性值为x1, x2, ..., xn,那么综合评分可以表示为:

Score = w1*x1 + w2*x2 + ... + wn*xn

其中,Score表示综合评分,wi表示第i个属性的权重,xi表示第i个属性的数值。

        在异构网络垂直切换中,综合评分可以用来表示当前网络的性能,从而确定是否需要进行切换。

       GSMTDSLTE网络的垂直切换

       GSMTDSLTE等异构网络中,垂直切换通常需要考虑延迟、带宽、信号强度等多个属性。下面我们将逐一介绍这些属性在切换中的应用。

 

延迟

      延迟是指数据从源到目的地所需的时间,也称为网络延迟或传输延迟。在移动通信网络中,延迟通常由以下因素造成:

信号传输的时间;

       数据包在传输过程中需要经过的路由器的数量;数据包在路由器中的缓存时间。

      在移动通信中,延迟是一个非常重要的性能指标。如果延迟过高,就会出现视频卡顿、语音延迟等问题。因此,在切换时,需要考虑延迟的大小。

      GSMTDSLTE等网络中,延迟通常以毫秒为单位进行测量。延迟越小,网络响应速度就越快,用户体验就越好。在垂直切换中,可以通过将延迟作为一个属性,将其归一化后,加入到多属性决策判决算法中,以确定最佳网络。

带宽

       带宽是指网络中可用的传输速率,也称为网络速度。在移动通信网络中,带宽通常受到以下因素的影响:

       在移动通信中,带宽是一个非常重要的性能指标。如果带宽过低,就会出现视频卡顿、语音断续等问题。因此,在切换时,需要考虑带宽的大小。

 

3.MATLAB核心程序

 

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