Записать нескалярный параметр в Omnet ++

Я использую нескалярный параметр для исследования параметров:

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

Однако по сравнению с другими скалярными параметрами параметр B не отображается в разделе результатов Обзор данных, который я использовал до сих пор для экспорта результатов моего исследования параметров:

введите описание изображения здесь

Как я могу записать параметр экспоненциального распределения (B), который я использую?

serviceTime объявлен в .ned следующим образом:

volatile double serviceTime @unit(s);

person StephenKing    schedule 06.03.2015    source источник


Ответы (3)


Если я не ошибаюсь, вы хотите записать среднее значение экспоненциального распределения. Вот пример того, как это делает пример PureAlohaExperiment:

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

т.е. поместите переменную взаимодействия внутрь экспоненциальной функции.

person Rudi    schedule 11.03.2015

Вы можете добавить в модуль NED параметр с именем B. Затем вы выполните следующие действия в файле omnetpp.ini:

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

Наконец, вы записываете параметр B NED в функцию finish ():

recordScalar("B", par("B"));
person pys    schedule 06.03.2015

Есть опция 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);
person Jerzy D.    schedule 10.03.2015