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. Python-面向对像及其他

    其他相关 1.isinstance(obj,cls)       检查是否obj是类cls的对象   # 针对变量 n = 123 s = "123" print isinstan ...

  2. 【MySQL】游标的具体使用详解

    测试表 level ; )); 再 insert 些数据 ;代码,初始化 drop procedure if exists useCursor // 建立 存储过程 create CREATE PRO ...

  3. C语言 百炼成钢14

    //题目40:输入3个数a,b,c,按大小顺序输出.(使用指针完成) #include<stdio.h> #include<stdlib.h> //分析:用指针完成,说明不可以 ...

  4. CENTOS7 添加自定义快捷键(启动TERMINAL,显示桌面等)

    centos7中不自带启动终端的快捷键,可以自定义添加. 点击右上角的用户名,点击设置,在设置面板点击键盘,选择快捷键选项卡进入快捷键设置界面. 点击“+”添加快捷键.名称自定义(如"启动终 ...

  5. Java6 String.substring()方法的内存泄露

    substring(start,end)在Java编程里面经常使用,没想到如果使用不当,会出现内存泄露. 要了解substring(),最好的方法便是查看源码(jdk6): /** * <blo ...

  6. 封装WCF客户端调用

    在之前的博客中,我记录过如何利用SvcUtil.exe工具生成客户端的代理文件,然后调用的情形. 今天我要讲解的是利用代码直接对服务端进行调用.好处在于,一是不会生成那么大的引用文件,其次是可以方便控 ...

  7. Linux常用指令---工作

    查看所有用户cat /etc/passwd 复制整个目录cp -ri A/B/* A1/B1/ 若复制过程中询问是否覆盖,输入y按回车 另外若A A1不在同一目录下,最好填绝对路径,就是/xxx/xx ...

  8. JQuery学习笔记——JQuery基础

    #,JQuery避免名称冲突的方法 var jq = jQuery.noConfilct(); jq.ready( function(){     jq("p").hidden() ...

  9. html:关于表单功能的学习

    比如我在某jsp页面中写了如下表单: <form action="/MavenWeb/TestFormPost" method="get">   & ...

  10. LeetCode:Word Break(DP)

    题目地址:http://oj.leetcode.com/problems/word-break/ 简单的动态规划问题,采用自顶向下的备忘录方法,代码如下: class Solution { publi ...