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

m基于模糊控制的网络时延预测和丢包率matlab仿真

时间:2023/2/9 21:04:38 点击:

  核心提示:12_012_m,包括程序操作录像+说明文档...

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

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

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

点击店铺

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

2.部分仿真图预览





3.算法概述

        涉及到具体的数据包大小以及时间延迟,我们通过构建一个FIFO,来虚拟网络的实际工作情况,当空闲情况下,网络流量非常小,我们的数据通过FIFO,会在FIFO内排队,等候前面的数据传输出去后,再发送出去,在FIFO中等候时间为30~60ms,小于发送间隔,因此,不会发生堵塞,而当网络比较拥堵的情况下,那么FIFO中包含了大量的网络背景流量,那么当前数据发送出去的时候,就会在FIFO内等候,这个等候时间往往120ms到180ms之间,当时间过了100ms,此时,第二个数据发送过来饿了,如果此时FIFO已经满了,那么就会发送丢包(FIFO满,则说明网络负荷达到极限,进入的数据全部丢失)。另外,在等候时间中,数据会以一个随机的小概率丢包,那么等候时间越长,丢包的概率就越大。然后假设FIFO中每次数据的流量的时间长度为1ms,如果等候时间为100ms,则说明拥堵在当前数据前的背景流量有100kb通过这个原理我们来进行仿真实现,FIFO的深度大小,反应了实际网络的传输能力。下面我们首先对原始的传输方法进行仿真。

4.部分源码

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

%注入背景流量,使得网络进入拥塞状态,即网络时延明显变大,时延抖动加剧,

%空闲状态下时延值要求在30~60ms,拥塞状态下要求在120~180ms,我们要对比的区间就是在拥塞状态下。

MTKL = 100;%蒙特卡洛循环次数

DBL1 = cell(1,MTKL);

for jj = 1:MTKL

    jj

    rng(jj)

    DBL2        = [];    

    %即能够存放1000kB数据量

    ability     = 4.3;%网络(FIFO)1ms内传输能力

    FIFO_Depth  = 200;

    bg_Size     = zeros(1,Times);

    pg_Size     = zeros(1,Times);

    FIFO_Size   = FIFO_Depth*ones(1,Times);

    DB          = 0;%定义丢包次数

    ALL         = 0;%总发送次数

    for i  = 1:Times

        %发送数据包,原始传输方法,每100ms发送一次

        if mod(i,100) == 1

           pg_Size(i)  = Pg_Size_sub;

           ALL         = ALL +1;

        else

           pg_Size(i)  = 0; 

        end    

        %建立一个虚拟的FIFO,当网络空闲的时候,数据包通过这个FIFO需要 

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

        %计算当前环境下的丢包变换曲线并显示最后的丢包率值

        DBL2(ALL) = DB/ALL;

    end

    DBL1{jj}  = DBL2;

    Lens(jj)  = ALL;

end

 

%计算均值

DBLavg = zeros(1,min(Lens));

for i = 1:min(Lens)

    tmps = 0;

    for jj = 1:MTKL

        tmps = tmps + DBL1{jj}(i);

    end

    DBLavg(i) = tmps/MTKL;

end

 

figure;

plot(FIFO_Size);

xlabel('时间(ms)');

ylabel('网络流量承载能力变换情况');

grid on

 

 

figure;

subplot(211);

plot(100*DBLavg,'-bs',...

    'LineWidth',2,...

    'MarkerSize',8,...

    'MarkerEdgeColor','k',...

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

xlabel('发送次数');

ylabel('丢包率');

grid on

STR = ['最终丢包率:',num2str(100*DBLavg(end)),'%'];

text(length(DBLavg)/2,70,STR);

axis([0,length(DBL2),0,100]);

ind = find(pg_Size>0);

Len = length(ind);

subplot(212)

plot(pg_Size(1:(Len-1)*100),'b-o');

axis([0,1500,0,3]);

xlabel('times');

ylabel('发送数据包大小');

grid on

12_012_m

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