Выбор семян ГСЧ сильно влияет на результаты моделирования - PullRequest
0 голосов
/ 10 января 2019

Я впервые разрабатываю симуляцию в Omnet ++ 5.4, в которой используется библиотека queueinglib. В частности, я построил простую модель, которая охватывает сервер и некоторые пассивные очереди.

Я повторял симуляцию разное, устанавливая разные начальные значения и параметры, как написано в Руководстве по симуляции Omnet, вот мой omnetpp.ini:

# specify how many times a run needs to be repeated
repeat = 100
# default: different seed for each run
# seed-set = ${runnumber}
seed-set = ${repetition} # I tried both lines

OppNet.source.interArrivalTime = exponential(${10,5,2.5}s)

Это создает 300 прогонов, 100 повторений для каждого значения параметра распределения interArrivalTime.

Однако я наблюдаю некоторое «странное» поведение, а именно, полученная статистика сильно варьируется в зависимости от начального значения ГСЧ. Например, принимая во внимание длину очередей в моей модели, в большинстве прогонов я имею значения меньше 10, в то время как в некоторых других среднее значение отличается на порядки (85000, 45000?).

Значит ли это, что моя реализация неверна? Или возможно, что случайный выбор семян мог так сильно повлиять на результаты моделирования?

Любая помощь или подсказка приветствуется, спасибо.

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Никто не может сказать, является ли ваша реализация правильной или неправильной, не видя ее. Тем не менее, существуют некоторые общие правила, которые применяются к очередям, о которых вам следует знать. Вы говорите, что изменяете параметр распределения interArrivalTime. Очень важной концепцией в очереди является интенсивность трафика , которая представляет собой отношение скорости обмена данными к скорости обслуживания. Если это соотношение меньше единицы, длина линии может сильно варьироваться, но в долгосрочной перспективе будут интервалы времени, когда очередь опустошается, потому что в среднем сервер может обслуживать больше клиентов, чем поступает. Это стабильная очередь. Однако, если это отношение больше единицы, очередь будет неограниченно расти. Чем дольше вы запускаете систему, тем длиннее будет линия. Многих удивляет то, что линия также асимптотически уходит в бесконечность, когда интенсивность движения равна единице.

Еще одна вещь, которую нужно знать, это то, что чем ближе интенсивность трафика к стабильной очереди, тем больше изменчивость. Это потому, что среднее значение увеличивается, но всегда будут периоды нулевой длины линии, как описано выше. Чтобы нули всегда присутствовали, но имели среднее увеличение, должны быть времена, когда длина очереди становится выше средней, что означает, что изменчивость должна увеличиваться. Изменение начального числа случайных чисел дает вам некоторое представление о величине дисперсии, которая возможна в любой момент времени.

Суть в том, что вы, возможно, просто видите доказательства того, что очереди более странные и более изменчивые, чем вы думали.

0 голосов
/ 10 января 2019

Я не могу исключить, что ваша реализация неверна, не видя ее, но вполне возможно, что вы просто настроили хаотический сценарий. И в этом случае, да, любое незначительное изменение входных данных (в данном случае начальное значение PRNG) может привести к значительному расхождению в результатах.

EDIT

Особенно с учетом данной (нетривиальной) сети массового обслуживания, если вы меняете «нагрузку» (количество / скорость входящих заданий / сообщений с некоторым случайным распределением), вы можете наблюдать различные «режимы» в результатах:

  • при очень небольшой нагрузке, очереди почти нет
  • при очень большой нагрузке (закрытой или при максимальной емкости) большинство очередей почти всегда загружаются или даже постоянно растут без ограничений
  • и где-то посередине между ними вы можете получить это странное поведение, когда иногда пара очередей внезапно становится очень глубокой, затем очищается, затем загружаются разные очереди и т. Д .; как функция времени, или семени PRNG, или обоих - это то, что я подразумеваю под хаотическим

Но это всего лишь предположение ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...