一、背景介绍
1.网络概况:
该公司拥有20个基站,每个基站覆盖范围为2Km,每一个基站有10个信道。这些基站覆盖距离为40公里长(单程)公路。
2.使用规则:
切换(Handovers):当用户呼叫跨越小区边界时,必须释放正在使用的信道,并且必须获得一个新信道。
掉线呼叫(Dropped Call):如果切换期间新基站中没有可用信道,则取消呼叫。
阻塞呼叫(Blocked Call):如果在初始化新呼叫时基站中没有信道,则呼叫被阻塞。
3. 固定信道分配(FCA)
FCA方案静态地确定分配给每个小区(基站)的信道数。
该公司希望您测试两个FCA方案:
(A)为每个小区分配10个信道。
(B)为每个小区分配9个信道,用于新呼叫和切换,在其他9个信道不可用时,为切换预留1个信道。
研究QoS,即使用两种FCA方案的阻塞和下降频率。
二、模型实现
现在我们对方案A进行详细的介绍和设计。我们首先生成一组200 X 9的零数组event。event中有9种属性分别为[no , type , arrivel_time , interarrival , duration , position , speed ,cell_no,end_time],这些属性分别代表:序号、通话状态、通话开始时间、事件发生间隔、通话持续时间、实时所处位置、汽车速度、当前基站序号、事件结束时间。通过读取或相应的计算,将得到的数据存入数组中。
接下来,我们对流程图所展现的过程进行详细介绍。首先,我们知道每个数据集共有200组数据,代表200辆正在通话的车。我们通过均匀分布,将200辆车均匀分布于40KM的公路上。通过计算其所处位置,继而计算出其开始时所处的基站的序号。
进入主循环函数,先判断当前的时间是否小于最晚的事件结束时间,如果不小于则表示事件都已发生,如果小于则进一步进行事件的处理。通过循环函数,将当前位置定位到下一个即将处理的事件,记录下下一个待处理事件的序号。接着开始更新当前所有正在执行事件的状态,对每个事件进行判断,若该事件所剩的通话时间大于零、正在通话中以及位置小于40KM,则将事件更新为1毫秒后的状态。
判断该事件下一秒钟的状态,若所剩通话时间小于等于零且正在通话中,则表示该通话结束,我们收回信道,增加一个空闲信道。
若所处基站大于20或所处基站等于上一毫秒所处的基站则不做状态的修改,若所处基站小于20且大于上一毫秒所处的基站,则表示车辆进入另一个基站的覆盖范围。此时判断新基站是否存在空闲信道,若存在空闲信道则占用一个空闲信道,且通话状态持续为talking。若不存在空闲信道,则表示通话丢失,通话状态改为drop。
对旧事件处理完后,我们将对新增事件进行处理。获取新事件所处的基站的序列,判断该基站此时是否有空闲信道,若有则分配新信道,若没有则将此次通话状态设为block。
最后,我们对数组中type的三种类型进行统计,包括:talking、block、drop。继而计算出其相对概率。