欢迎来到天天文库
浏览记录
ID:37133650
大小:1.55 MB
页数:18页
时间:2019-05-18
《北邮erlangB计算器实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、-实验二:ErlangB公式计算器实验报告学院:信息与通信工程学院班级:姓名:学号:--一、实验目的ErlangB公式通信网理论基础这门课程的学习重点之一,其表达了电话交换系统的时间阻塞率B(s,a)与到达的呼叫量a以及中继线的数目s之间的关系,为电话网络的规划和中继线容量配置奠定了基础。本次实验要求用计算机语言编写ErlangB公式计算器,实现给定任意两个变量求解第三个变量的功能,使学生掌握ErlangB公式的计算方法,培养数值分析计算与算法设计能力。二、实验原理Erlang即时拒绝系统用于建模电话交换系统,设电话呼叫流的到来服从Poisson过程,λ为呼叫的到达率,呼叫的持续时
2、间服从参数μ的负指数分布。系统有s条中继线,呼叫到来时,如系统中有空闲的中继线,则呼叫可到达任意一个空闲的中继线,如果没有空闲的中继线,就拒绝该呼叫。在这样的情况下,该交换系统的排队系统模型为。利用生灭过程稳态分布的结论,可求解M/M/s(s)系统的时间阻塞率为Bs,a=ass!r=0sarr!,该公式给出了a,s,与B之间的关系。本次实验要求编写ErlangB公式的计算器,实现给定任意两个变量求解第三个变量的功能:(1)给定到达的呼叫量a和中继线的数目s,求解系统的时间阻塞率B;--(2)给定系统的时间阻塞率的要求B和到达的呼叫量a,求解中继线的数目s,以实现网络规划;(3)给定
3、系统的时间阻塞率要求B以及中继线的数目s,判断该系统能支持的最大的呼叫量a。三、实验内容1.设计语言及开发工具:(1)计算器:界面生成采用C++语言(MFC),函数采用C语言在VC++6.0中编写;(2)作图程序:C语言和MATLAB语言,采用MATLAB开发。2.计算器主要功能函数以下三个函数共同使用如下三个变量,但它们的使用方式不同,可能作为输出也可能是输入:a.到达呼叫量(a,非负双精度浮点数);b.时间阻塞率(eb,浮点数,取值范围0~1);c.中继线数(s,非负整数)。(1)doublecalculate_b(doublea,ints)功能:已知到达的呼叫量a和中继线的数
4、目s,求时间阻塞率eB;算法原理:计算时间阻塞率可以用爱尔兰B公式本身实现,但这种算法不仅麻烦,还可能产生数据溢出。有一个更为简便的迭代算法。这个算法可表示为ebm,A=AeB(m-1,A)m+AeB(m-1,A)(m=0,1,2…,n;P0,A=1)其中PB表示阻塞率,m表示中继线数,A表示到达呼叫量。这个算法表明在--到达呼叫量一定时,s条中继线的阻塞率可以用(s-1)条中继线的阻塞率表示。若要求s条中继线的阻塞率,使用这个算法只需s次迭代就可以实现,大大减少了运算次数,而且也不会出现溢出问题。算法流程图:开始输入中继线数S、到达呼叫量aEb初值为1,迭代次数为0迭代次数为s?
5、Y输出阻塞率eb结束N做运算:(a*eb)/(m+a*eb)结果付为新eb值S值加1(2)doublecalculate_a(ints,doubleeb)功能:已知中继线数s、时间阻塞率eb和精度ec,求到达呼叫量a算法原理:--采用考虑精度的逐次逼近穷举法,此处引进精确度ec。首先输入s、eb和ec,设a的初值为0,以a此时值与s做calculate_b运算,得到的值与输入值eb作差,当差值小于精确值时则此时a值为运算结果,否则a以0.001为间隔递增循环计算,直到满足条件,输出此时a值。算法流程图:开始输入阻塞率eb、中继线数s和精确度ec置到达呼叫量a为0利用calculat
6、e_b计算当前a与s对应阻塞率与输入量eb之差差值是否小于精确度ec?输出此时a值为到达呼叫量结束a加0.01NY(3)intcalculate_s(doubleeb,doublea)函数功能:已知到达呼叫量a、时间阻塞率eb和精确度ec--,求中继线数s。算法原理:与求解到达呼叫量a相同,采用穷举法逐次逼近结果首先设s值为1,计算此时s与输入值a对应eb减去输入值eb结果是否小于精度,是则输出s,否则s加1循环运算知道符合精确度。算法流程图:开始输入阻塞率eb、到达呼叫量a和精确度ec设置s为1利用calculate_b计算此时s与a对应eb减去输入值eb之差差值小于精确度?输出
7、此时s作为中继线数结束YS加1N(4)函数具体代码doublecalculate_b(doublea,ints)//知a、s,计算eb{doubleeb;--doubletemp1,temp2,temp3;inti,j;temp1=temp2=1;for(i=1;i<=s;i++){temp1*=a;temp2=temp2*i;}eb=temp1/temp2;temp3=1;for(i=1;i<=s;i++){temp1=temp2=1;for(j=1;j<=i;j+
此文档下载收益归作者所有