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 个信息被推入一个队列中。
Omnet++ 4.0 入门实例教程的更多相关文章
- Solr 4.0 部署实例教程
Solr 4.0 部署实例教程 Solr 4.0的入门基础教程,先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为H ...
- React 入门实例教程(转载)
本人转载自: React 入门实例教程
- let import export React入门实例教程 connect provider combineReducers 箭头函数 30分钟掌握ES6/ES2015核心内容 Rest babel
let与var的区别 http://www.cnblogs.com/snandy/archive/2015/05/10/4485832.html es6 导入导出 http://www.csdn.ne ...
- WebService入门实例教程
什么是WebService 通过使用WebService,您的应用程序可以向全世界发布信息,或提供某项功能,它是基于Web的服务,通过Web进行发布.查找和使用. WebService脚本平台需支持X ...
- React 入门实例教程
现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...
- Facebook React.js库 入门实例教程
作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩 ...
- 2015年最热门前端框架React 入门实例教程
现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...
- React入门实例教程
文章转自:阮一峰 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React ...
- React 入门实例教程(转载)
现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...
随机推荐
- [tools]QuickPing
一款神器 quickping 能够很快的探测出该网断分出去哪些地址. 在线的会显示绿色 在线的+有主机名的显示为亮绿色
- Qt——正则表达式
在项目中经常会遇到对字符串进行操作的情况,我们可以直接使用QString的一些函数,但QT提供了一个更加强大的类——QRegExp,使用正则表达式来操作字符串. 先说说我最近遇到的几个问题: 1.对输 ...
- 安卓界面篇(一) 自定义一个topbar
步骤一: 先在values 里 新建一个attrs.xml 来设置我们的属性值: <?xml version="1.0" encoding="utf-8" ...
- windows live writer 尝试登陆时发生意外错误,导致无法发表博客解决方案
刚用windows live writer发表博客, 但是出现如下提示: 尝试登陆时发生意外错误: 网络连接错误--尝试连接到一下日志时出错: http://www.cnblogs.com//xxxx ...
- OpenGL、Open Inventor、WebGL、Three.js、ARToolkit、JSARToolkit
[准备看的] http://www.hewebgl.com/ http://www.linuxdiyf.com/viewarticle.php?id=399205 http://blog.sina.c ...
- Android--自动搜索提示
一. 效果图 在Google或者百度搜索的时候,在输入关键词都会出现自动搜索的提示内容,类似如下的效果,输入b 则出现包含b的相关词条 二. 布局代码 <?xml version="1 ...
- Orchard 刨析:前奏曲
Orchard中大量使用了依赖注入,而实现依赖注入的组件就是Autofac,它在Orchard中扮演者非常重要的角色,多租户如是,模块如是,工作区也如是.今天就来讲讲Autofac在Orchard中的 ...
- 第二十八课:focusin与focusout,submit,oninput事件的修复
focusin与focusout 这两个事件是IE的私有实现,能冒泡,它代表获得焦点或失去焦点的事件.现在只有Firefox不支持focusin,focusout事件.其实另外两个事件focus和bl ...
- EF,MVC相关项目请参见→
End_Test和YM_EF抽象工厂 这两个项目
- HDU 5973 Game of Taking Stones 威佐夫博弈+大数
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5973 Game of Taking Stones Time Limit: 2000/1000 MS ...