0

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

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

但是,与其他标量参数相比,该B参数未显示在结果的“浏览数据”部分中,直到现在我一直使用它来导出参数研究的结果:

在此处输入图像描述

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

serviceTime声明.ned如下:

volatile double serviceTime @unit(s);
4

3 回答 3

1

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

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

即把interation 变量放在指数函数里面。

于 2015-03-11T11:14:10.267 回答
0

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

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

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

recordScalar("B", par("B"));
于 2015-03-06T12:47:04.750 回答
0

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

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

但是,它不适用于 volatile 参数(完成模拟时出错)。似乎有意避免注册“无意义”的随机值是一种行为。

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

double serviceTime = par("serviceTime").doubleValue();
recordScalar("serviceTime 1", serviceTime);
// ... later
serviceTime = par("serviceTime").doubleValue();
recordScalar("serviceTime 2", serviceTime);
于 2015-03-10T13:35:20.523 回答