编辑: LinDa_学友 2019-07-09
作业1 仿真报告 本次作业是关于蜂窝通信系统性能仿真,用C++设计一个LCC排队系统模型,计算一个新的服务请求被阻塞的概率,并用matlab绘制出到达――阻塞率曲线,将理论值与仿真值进行比较.

报告包括四个部分:实现仿真的假设条件,程序流程图,仿真实现,仿真结果和结论. 仿真假设条件 对于每个基站,服务请求到达服从lamda的泊松进程,lamda的值是可变的,本次仿真设lamda=0.1~11.9以0.2为步长. 对于每个基站,服务时间服从均值为u=20分钟的指数分布. 每个小区的信道数channelnumber=10.

二、程序流程图 如图所示,首次初始化信道状态ch[j]=0;

当有新的call到达时,首先检验flag的值,当flag=0时,表示该call没有分配信道,然后对所有信道进行监测,若信道值比这个时间间隔值小就说明这个call到达时,这个信道已经处于空闲状态,于是把这个call需要的服务时间赋值给这个信道,同时让flag=1,表示这个call已经占用信道.若信道值比这个时间间隔值大,说明这个call到达时,这个信道仍被占用,则需将所有信道的值都减去这个时间间隔,表明已经服务了这么长时间,还需服务的时间继续存在信道中.如果所有的信道都被占用了,那么将无法为这个call分配信道,于是发生阻塞.阻塞数加一,当所有的call都运行完后,计算组色率. 仿真实现 ⑴call产生模块的实现 服务请求模块的实现 首先产生均匀分布序列U~U(0,1),然后产生服从均值为1/lamda的指数分布序列,返回deltatime=-log(U)/lamda;

表示call产生的时间间隔. 服务时间模块的实现 产生服从均值为u的指数分布序列servicetime=-u*log(U);

表示与每个call相对应的服务时间长度. ⑵信道分配模块的实现 首先对信道进行初始化,将数组ch[]中的元素赋初值零,并将blocknumber,flag也初始化为零.每产生一组指数分布的数,先根据flag的值确定是否为其分配信道,若flag=1则不分配,若flag=0,将deltatime与数组中元素的值经行比较,若数组中的元素的值小于deltatime则将此时的servicetime赋给该元素,同时对flag赋值1,表示这个call占用了这个信道,并占用servicetime时间长度.并对其他被占用的信道经行时间更新,减去deltatime,如果信道中的值比deltatime小,那么表明这个call到来时,信道已被释放,信道的值又变为0.当信道都被占用时,新产生的call就会阻塞,flag=0,无法为其分配信道,blockingnumber++.如此循环callnumber次,统计阻塞数,用blockingnumber/callnumber就得到阻塞率,然后改变lamda的值,计算新的阻塞率. ⑶理论阻塞模块的实现 根据书上第53页给出的Erlang B模型的公式 计算每个lamda对应的理论阻塞率.其中A=lamda*u,C为信道数,k为状态数. ⑷仿真模块的实现 将程序运行产生的结果用.txt文档的形式输出,利用matlab绘图软件进行绘图.

四、仿真结果如下图所示 图中蓝色的线表示理论结果,红色的线表示仿真结果.从图中可看出仿真结果与理论结果很相近.并且在信道数目和呼叫平均保持时间即u一定的前提下,阻塞率随着单位时间平均呼叫请求次数即lamda的增加而增加,增长趋势服从抛物线,当lamda不断增加时,阻塞率逼近1.

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题