http://blog.sina.com.cn/s/blog_8a2bb17d01018npf.html

在网上找到的一个讲解omnet++的实例, 是4.0下面实现的. 我在4.2上试了试,可以用.照着做就能完成,有些小地方不同而已

Omnet++ 4.0 入门实例教程
根据http://omnest.com/webdemo/ide 上的实例,自己动手做了做。新版本的4.0 跟它视频上
的版本有些差别,配图说明一下我的操作过程,供大家一起学习。
现在开始。
首先,开发环境选择simulation 的视图,这是Omnet++开发的最优环境,在这个视图下有好
多针对Omnet++的专有菜单项。打开过程:Windows->open perspective->simulation。
新建一个Omnet 的工程,取名为demo:File->New->Omnet++ Project
在本例中,我们模拟一个排队网络,该网络应用到已经定义的queueinglib 工程里面的组件,
因此必须把它加入到我这个项目的依赖关系里面。所以,先把该项目打开,右键点击
queueinglib->open project,然后编译一下(这步十分重要,不然后面拖放网络节点工具的时候
你会发现视频用到的queue 等工具在你的视图里没有,就是因为你的queueinglib 没有build)。
然我们在右键点击demo->Properties->Project References 把queueinglib 选上。
接着我们要为我们的网络编写一个NED 文件,NED 语言主要是用来描述仿真模型结构的,
类似于NS2 环境下的TCL,都是用于描述网络结构。右键点击demo->New->Network
Descripition File,新建一个NED 文件,命名为demo.ned,content 选A new network
点finish 后就出现了NED 文件的可视化编辑界面。在Omnet4.0 里,我们可以在可视化的环
境下进行网络环境的设置,生成NED 文件,同时也可以在代码视图下通过代码完成设置。
我们来建立一个简单的闭合排队网络,包含一个源节点和三个连接成环的排队节点。
在右侧的Submodules 里面找到相应的Queue 跟Source,拖到面板上即可,由于有多个Queue,
因此每拖出一个就按下F6 重命名。
然后我们把他们连接起来,用右上角的connection 工具。
queue2 到queue3 的连接我们通过代码视图来完成。点击编辑界面的source 视图。之前说的
是环路排队网络,因此最后一条应该是queue2 的out 连接queue3 的in。
切换回来就能够看到已经连接好的视图了。
在运行实例之前,我们要先配置下网络环境。Omnet 的网络配置文件是omnetpp.ini 文件,
名称、扩展名都不能改。右键点击demo 新建一个omnetpp.ini 文件,选择Network 为demo,
finish。
进入ini 文件配置界面。同样我们可以在视图界面下设定,也可以切换到代码界面下进行设
定。
要把没有默认值的模型属性进行定义。点击右面的Add 按钮,就会显示未定义的属性。
我们先来定义interArrivalTime 和numJobs。只选这两个,然后点ok。interArrivalTime 设为0,
意思是所有job 立即添加到这个queuing network 中。我们计划在两种情形下进行测试,一种
初始jobs 数30,一种是60。Ini 里通过语法${jobs=…}来实现这种设定。
然后我们设置所有queue 的serviceTime 属性。
本实例模型要尝试不同队列的服务时间,是一个指数分布,且指数依次为1,2 和3,因此
我们设定serviceTime 的指数运行参数为exponential(${serviceMean=1..3 step 1}s)。(注意在{}
外添加时间单位s)。
然后指定在模拟运行时每个模拟要运行多久。
切换到代码视图可以看到我们的设置结果,记得保存。
现在,网络结构文件NED 和网络配置文件INI 都有了,下面我们来配置下demo 在Omnet4.0
的IDE 环境下运行的参数。
打开run configurations,新建一个新建一个new_configuration,修改如下所示位置。其中,.ini
文件必须选择demo 下的那个omnetpp.ini。
确认没问题后,点击run。我们可以在下面的conclusion 视图下看到运行的详细情况。
运行结束后,在工程视图的demo 文件夹下又多了一个文件夹result,里面生成了本次模拟
的结果文件。其中vec 和sca 文件是模拟的统计信息,elog 文件存储了每个message 的发送
情况、文本信息等等,并且可以在序列图中可视化。
我们下面来进行结果分析,首先要新建一个.anf 的分析文件。
Finish 之后,把左侧result 文件夹里面所有的.sca、.vec 文件拖到Input files 区域里面。(本来
是应该能通过Wicards 自动添加进去的,不知道为什么我的不行。手动拖进去的…)
每个仿真运行时,它都会收到一个唯一的run ID,包含了配置、运行编号、数据/时间等信
息。在data 视图里面,第一个表(by file and run)显示了某个文件是运行哪个仿真产生的;第
二个表(by run and file)显示了某个仿真运行产生了哪个文件。第三个表是逻辑运行关系。我
们做的仿真运行都属于一个实验,叫General—也就是ini 文件的基本配置,该名称可以在ini
文件中更改。每个experience 里面都包含若干个测量,通常是一个同样的仿真模型使用不同
参数运行得到的。每次测量都可以用不同的seeds 重复去做,从几个replications 中来得到可
靠的统计结果。
我们再切换到Broswer Data 视图里面,这个表格显示.vec 文件所记录的所有仿真的运行信息。
我们要看的是在运行时队列长度的变化,因此在右侧name 下拉条里选择length,表格包含
的就是所有仿真的队列长度变化。我们选择run ID 为4 的仿真看下结果。
这只有3 条队列变更的记录,我们来把它们绘制到一个图表当中, ctrl+A 全选这三条数据,
点击工具栏上的Plot 按钮即可。
生成的图表如下所示。
现在我们改变坐标轴的大小,并改变画图的风格,改线为点。在图上点右键选chart->Axes,
设置x、y 轴的范围。
然后选择line 选项卡,将其中的line type 改成Sample-Hold ,Symbol type 改成none
我们可以用“mean”函数来的到平滑曲线的图表
我们可以把这个图表保存下来,下次再运行这个demo 仿真的时候,该图表可以自动重现。
在图表上点右键选convert to dataset…名字如图所示。
数据集页面显示了用与创建图表和图像的记录(recipes??),它包含了适用于从上到下顺序的
处理步骤。然后保存分析文件,该文件只存储这些信息:哪些文件加载了,通过这些文件绘
制了什么数据集和图表。
下面打开一个.elog 文件,来看下序列图sequence chart。
在General-0.elog 文件中你可以看到最初的60 个信息被推入一个队列中。

04-21 18:47