logo
Моделирование систем / Моделирование систем / ModelEkzamen_1 / Практикум_AnyLogic_2

3.2. Система массового обслуживания с отказами

Постройте модель одноканальной системы массового обслуживания (СМО), так как это показано на рисунке 3.14. Элемент sink2 свяжите с портом P , а элемент sink1 с портом T очереди.

Рис.3.14. Модель СМО

Заявки поступают в систему по времени между прибытиями. Изменение времени соответствует экспоненциальному закону распределения с интенсивностью  (lambda), равной 0.5. Для задания времени используйте встроенную функцию AnyLogic exponential(lambda).

Вместимость очереди qN равна 10. Заявки могут покидать очередь по истечении таймаута через порт T. Значение таймаута равно 20. Заявки могут быть вытеснены из очереди, если в очередь приходит заявка с большим приоритетом через порт P. Приоритет заявок целое число, которое выбирается в модели случайно из диапазона от 1 до 5. Для получения кода приоритета используйте функцию AnyLogic uniform, которая возвращает равномерно распределенное число в заданном диапазоне: (int)uniform(1,5).

Так как функция возвращает результат типа double, его нужно преобразовать к типу int с помощью операцию приведения типов Java (type), здесь type – требуемой результирующий тип преобразования.

Процессор обслуживания delay выполняет обработку заявки с явно заданным временным интервалом, который подчиняется экспоненциальному закону распределения. Интенсивность работы процессора  (mu) равна 0.25.

Настройте эксперимент модели:

Модельное время измеряется в минутах.

Конечное время моделирования 500 минут.

Режим выполнения презентации равен 32 единицам.

Создайте интерфейс для эксперимента, так как это показано на рисунке 3.15.

Рис.3.15. Интерфейс эксперимента

Интерфейс позволяет изменять с помощью текстового поля емкость очереди СМО - qN. В качестве начального значения примите длину равную 10 заявкам.

Выполните запуск модели.

Внесите изменения в модель.

Определите в процентах:

Постройте круговую диаграмму, показывающую распределение долей заявок в СМО.

Для вычисления долей заявок в процентах введите в модель динамические переменные, значение которых вычисляется с помощью функции: fProcent(source,exit)

Функция возвращает значение procent, которое определяется по формуле:

Параметры:

source – количество заявок от которого вычисляется процент;

exit – полученное количество заявок (отработанных, вытесненных, отклоненных)

Все параметры функции должны быть типа double. Возвращаемое значение функции, также должно быть типа double.

Для использования функции нужно определить количество соответствующих заявок. Это можно сделать с помощью соответствующих счетчиков, введенных в модель как простые переменные типа double.

Создайте анимацию для процесса обслуживания заявок. В качестве пиктограммы анимации используйте «Сообщение» из палитры «Картинки». Вид анимации в конструкторе модели показан на рисунке 3.16. Если процессор занят, то фигура анимации «Процессор» окрашивается в красный цвет, иначе в зеленый.

Рис.3.16. Анимация заявок

Ломаную линию – траекторию движения заявок настройте таким образом, чтобы она не отображалась в процессе работы модели. Используйте свойство «Цвет линии=Нет линии» из вкладки «Основные».

Рис.3.17. Тестирование модели одноканальной СМО

Постройте гистограмму, отражающую затраты времени на обслуживание заявки в СМО, выведите среднее значение.

Протестируйте созданную модель. Вид работающей модели показан на рисунке 3.17.

Выполните запуск модели с разными значениями для емкости очереди.

Что бы определить, приемлемое значение для емкости очереди используем формулу Литтла:

(3.1)

Здесь: t- время нахождения заявки в СМО от момента поступления до ее обслуживания.

Для вычисления значения t разместите в модель элемент «Данные гистограммы». Создайте набор значений времен нахождения заявок в СМО от момента входа до выхода, после обслуживания.

Дополните созданную модель, добавив в нее динамическую переменную для вычисления значения N по формуле 3.1 беря в качестве времени среднее значение, возвращаемое элементом «Данные гистограммы» с помощью метода mean(). Выведите вычисленное значение.

Рис.3.18. Определение емкости очереди по формуле Литтла

Запустите модель со значением qN по умолчанию, равным 10, вид работающей модели показан на рисунке 3.18. Как видно из результатов моделирования приемлемое значение для емкости очереди составляет значение равное 5 заявкам.

Повторите запуск эксперимента модели, введя с помощью интерфейса, определенное значение N по формуле Литтла. Вид работающей модели показан на рисунке 3.19.

Как видно из рисунка значение отвергнутых заявок по времени ожидания уменьшилось, а возросла доля вытесненных заявок по приоритету.

Рис.3.19. Моделирование СМО с оптимальным значением емкости очереди