实验三MM1队列模型实验.docx
《实验三MM1队列模型实验.docx》由会员分享,可在线阅读,更多相关《实验三MM1队列模型实验.docx(14页珍藏版)》请在冰豆网上搜索。
实验三MM1队列模型实验
建立一个M/M/1排队模型
一、实验目的
1、了解M/M/1排队模型的主要结构和特点。
2、掌握OPNET节点编辑器的基本使用方法。
3、掌握使用工程编辑器来收集和观察不同统计类型的方法。
4、掌握从仿真结果中数学分析统计数据的方法。
二、实验设备和环境
PC、WindowsXP、Opnet14.5A等;
三、准备知识
M/M/1排队模型:
M/M/1排队模型由一个数据包到达过程为泊松过程的单入单出(FIFO)缓冲器和一台从缓冲区以特定速度接受分组数据包的服务器(server)组成。
M/M/1队列系统的性能取决于以下几个因素:
(1)数据包到达速度
(2)数据包大小
(3)服务器服务容量
如果平均数据包到达速度和平均数据包大小的综合影响超过了服务器所能提供的服务容量,队列长度将会无限增长。
M/M/1队列模型如图1所示:
图1.M/M/1队列模型
其中
和C分别表示到达速度、数据包大小和服务容量。
在本次实验中,我们会建立一个M/M/1队列模型,通过设定特定的到达速度、数据包大小和服务容量来使队列达到稳定。
四、实验内容和步骤
实验内容:
创建一个M/M/1队列模型,需要在节点编辑器中选择对象,包括一个queue和两个过程processors。
source节点(用processormodule表示)负责产生数据包,sink节点(用processormodule表示)负责处理无用的数据包,queuemodule表示无限的缓冲器和服务器。
packetstreams用来连接每个模块。
模型如图2.
图2.M/M/1队列模型
实验步骤:
1)打开OPNET,并新建project和scenario。
分别命名为mm1net和mm1。
如图3所示:
图3.新建工程和场景
2)打开StartupWizard后,点击Quit,会在节点模型创建之后再进行场景的设置。
3)选择File\New...并在弹出的窗口下拉菜单中选择NodeModel,点击ok。
如图4.
图4.创建节点模型
在之后出现的窗口中有一系列的工具按钮如图5所示:
图5.节点工具按钮
左数第一个表示创建发生器(Processor),第二个表示创建队列(Queue),第三个表示创建分组数据流(PacketSteam)。
本实验用到此三个,其余不赘述。
鼠标放上去会有相应提示。
选择CreateProcessor按钮,放置在工作空间中,右键单击结束。
需要设置其参数使其满足M/M/1队列模型的要求。
右键点击选择EditAttributes,在name一栏中输入src,在第二栏processmodel中选择simple_source,之后会跳出很多选项,如图6.
图6.source节点参数设置
在PacketInterarrivalTime一栏点击进入对话框,在其中选择exponential,Meanoutcome为1.0,并点击OK。
如图7.
图7.数据包的到达时间间隔设置
另外PacketSize一栏,如图8进行设置,并点击OK。
图8.数据包大小设置
点击OK关闭参数设置对话框。
之所以选择指数形式,是为了让过程满足泊松分布,从而符合M/M/1队列模型。
接下来是创建queue。
点击CreateQueue按钮,放置在工作空间中,右键单击结束。
需要设置其参数使其满足M/M/1队列模型的要求。
右键点击选择EditAttributes,在name一栏中输入queue,在第二栏processmodel中选择acb_fifo,之后确认下service_rate为9600,之后点击OK关闭参数设置对话框。
如图8.
图8.Queue参数设置
选择acb_fifo也是M/M/1队列模型的要求。
创建Sink节点。
点击CreateProcessorModule按钮,放置在工作空间中,右键单击结束。
需要设置其参数使其满足M/M/1队列模型的要求。
右键点击选择EditAttributes,在name一栏中输入sink,在第二栏processmodel中选择sink,之后点击OK关闭参数设置面板。
如图9所示。
图9.Sink节点参数设置
至此M/M/1队列模型中所需要的模块都已配置完成,接下来是将他们连接起来以保证数据流的流通。
点击CreatePacketStream按钮。
点击src模块,然后点击queue模块,此时第一个数据流已经建好。
之后点击queue模块,在点击sink模块,至此数据流连接完成,如图10所示。
图10.节点模型连接图
设置节点的类型为有线连接(非无线或者卫星)。
选择Interfaces/NodeInterfaces,在打开的面板中,将Nodetypes中mobile和satellite的supported改为no,然后点击OK设置完成。
如图11所示。
图11.节点接口设置
至此,整个节点编辑过程结束。
选择File/Save,然后将node命名为mm1,保存在你的op_models文件夹中。
关闭节点编辑器。
4)建立网络模型。
点击OpenObjectPalette工具按钮
,打开面板之后点击面板(如图12)左上角的
按钮,在出现的节点编辑面板中(如图13),点击ConfigurePalette按钮,跳出一个配置面板(如图14),
图12.对象面板树
图13.对象面板
图14.配置面板
选中Modellist,点击Clear,清除面板中除了子网的其他所有模型,然后点击NodeModels进入一个列表,在列表中找到之前建的mm1节点模型,将Status改成included,如图15.
图15.选择所用的节点模型
点击OK关闭这个列表,然后点击OK保存ConfigurePalette,输入名称mm1_palette,点击Save。
此时ObjectPalette中出现一个蓝色的mm1节点模型,如图16。
图16.配置后的对象面板
之后将mm1拖到工作空间中,右键单击结束操作。
右键选中对象菜单中选中SetName,输入m1,点击OK。
选中File/Save,点击Save。
至此网络模型创建完成。
5)收集统计结果。
对于M/M/1队列模型,有很多可以进行收集的统计量,包括一个数据包在无限缓冲区中延迟的平均时长(queuedelay),在队列中排队的平均分组数量(queuesize)。
这两个统计量回答了这个网络模型的最主要的两个问题:
第一:
一个数据分组的平均等待时间是否超过允许的上限?
(在本实验中,允许的上限为20s);
第二:
队列的大小是单调增加的还是会达到一个稳定的状态?
如果队列的大小不能达到一个稳定的状态,那么肯定预示着系统会会超负荷。
明确了这两个统计量,下面就进行统计量的设置。
右键在m1上点击,选择ChooseIndividualDESStatistics。
选择观察结果的窗口,按照下图17进行选择,然后点击OK。
图17.选择观察结果
6)运行仿真。
点击工具栏中的
按钮打开仿真窗口,在其中进行如图18的设置(Duration设为7hours,Seed设为431。
之后点击Run来运行仿真。
图18.仿真运行窗口
运行结束后点击Close退出仿真运行窗口。
7)观察结果。
右键在工作空间点击选择ViewResult,打开结果浏览窗口,在Resultfor中选择CurrentScenario(默认应该是的,如果之前没建场景的话),在下面ObjectStatistics中选择统计量,如图19所示。
图19.观察结果
选中queuingdelay(sec),出现一个不规则的图形(如图20),
图20.Queuingdelay(sec)
其中峰值在80s左右,图形抖动非常大,不利于分析,所以在AsIs处的下拉菜单中选中average,然后点击Show按钮,出现图21所示的图形。
图21.QueuingDelay(sec)
从图中可以看出,本次仿真的队列平均延时在15s左右。
另一个统计量是queuesize,在之前的结果观察窗口左边选中queuesize(packets),把queuingdelay(sec)的勾取消。
然后使用time_average进行图形的调整。
之后点击Show,出现图22所示图形。
图22.QueueSize(packets)
从结果图中可以看出,最终的时间平均下队列的大小为15个数据包左右。
可以看出两个结果图非常的类似,这是由于本实验总数据造成的恰巧的结果,可以方便地用一个的图形代替另外一个进行分析。
现在将时间平均的queuesize和未进行时间平均的queuesize结果放到一个图中进行比较。
将ResultBrowser关闭,但保留刚得到的time_average(inqueue.queuesize(packet)),在这个图形上右键点击选择AddStatistic,这时一个新的ResultBrowser打开,然后按照之前的步骤选中queuesize(packets),然后直接点击Add,关闭ResultBrowser,再去看图形界面,会发现多了一条红色的线条,即为为进行时间平均的queuesize结果。
如图23所示。
图23.Queuesize时间平均与未平均的对比图
图中红色线为队列中数据包数量的瞬时值,蓝色线为队列中包数量的时间平均值。
从图中我们可以得出结论:
时间平均没有超过允许的上限值20s;
队列的长度也不是单调递增的,在4小时左右达到稳定。
因此这是一个稳定的系统。
五、实验注意事项
1)一般创建网络模型的方法是建立一个子网(用StartupWizard进行场景设置)并将节点放置到子网当中,但因为M/M/1队列模型只需要一个无连接的节点,和节点的位置是无关的,所以我们可以把它放置在最上层子网中(即global中)
2)之所以最后只用一个对比结果图就得出两个结论,是因为实验中选取的数值计算的来的理论结果中两个值就是相等的,在7个小时的仿真中选取了大量的分散值,使结果非常趋近于理论值,所以两个图形几乎完全一样,只用一个对比图得出结论也是可靠的。
六、实验报告
1)总结本实验的基本配置流程。
2)列出本实验过程中出现的故障,并说明你是如何排除的。