m基于WDM网络的波长分配算法matlab仿真

Posted 51matlab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了m基于WDM网络的波长分配算法matlab仿真相关的知识,希望对你有一定的参考价值。

1.算法仿真效果

matlab2022a仿真结果如下:

 

 

 

 

 

 

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

       波分复用WDM(Wavelength Division Multiplexing)是将两种或多种不同波长的光载波信号(携带各种信息)在发送端经复用器(亦称合波器,Multiplexer)汇合在一起,并耦合到光线路的同一根光纤中进行传输的技术;在接收端,经解复用器(亦称分波器或称去复用器,Demultiplexer)将各种波长的光载波分离,然后由光接收机作进一步处理以恢复原信号。这种在同一根光纤中同时传输两个或众多不同波长光信号的技术,称为波分复用。

 

       波分复用是利用多个激光器在单条光纤上同时发送多束不同波长激光的技术。每个信号经过数据(文本、语音、视频等)调制后都在它独有的色带内传输。WDM能使电话公司和其他运营商的现有光纤基础设施容量大增。制造商已推出了WDM系统,也叫DWDM(密集波分复用)系统。DWDM可以支持150多束不同波长的光波同时传输,每束光波最高达到10Gb/s的数据传输率。这种系统能在一条比头发丝还细的光缆上提供超过1Tb/s的数据传输率光通信是由光来运载信号进行传输的方式。在光通信领域,人们习惯按波长而不是按频率来命名。因此,所谓的波分复用(WDMWavelength Division Multiplexing)其本质上也是频分复用而已。WDM是在1根光纤上承载多个波长(信道)系统,将1根光纤转换为多条“虚拟”纤,当然每条虚拟纤独立工作在不同波长上,这样极大地提高了光纤的传输容量。由于WDM系统技术的经济性与有效性,使之成为当前光纤通信网络扩容的主要手段。波分复用技术作为一种系统概念,通常有3种复用方式,即1 310 nm1 550 nm波长的波分复用、稀疏波分复用(CWDMCoarse Wavelength Division Multiplexing)和密集波分复用(DWDMDense Wavelength Division Multiplexing)[1]

 

       波分复用(WDMwavelength division multiplexing)光传送网由一组通过光纤互连的交换节点构成。波分复用和光交叉连接(OXCoptical cross-connect)技术的发展使网络具有更大的带宽和灵活性。利用WDM 技术,多个用户能够使用同一根光纤中的不同信道(即波长)同时传输数据。节点中配置的OXC 可以动态设置,它能够将任一输入端口(光纤)某个波长上的数据交换输出到指定输出端口的同一波长上。从而可在节点对间建立端到端的信道——光路(optical path)。由于一条光路必须使用同一波长,这将导致波长资源利用率的下降。采用波长分配和选路的WDM 光传送网被认为是下一代高速广域骨干网的最有竞争力的候选者。

 

       采用 WDM 技术,单根光纤的总传输速率已能达到Tbit/s 级,而一条光缆中的光纤数也超过了1000 [3]WDM 光网研究的重要目标之一是,充分利用波长/光纤资源,以使网络性能达到最优。选路和波长分配(RAWrouting and assignment of wavelength)问题所研究的内容是,给定一组节点间的全光连接(光路/连接建立)请求:(1)寻找从源节点到目的节点的路由;(2)在这些路由上分配波长。如果分析模型中研究的是动态业务(连接建立请求随机到达和离开网络),则称相应的RAW 问题为动态RAW 问题。研究动态RAW 问题时,常用的性能指标是光路的阻塞率。从总体上看,RAW 问题中的选路和波长分配是一个不可分割的问题。但是,仅仅其中的波长分配问题就是一个NP-C(非确定型的多项式算法-完全)问题,要在合理的运算时间内解决大型网络的RAW 问题常常是不可能的。通常的解决办法是,将RAW 问题强行拆成两个独立的选路子问题和波长分配子问题,分别加以解决。

 

三个算法的主要公式为:

 

RLI

 

 

 

RCL

 

 

 

MS

 

 

 

        相对于RLI算法,MS算法的区别是计算出除了p1以外的其他所有通路p在某波长lemda上的降低的可用信道数的总和,用这个来描述新光路的建立对全网状态的影响。但是这种个算法没有考虑p1的可用信道数的下降。而RCI算法,由于不论选择哪条可用波长,p1 的对应的rCL 为一定值,所以RCL 算法也不考虑对p1 的影响

 

3.MATLAB核心程序

 

%%
%参数初始化
%定义负载
Loads   = [1000:200:10000];
NOF_RLI = zeros(length(Loads),1); 
NOF_RCL = zeros(length(Loads),1);
NOF_MS  = zeros(length(Loads),1);
IMF_RLI = zeros(length(Loads),1);
IMF_RCL = zeros(length(Loads),1);
%每根光纤都能支持W个波长
W       = 8;
%每条链路上有F根光纤
F       = 16;
Times   = 10;
 
%%
%RLI
%RLI
for i = 1:length(Loads)
    i
    NOF_MS(i) = func_MS(W,F,Loads(i),Times);
end
 
%%
%RLI
%RLI
for i = 1:length(Loads)
    i
    NOF_RLI(i) = func_RLI(W,F,Loads(i),Times);
end
 
%%
%RCL
%RCL
for i = 1:length(Loads)
    i
    NOF_RCL(i) = func_RCL(W,F,Loads(i),Times);
end
 
for i = 1:length(Loads)
    i
    IMF_RLI(i) = (NOF_MS(i)-NOF_RLI(i))/NOF_MS(i);
    IMF_RCL(i) = (NOF_MS(i)-NOF_RCL(i))/NOF_MS(i);
end
%%
figure;
plot(Loads,IMF_RLI,\'b-*\');
hold on;
plot(Loads,IMF_RCL,\'k-o\');
hold off;
legend(\'RLI-MS\',\'RCL-MS\');
xlabel(\'负载\');
ylabel(\'IMP\');
axis([Loads(1),Loads(end),0,1]);
grid on

 

  

 

基于5G密集网络模型的资源分配和负载均衡算法matlab仿真

目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

首先,5G模型的基本结构如下所示:

 

        超密集网络是5G通信系统中的重要技术,是现在通信界的研究热点。系统中的每个小小区都是正交频分多址系统,共有TV个小小区,每个小小区使用个OFDMA子载波,信道增益为G。根据其结构图可知,当然超密集网络由大量小小区部署,小小区是低功率无线接入节点,工作在授权的频谱,而宏基站的覆盖范围可达数公里。

        由于5G超秘籍网络中,由于存在较多的基站,因此存在多个基站对某个用户的进行共同资源分配的情况,这种情况下,如果多个基站对某个用户进行资源分配,其遵循的原则如下所示:

    以2个基站和1个用户为例子,当2个基站同时对一个用户资源配置,基站采用平均方式给用户自己分配,即多个基站分配出相同的资源给用户进行使用。定义了一个网络效益函数,然后多于多基站分配的问题,在分配过程中,以网络效益最大值为目标进行分配,通过优化算法进行不断的迭代更新,使得网络效益函数最大,此时对应的分配结果即为最优分配结果。

对于资源分配部分,目标函数为:

       表示Nbs个基站,Nuser个用户总的吞吐量。该优化目标的含义是当进行最优的资源分配的时候,系统的整体吞吐量将达到最大。以此函数为优化目标函数。

      对于负载均衡,原来采用的是基于MAX-SINR负载均衡算法,由于负载均衡和资源配置之间是相关的。所以这里采用的改进方案如下所示:

      这里,我们以负载均衡指标为优化目标,即:

 这里,loadi表示的是

N表示基站个数和各个基站内用户个数的乘积,

根据上面的两个目标,我们可以定义如下的优化目标:

 两个权值均设置为0.5即可。

通过这个多目标的优化函数,进行遗传优化,我们的优化算法实现过程如下所示:

二、核心程序

.............................................................
%模拟两个基站的情况
Nbs      = 4;
%用户个数Nbs个小小区,每个小小区使用K个OFDMA子载波
Nuser    = 64;%设置64,128,256等幂次方,或者较大的数据,否则报错或者结果不符合实际情况
%仿真信噪比
SNRs     =[2:2:20];

%以下是5G系统,使用的OFDM+OQAM调制方式发送和接收数据的相关参数
%信号发送功率
Pow      = 1;
%噪声功率
Pnoise   = Pow./10.^(SNRs./10); 
%总的功率
Pt       = Pow*Nuser.*(1+rand(1,Nbs)); %模拟不同基站之间的差异
%数据发送速率
Rb       = 10e6;
%采样率
Nsamp    = 8;
%每个OFDM符号对应的bit数
Rt       = 256;
%信号带宽
Bw       = 5e6;
%每个子载波带宽
Bw_sub   = Bw/Nuser; 
%OFDM保护带长度
Lgi      = 8;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%5G信道相关参数
%多径时延
Mdelay   = 2;
%最大多径时延
Mdelay2  = 16;
%多径个数
Nmulti   = 4;

%误码率;main1.m-------------------------------------------------
%不同用户数量对应的系统吞吐量;main2.m
%资源分配指数对比:CDF-SINR;main3.m
%负载均衡指数对比:LBI;main4.m
Error1   = zeros(length(SNRs),Nbs);
%误码率统计长度
Nums     = 500;
SEL      = ones(1,Nbs);

for ii=1:length(SNRs)

    %信道估计
    %负载均衡初始状态计算
    for ij = 1:Nbs
        %不同基站,其和用户之间的信号会有差异
        [path_delay,path_amp] = func_Multipath(Mdelay,Mdelay2,Nmulti,ij);
        %信道估计
        [Hest,Channel_p]      = func_Channel_est(path_delay,path_amp,Nuser);
        %计算每个用户对应的SINR
        for nn = 1:Nuser
            %SEL表示基站开关
            A        = sum(Pt(ij)*abs(Hest));
            B        = Pnoise(ii)*Bw;
            SINR(nn) = Pt(ij)*abs(Hest(nn))/(A+B);
        end
        %Rate,每个用户的速率
        for nn = 1:Nuser
            Rate(nn) = Bw*log2(1+SINR(nn));
        end
 
        Max_sinr(ij) = max(SINR);
        Max_Rate(ij) = max(Rate);
    end
    Max_Rate=Max_Rate/max(Max_Rate);
    %产生5G密集网络的多径信道
    for ij = 1:Nbs
        %不同基站,其和用户之间的信号会有差异
        [path_delay,path_amp] = func_Multipath(Mdelay,Mdelay2,Nmulti,ij);
        %信道估计
        [Hest,Channel_p]      = func_Channel_est(path_delay,path_amp,Nuser);
        gain_subc             = abs(Hest);
        Err                   = 0;
        for jj=1:Nums
            rng(ii*jj)
            jj
            ii
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            %以下为一个完整的5G信号由基站发送给用户的通信流程
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            %产生随机数据信息
            Tsignal           = randint(1,Rt);
            %首先进行资源分配
            [Sub_bit0,Sub_pw0]= func_chow(Nuser,gain_subc,Rt,Pnoise(ii),Pt(ij));
            %将负载高的基站业务,部分转移到负载低的基站上
            [Sub_bit,Sub_pw]  = func_maxsinr_loadbalance(Sub_bit0,Sub_pw0,Max_Rate(ij));
            
            %串并处理
            Tsignal_S2P      = func_S2P(Tsignal,Sub_bit,Nsamp);
            %基于OFDM+OQAM的5G密集网络调制处理过程
            Tsignal_QAM      = func_OQAM_mod(Tsignal_S2P,Sub_pw,Sub_bit);
            Tsignal_IFFT     = sqrt(Nuser).*ifft(Tsignal_QAM);
            Tsignal_GI       = func_GI_insert(Tsignal_IFFT,Lgi);
            %通过信道
            Tsignal_multi    = func_add_multipath(Tsignal_GI,Channel_p);
            Tsignal_AWGN     = awgn(Tsignal_multi,SNRs(ii),'measured');
            %开始接收信号
            %OFDM+OQAM解调
            Rsignal_noGI     = Tsignal_AWGN(Lgi+1:length(Tsignal_AWGN));
            Rsignal_FFT      = 1/sqrt(Nuser).*fft(Rsignal_noGI);
            Rsignal_est      = func_Rest(Rsignal_FFT,Hest);
            Rsignal_QAM      = func_OQAM_demod(Rsignal_est,Sub_bit,Sub_pw,Nsamp);
            %并串处理
            Rsignal_P2S      = func_P2S(Rsignal_QAM,Sub_bit,Rt);
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
            %统计当前发送的误码率
            [Ber_rate,Ber_num]=func_ber(Tsignal,Rsignal_P2S);
            Err=Err+Ber_rate;
        end
        Error1(ii,ij)=Err/Nums;
    end
end

figure;
semilogy(SNRs,mean(Error1,2),'b-s');
grid on;
xlabel('SNR');
ylabel('ber');
save old_error.mat SNRs Error1
A01-141

三、测试结果

以上是关于m基于WDM网络的波长分配算法matlab仿真的主要内容,如果未能解决你的问题,请参考以下文章

基于5G密集网络模型的资源分配和负载均衡算法matlab仿真

m基于神经网络的飞机垂直尾翼振动主动控制系统matlab仿真,包括系统辨识和在线控制

m基于rbf神经网络和遗传算法优化的MIMO-OFDM系统信道估计算法matlab仿真

m基于神经网络预测模型的室内温度调节控制系统matlab仿真

中继功率分配基于MATLAB的中继功率分配算法仿真

m基于神经网络的飞机垂直尾翼振动主动控制系统matlab仿真,包括系统辨识和在线控制