Система Anylogic M / M / 2 / [4] не смоделирована правильно? - PullRequest
0 голосов
/ 05 июня 2018

Я удивлён, почему не могу правильно смоделировать простую систему очередей.

Система выглядит следующим образом:

Поток Пуассона притока (экспоненциальное распределение)со скоростью 1 агент за 2 минуты.

очередь с емкостью 2.

Два (2) сервера со скоростью обслуживания 1 агент за 3 минуты каждый.

Если система заполнена (оба сервера и два места в очереди заняты), новые агенты не войдут в систему, но будут уничтожены.

В Anylogic я смоделировал систему следующим образом: Модель

Элемент источника задается с интервалом времени обращения 2, и агенты уничтожаются, когда они не могут войти в систему (поскольку очередь заполнена). source EDIT: Как указал Фелипе, оно должно быть "экспоненциальным (0,5)", а не просто "2";Тем не менее, это не решает проблему.Измерения все еще неверны: очередь теперь имеет среднюю длину 0,55 против 0,413 (должно быть), в системе теперь среднее число агентов 1,92 против 1,727 (должно быть), а средний коэффициент потерь составляет 8,67% против12,4% (должно быть).

Очередь указана с емкостью '2' и механизмом FIFO. очередь

Элемент задержки указывается с емкостью '2' и продолжительностью задержки 'экспоненциальной (1.0 / 3.0)' минут. задержка

Раковина обычная ванильная. раковина

Теперь теория очередей говорит нам, что мы ожидаем, что в системе будет наблюдаться среднее число агентов в 1,7727.А ограничение среднего числа агентов в очереди составляет 0,413.И средний уровень потерь (уничтоженные агенты) составляет 12,4%.

Но когда я моделирую систему с Anylogic, я получаю разные результаты.Как ни странно, среднее значение агентов в очереди является правильным с 0,413.Но средний коэффициент потерь в anylogic моделировании составляет около 1,7%, а среднее значение агентов в системе примерно равно 1,83.

Коэффициент потерь можно легко рассчитать с помощью действия «Отменить» в «источнике».'элемент: "CountLost ++;"(«CountLost» - переменная, которую я создал). Затем я могу сравнить переменную «CountLost» с полным числом созданных агентов.

В чем моя ошибка?

Большое спасибо за вашеПомогите!Мартин

РЕДАКТИРОВАТЬ2: Фелипе попросил вычисления: Расчет

1 Ответ

0 голосов
/ 07 июня 2018

Хорошо, я разгадал тайну.Действительно, у Anylogic, похоже, есть ошибка в элементе source при использовании «Агенты, которые не могут выйти: уничтожены».Я реконструировал систему, используя «принудительное нажатие» в источнике и selectOutput, напрямую подключенный к источнику.SelectOutput направляет агентов во вторую (отбрасывать) -помощь, если очередь заполнена.Вот так: NewModel

Теперь измерения верны.

РЕДАКТИРОВАТЬ: Я получил слово от поддержки Anylogic:"На самом деле блок источника, которыйуничтожает агентов, если очередь заполнена, хранит 1 агента внутри (если агент не может выйти). Уничтожается только 2-й и последующие агенты. В этом случае модель ведет себя так, как будто есть очередь с ёмкостью = 1, затем идет очередь с ёмкостью = 2и, наконец, Delay and Sink. Это старая особенность блока Source, это происходит из-за протокола pull. Я разместил задачу для разработчиков по реализации опции мгновенного уничтожения агентов, которые не могут выйти. "

...