Omnet++ 4.0 入门实例教程

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 个信息被推入一个队列中。

时间: 2024-10-08 08:44:26

Omnet++ 4.0 入门实例教程的相关文章

React 入门实例教程

React 入门实例教程 作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西很好用,就在2013年5月开源了. 由于 React 的

Yii2.0论坛实例教程

Yii2.0现在已经出来Beta了,Yii2.0总的来说和Yii1.x还是相差挺大的.现在的教程大部分都还是1.x的,所以这论坛就作为Yii2.0的一个入门实例吧.我也会尽量把Yii2.0的各个新特性以及开发中的技巧一一列出来.如果哪位有兴趣可以一起交流一起来完成.功能列表:http://www.yiifans.com/forum.php?mod=viewthread&tid=68Git地址:https://github.com/yiifans/yiiforum另外,一般情况下会在每天早上提交一

Solr 4.0 部署实例教程

Solr 4.0 部署实例教程 Solr 4.0的入门基础教程,先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrServer,我是找了半天才发现,大家以后可以注意. 部署前准备: Solr 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可. Solr 4.0 :  http://www.apache.org/dyn/closer.cgi/lu

php页面get方法实现ajax,入门实例教程

ajax,入门实例教程 本例针对php页面,做了一个小的demo加深对ajax的理解 1.文档结构: 共有ajax.php 和action.php 2个页面. 2.源码如下: /*ajax.php页面*/<!DOCTYPE html> <html lang="en"> <head> <title> ajax</title> <script type="text/javascript"> func

WebService入门实例教程

什么是WebService 通过使用WebService,您的应用程序可以向全世界发布信息,或提供某项功能,它是基于Web的服务,通过Web进行发布.查找和使用. WebService脚本平台需支持XML+HTTP. HTTP协议是最常用的因特网协议. XML提供了一种可用于不同的平台和编程语言之间的语言. 为什么要使用WebService 最重要的事情是协同工作. 1.跨平台调用(WebService不局限于操作系统,你可以在Windows上调用linux上的WebService服务,反之亦然

DWR 3.0 入门示例教程(简单实例)

DWR(Direct Web Remoting) DWR is a Java library that enables Java on the server and JavaScript in a browser to interact and call each other as simply as possible. Dwr能让在服务器端的java代码和浏览器客户端的javascript代码尽可能简单的相互调用. DWR is Easy Ajax for Java! 官网:http://di

(转)React 入门实例教程

作者: 阮一峰 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西很好用,就在2013年5月开源了. 由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非

【转】react入门实例教程

作者: 阮一峰 日期: 2015年3月31日 写在前面:原文链接http://www.ruanyifeng.com/blog/2015/03/react.html    github地址https://github.com/ruanyf/react-demos 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场

React入门实例教程

文章转自:阮一峰 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站.做出来以后,发现这套东西很好用,就在2013年5月开源了. 由于 React 的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却