北邮erlangB计算器实验报告.docx
- 文档编号:5336970
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:15
- 大小:299.67KB
北邮erlangB计算器实验报告.docx
《北邮erlangB计算器实验报告.docx》由会员分享,可在线阅读,更多相关《北邮erlangB计算器实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
北邮erlangB计算器实验报告
实验二:
ErlangB公式计算器
实验报告
学院:
信息与通信工程学院
班级:
学号:
一、实验目的
ErlangB公式通信网理论基础这门课程的学习重点之一,其表达了交换系统的时间阻塞率B(s,a)与到达的呼叫量a以及中继线的数目s之间的关系,为网络的规划和中继线容量配置奠定了基础。
本次实验要求用计算机语言编写ErlangB公式计算器,实现给定任意两个变量求解第三个变量的功能,使学生掌握ErlangB公式的计算方法,培养数值分析计算与算法设计能力。
二、实验原理
Erlang即时拒绝系统用于建模交换系统,设呼叫流的到来服从Poisson程,4为呼叫的到达率,呼叫的持续时间服从参数P的负指数分布。
系统有s条中继线,呼叫到来时,如系统中有空闲的中继线,则呼叫可到达任意一个空闲的中继线,如果没有空闲的中继线,就拒绝该呼叫。
在这样的情况下,该交换系统的排队系统模型为
利用生灭过程稳态分布的结论,可求解M/M/s(s)系统的时间阻
塞率为口(口口)=二^7,该公式给出了a,s,与B之间的关系。
u口
本次实验要求编写ErlangB公式的计算器,实现给定任意两个变量求解第三个变量的功能:
(1)给定到达的呼叫量a和中继线的数目s,求解系统的时间阻塞率B;
(2)给定系统的时间阻塞率的要求B和到达的呼叫量a,求解中继线的数目s,以实现网络规划;
(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和中继线的数目s,求时间阻塞率eB;
算法原理:
计算时间阻塞率可以用爱尔兰B公式本身实现,但这种算法不仅麻烦,还可能产生数据溢出。
有一个更为简便的迭代算法。
这个算法可表示为
eb(口U)=口?
口]%5)=0,1,2,□,口J),D)=1)
其中帀表示阻塞率,口表示中继线数,口表示到达呼叫量。
这个算法表明在
到达呼叫量一定时,s条中继线的阻塞率可以用(s-l)条中继线的阻塞率表示。
若要求s条中继线的阻塞率,使用这个算法只需s次迭代就可以实现,大大减少了运算次数,而且也不会出现溢出问题。
(2)doublecalculate_a(ints,doubleeb)
功能:
已知中继线数s、时间阻塞率eb和精度ec,求到达呼叫量a算法原理:
采用考虑精度的逐次逼近穷举法,此处引进精确度ec。
首先输入s、eb和ec,设a的初值为0,以a此时值与s做calculate_b运算,得到的值与输入值eb作差,当差值小于精确值时则此时a值为运算结果,否则8以0.001为间隔递增循环计算,直到满足条件,输出此时a值。
(3)intcalculate_s(doubleeb,doublea)
函数功能:
已知到达呼叫量a、时间阻塞率eb和精确度ec,求中继
线数So
算法原理:
与求解到达呼叫量a相同,采用穷举法逐次逼近结果首先设s值为1,计算此时s与输入值a对应eb减去输入值eb结果是否小于精度,是则输出s,否则s加1循环运算知道符合精确度。
(4)函数具体代码
doublecalculate_b(doublea,ints)//知a、s,计算eb{~
doubleeb;
doubletemp1,temp2,temp3:
inti,j;
templ=temp2=l;
for(i=l;i<=s;i++)
{
tempi*-a;
temp2=temp2*i;
}
eb=templ/temp2;
temp3=l;
for(i=l;i<=s;i++)
templ=temp2=l;for(j=l;j<=i;j++)
templ*=a;
temp2=temp2*j;
}temp3+=temp1/temp2;
}
eb=eb/temp3;
returneb;
}
doublecalculate_a(ints,doubleeb)//知eb、sT计算a{~
doublea,ec;
doubletemp4;
doub1etemp1,temp2,temp3;
inti,j;
for(a=0.01;temp4-eb>=ectemp4-eb<=-ec:
a+=0.001){
temp4=calculateb(ats):
}
returna;
}
intcalculate_s(doubleeb,doublea)//知a、eb,计算s
{~
ints;
doubletemp4,ec;
doubletemp1,temp2,temp3:
inti,j;
temp4=l;
for(s=l:
(temp4-eb)>=ec;s++)
{temp4=calculateb(a,s);
}
returns;
)
3.MATLAB作图程序
函数说明:
aAndB.ni是计算到达率与阻塞率的关系
aAndn.ni是计算到达率与中继线条数的关系
erlangb.m是通过a与n计算阻塞率
findrhob.m是通过阻塞率与中继线条数计算到达率的关系
nANDb.m是计算n与b之间的关系
test3d.ni是画出到达率阻塞率中继线条数的三维关系图
(1)functionB=erlangb(n,rho)
利用循环:
fork=l:
n,
B=((rho*B)/k)/(l+rho*B/k);
end;
通过固定到达率与中继线条数计算出来阻塞率
函数具体代码:
functionB二erlangb(n,rho)
if((floor(n)n)II(n<1))
warning('nisnotapositiveinteger'):
B=NaN;
return;
end;
if(rho<0.0)
warning(rrhoisnegative!
r):
B=NaN;
return;
end;
B=l;
fork=l:
n,
B=((rho*B)/k)/(1+rho*B/k);
end;
(2)functionrho=findrhob(n,p)
固定中继线条数与阻塞率,采用逐渐逼近的原理,计算出到达率函数具体代码:
functionrho=findrhob(nTp)
if((floor(n)~二n)II(n<1))
warning(Fnisnotapositiveintegerr):
rho=NaN;
return;
end;
if((P<0.0)||(p>1.0))
warning(rInvalidpvalue!
r):
rho=NaN;
return;
end;
a=l.0;
testp=erlangb(n.a);
while(testp
a=a*2.0;
testp=erlangb(nta);
end;
left二0・0;
right=a;
mid=(left+right)/2;midp=erlangb(n,mid);while((right-left)>0.0001*max([1left])),if(midp
left=mid;
mid=(left+right)/2;midp=erlangb(ntmid);
else
right=mid;
mid=(left+right)/2;midp=erlangb(n,mid);
end;
end;
rho=left;
四、程序运行结果及分析
1、ErlangB计算器运行结果分析:
(1)程序主界面及使用说明:
该界面的设计基本采用了.erlang,com上的计算器界面。
以radiol按钮确定计算对象,另外添加了各自清除按钮与总清除按钮,弥补了网页计算器的不足,且添加了自主设置精确度的功能。
本程序对阻塞率要求输入0'1之间的实数,中继线数要求输入非负整数,到达呼叫量要求输入非负实数。
后两者支持的输入围非常大,而网上的计算器则要求信道数和到达呼叫量都要小于180,当然输入数据越大所需要的计算时间也越长。
另外计算到达呼叫量和中继线数时,可以实现任意给定精度的运算
(2)为验证准确性,分别给出三个功能计算结果与网页计算器对比:
[1]已知s和a,计算到阻塞率eb
[2]已知eb和s,计算到达呼叫量a
[3]已知3和eb,计算中继线数s
通过三组对比可表明基本功能实现且误差很小或无误差
2、MATLAB作图运行结果分析^
(1)信道与阻塞率关系图(固定到达率为45erl,最大信道数100)
信道数与阻塞率关系、固定到达率为45曲线分析:
信道数为0阻塞率为1,对于全部到达的呼叫都采取拒绝,然后阻塞率随着信道数增减小,信道到达60以上的时候,阻塞率几乎为0,基本能保证所有的呼叫都能被服务到,此时,当系统的呼叫量为45erl的时候,建议系统最多使用60条中继线,最经济。
(2)到达率与阻塞率的关系图(固定信道数为80)
曲线分析:
该图说明给定特定的信道数,可以保证一定围的呼叫不会被拒绝,但是当呼叫量上升,超过一个围(此时为60),阻塞率会急剧增加,此时就需要增加信道数量的了。
(3)信道数与到达呼叫量的关系图(限定阻塞率为0.01)
曲线分析:
在保证阻塞率不变的情况下,信道数与呼叫量基本成线性关系,要保证一定的质量,到达的呼叫量越多,对应需要的中继线条数越多。
(4)信道数,到达率,阻塞率之间的关系三维图
五、实验问题及解决
1.计算器功能实现
(1)在界面中运用了ediol按钮,一开始功能无法实现,就在计算键中运算时采用其他条件判断,后来根据XX的技术支持添加语句,实现了根据radiolbutton判断运算对象的功能
(2)有一个目前仍旧无法解决的问题:
在第一次运算后,中间到达呼叫量a的运算radiolbutton会变暗且无法选择,在咨询同学与网络查询后未果,至今悬而未决。
(3)进行多次计算时两次计算中间有时忘记清除就会报错,所以添加了四个清除按钮,方便使用。
2.MATLAB画图部分遇到的问题
(1)在画到达率与阻塞率的关系图时,出现和理论相反的情况,后来改善了计算公式,解决了问题。
(2)在画3维图时,出现的不是平整的三维图,而是有锯齿的情况,通过提髙的到达率的精度,改善了作图结果。
(3)在计算一些循环时,有的时候因为循环循环不当,进入死循环,一直出不来结果,后来经过不断调试,解决了问题
六、实验总结与感想
本次实验是分两部分完成,先是用c语言对erlangB公式进行计算,用MFC进行界面设计,然后又用MATLAB进行计算作图。
工程量非常大。
在此期间查阅了大量资料,对书上的公式有的更加深入的理解。
其中在MATLAB采用的不是C语言的迭代算法,而是对其进行了优化,提髙的运算速度。
通过对计算器的界面设计及功能实现,对C语言及C++语言有了更熟练的使用和认识,对今后软件的编写有很大的帮助
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮 erlangB 计算器 实验 报告