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 入门实例教程的更多相关文章

  1. Solr 4.0 部署实例教程

    Solr 4.0 部署实例教程 Solr 4.0的入门基础教程,先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为H ...

  2. React 入门实例教程(转载)

    本人转载自: React 入门实例教程

  3. 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 ...

  4. WebService入门实例教程

    什么是WebService 通过使用WebService,您的应用程序可以向全世界发布信息,或提供某项功能,它是基于Web的服务,通过Web进行发布.查找和使用. WebService脚本平台需支持X ...

  5. React 入门实例教程

    现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...

  6. Facebook React.js库 入门实例教程

    作者: 阮一峰 日期: 2015年3月31日 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩 ...

  7. 2015年最热门前端框架React 入门实例教程

    现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...

  8. React入门实例教程

    文章转自:阮一峰 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React ...

  9. React 入门实例教程(转载)

    现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React 起源于 Face ...

随机推荐

  1. 1445 送Q币

    1445 送Q币  时间限制: 1 s  空间限制: 1000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 一次在玩网络游戏的过程中,在 ...

  2. WPF学习笔记:MVVM模式下,ViewModel如何关闭View?

    原文:http://blog.csdn.net/leftfist/article/details/32349731 矫枉过正,从一个极端走向另一个极端.MVVM模式,View只负责呈现,虽然也有后台代 ...

  3. ab压测&htop工具

    1,apache bech 参考: http://www.nginx.cn/110.html http://www.ha97.com/4617.html ===================== y ...

  4. 设计模式——1.概述&UML类图和时序图

    声明:本博客设计模式相关文章均整理和修改自网络,原文地址:图说设计模式 学习设计模式的3个层次—— 1.熟悉所有设计模式: 2.能够用代码实现: 3.运用到工作的项目中. 设计模式指导软件开发,学习设 ...

  5. Qt中通过ui怎么引用不了pushbutton呢? 原来是这样…

    在Qt中打开一个项目在做, 突然想到要测量一下其中一个子系统,于是在当前环境下新建了一个项目并用qt designer 简单设计了一下ui,其中添加了pushbutton并命名为OpensourceB ...

  6. JNDI全面总结(zz)

    原理:         在DataSource中事先建立多个数据库连接,保存在数据库连接池中.当程序访问数据库时,只用从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库连接重新回到连接池 ...

  7. Activiti系列: 如何在web中使用activiti和sql server

        最近要开始使用activiti结合原有的系统来开发一个专业领域内的业务管理软件,以下记录了第一次搭建该开发平台过程中所遇到的各种问题,备忘.   一.按照如下方式新建一个web工程 之所以要用 ...

  8. MySQL系列——几个常用的mysql命令

    1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2:2.创建一个数据库MYSQLDATAmysql> CREATE DATABASE MY ...

  9. 【Win 10应用开发】如何知道当前APP在哪个平台设备上运行

    在做Win10开发的时候,我们可能经常会需要获得当前程序在在哪个平台设备上运行,用于UI和相关API的调用,那么可以通过什么方式知道当前APP运行的平台呢? 今天这里提供两个方法给大家做参考: 方法一 ...

  10. 每个Android开发者都应该了解的资源列表

    前言   这是一篇译文,原文地址Resources every Android developer must know,在译文开头,推荐两篇同样适合于Android开发者阅读的资源列表Android开 ...