omnet++:官方文档翻译总结(五)
Part 6 - 用IDE将结果可视化
学习翻译自:Visualizing the Results - OMNeT++ Technical Articles
①将输出的数值和向量数据可视化(用tictoc15的数据)
OMNET++ IDE支持对结果的分析,包括滤波、处理和展示数值和向量数据,还可以展示直方图。本节之后的图都适用IDE的Result Analysis工具创建出来的。
在项目文件夹中的results目录下包含了.vec和.sca文件,分别存储结果中的vector和数值数据。vector文件中把数据记录为时间的函数,而数值数据只是单纯在仿真结束时把数据集中起来。
在IDE中直接双击打开.vec和.sca文件,就可以进入Result Analysis tool。
Part 7 - Parameter Studies:Tictoc18
学习翻译自:Parameter Studies - OMNeT++ Technical Articles
①目的
我们想要运行一个有不同数量节点的网络仿真,并且观察其中的网络变化。在OMNET++我们可以用parameters studies一次用不同的parameters值运行多个仿真。
我们可以把中心节点变成一个parameter,使用和之前例子中相同的路由算法。最终我们感兴趣的是节点数量如何影响平均跳数。
②使网络拓扑结构参数化(Making the network topology parametric)
为了将整个网络参数化,节点数量将作为NED parameter给出,在本例中为numCentralNodes。这个参数说明了在网络中心环节中有多少个节点——中心节点中不覆盖边缘的两个节点。
包含了边缘4个节点的网络总结点数是numCentralNodes+4。默认的numCentralNodes参数是2,这刚好和我们上一步中定义的网络相匹配。
network TicToc18 { parameters: int numCentralNodes = default(2); types: channel Channel extends ned.DelayChannel{ delay = 100ms; } submodules: tic[numCentralNodes+4] : Txc18;
现在,我们必须说明连入这个网络的不同数量的节点的信息。首先,一边的两个节点与第三个节点连接,另一边的两个节点也和另一个第三个节点相连接。网络中心节点通过一个for循环连接。从第三个节点开始,每个编号为i的节点都要与编号为i+1的节点相连接:
connections: //在一边将两个节点连入中心节点 tic[0].gate++ <--> Channel <--> tic[2].gate++; tic[1].gate++ <--> Channel <--> tic[2].gate++; //中心节点间的互联 for i=2..numCentralNodes+1 { tic[i].gate++ <--> channel <--> tic[i+1].gate++; //在另一边连接另外两个节点到中心节点 tic[numCentralNodes+2].gate++ <--> Channel <--> tic[numCentralNodes+1].gate++; tic[numCentralNodes+3].gate++ <--> Channel <--> tic[numCentralNodes+1].gate++;
这里,中心节点数为4(即numCentralNodes = 4)的网络看起来像下边这样:
为了能够运行由多个不同numCentralNodes的节点的仿真网络,我们可以在ini文件中指定变量N的值:
*.numCentralNodes = ${N=2..100 step 2}
③配置parameter study
我们指定了N为从2到100的步长为2的数列。这将生成50个仿真网络。每个网络都可以在GUI中看到,不过仿真的实际通常是通过cmd接口使用Cmdenv 运行时环境运行。
为了提高仿真准确度,我们需要用不同的随机数运行多次运行相同的仿真。这样的运行称为Repetitions并且在ini文件中加以指定:
repeat = 4
这意味着每个仿真都要被运行4次,每次都有不同的seed。这可以提供更多的样本,使结果更加平均。重复的越多,结果将会越来越变成期望的结果。
④运行parameter study
现在,我们可以运行仿真了。首先通过Run -> Run Configurations进入运行配置对话框。
在Run Configurations对话框中,通过设置User interface选中运行环境为Cmdenv。
如果我们有一个多核CPU,就可以指定允许同时运行的网络模拟数。