我在参数研究中使用非标量参数:
*.server.serviceTime = ${B=exponential(20ms), exponential(35ms)}
但是,与其他标量参数相比,该B
参数未显示在结果的“浏览数据”部分中,直到现在我一直使用它来导出参数研究的结果:
如何记录B
我正在使用的指数分布 ( ) 的参数?
serviceTime
声明.ned
如下:
volatile double serviceTime @unit(s);
我在参数研究中使用非标量参数:
*.server.serviceTime = ${B=exponential(20ms), exponential(35ms)}
但是,与其他标量参数相比,该B
参数未显示在结果的“浏览数据”部分中,直到现在我一直使用它来导出参数研究的结果:
如何记录B
我正在使用的指数分布 ( ) 的参数?
serviceTime
声明.ned
如下:
volatile double serviceTime @unit(s);
如果我没记错的话,您想记录指数分布的平均值。以下是 PureAlohaExperiment 示例如何执行此操作的示例:
[Config PureAlohaExperiment]
...
Aloha.numHosts = ${numHosts=10,15,20}
Aloha.host[*].iaTime = exponential(${mean=1,2,3,4,5..9 step 2}s)
即把interation 变量放在指数函数里面。
您可以在 NED 模块中放入一个名为 B 的参数。然后,您可以在 omnetpp.ini 中执行以下操作:
**.B = ${B=exponential(20ms), exponential(35ms)}
最后,在 finish() 函数中记录 B NED 参数:
recordScalar("B", par("B"));
有一个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);