在Omnet ++中记录非标量参数

时间:2015-03-06 11:09:10

标签: omnet++

我在参数研究中使用非标量参数:

*.server.serviceTime = ${B=exponential(20ms), exponential(35ms)}

但是,与其他标量参数相比,B参数未显示在结果的浏览数据部分中,我目前使用该部分导出结果参数研究:

enter image description here

如何记录我正在使用的指数分布(B)的参数?

serviceTime.ned中声明如下:

volatile double serviceTime @unit(s);

3 个答案:

答案 0 :(得分:1)

如果我没弄错,你想记录指数分布的平均值。以下是PureAlohaExperiment示例如何执行此操作的示例:

[Config PureAlohaExperiment]
...
Aloha.numHosts = ${numHosts=10,15,20}
Aloha.host[*].iaTime = exponential(${mean=1,2,3,4,5..9 step 2}s)

即。将交互变量置于指数函数内。

答案 1 :(得分:0)

您可以在NED模块中放入一个名为B的参数。然后,在omnetpp.ini中执行以下操作:

**.B = ${B=exponential(20ms), exponential(35ms)}

最后,在finish()函数中记录B NED参数:

recordScalar("B", par("B"));

答案 2 :(得分:0)

有一个选项param-record-as-scalar用于将参数保存为标量。使用它的一个例子:

*.server.serviceTime.param-record-as-scalar = true

但是,它不适用于易失性参数(在完成模拟期间出现错误)。似乎有意避免注册“无意义”的随机值。

如果你真的需要当前的volatile参数随机值,你应该在读取之后将其记录为新的标量,例如:

double serviceTime = par("serviceTime").doubleValue();
recordScalar("serviceTime 1", serviceTime);
// ... later
serviceTime = par("serviceTime").doubleValue();
recordScalar("serviceTime 2", serviceTime);