Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория систем массового обслуживания. Учебно-методическое пособие
.pdf
21
Запуск модели и сбор статистики
Добавьте в модель переменные для подсчета количества отказов
(countRefused) и общего количества заявок (countTotal). В момент возникновения отказа (то есть при условии delay.size() >= 1 в SelectOutput) увеличивайте переменную countRefused.
Перетащим из палитры «Агент» элемент «Переменная» и назовем его
countRefused.
Рис. 2.13. Палитра «Агент»
Рис. 2.14. Назначение свойств переменной countTotal
Аналогично создадим переменные countRefused и P(отказа).
Рис. 2.15. Назначение свойств переменной countRefused
Рис. 2.16. Назначение свойств переменной P

22
Диаграмма процесса приобрела следующий вид.
Рис. 2.17. Диаграмма процесса
Добавьте вывод на экран P(отказа), рассчитываемую как countRefused
/ countTotal, и сравните с теоретической P(отказа). Будем увеличивать значения переменных и пересчитывать вероятность в блоке SelectOutput.
Рис. 2.18. Изменение значений переменных в процессе моделирования
Запустите модель на время, достаточное для сбора статистики (например, на 1 000 часов для случайного потока с λ = 2, общее число заявок будет
~2 000).

23
Рис. 2.19. Вычисление вероятности отказа в симуляции
Сравните полученное значение P(отказа) с рассчитанным теоретически. Убедитесь, что они близки (погрешность может быть из-за случайности
данных, в пределах 1–2 %).
Запись результатов
Запишите для каждого набора параметров (λ и μ) теоретическую P(отказа) и практическую, полученную в AnyLogic. Сравните.
Постройте график зависимости P(отказа) от ρ (ρ = λ / μ).
Вывод:
Анализ результатов показал, что вероятность отказа в одноканальной
СМО растет с увеличением коэффициента загрузки ρ (то есть когда входной
поток заявок усиливается или обслуживание замедляется). При этом результаты имитационного моделирования близки к теоретическим значениям,
что подтверждает корректность реализации модели.
Для оптимизации реальных систем необходимо иметь в виду, что при
ρ, близком к 1, вероятность отказа становится значительной. Нужно либо
уменьшать ρ, либо расширять возможности системы (например, увеличивать количество каналов).
Лабораторная работа № 3
Многоканальная СМО с очередью
Цель работы: исследование характеристик многоканальной системы
массового обслуживания (СМО) с очередью (M/M/n). Определение свойств
такой системы, включая среднее время ожидания в очереди и среднее число
занятых каналов. Создание модели данной СМО в среде AnyLogic.
Подготовка к работе:
Убедитесь, что среда имитационного моделирования AnyLogic установлена и открыта.

24
Повторите структуру и терминологию СМО из предыдущей лабораторной работы.
Просмотрите объекты на палитре AnyLogic, связанные с многоканальными СМО.
Теоретические сведения:
Многоканальная СМО с очередью (M/M/n или M/M/c, где n или c –
число каналов) описывается так:
λ (лямбда) – интенсивность входящего потока заявок;
μ (мю) – интенсивность обслуживания каждого канала (1/μ – среднее
время обслуживания одной заявки);
n – число каналов обслуживания (серверов).
Если все каналы заняты, новая заявка становится в очередь. Очередь
может быть как ограниченной, так и неограниченной. В данной работе рассмотрим случай неограниченной очереди.
Характеристики системы (в материалах лекции найдите формулы):
коэффициент загрузки каждого канала: ρ;
вероятность простоя системы: Рₒ;
вероятность наличия очереди: (P(очередь > 0));
средняя длина очереди: Lₒ;
среднее число заявок в системе: L;
среднее время пребывания заявки в системе: T.
Для упрощения рассмотрим пример с n = 2 каналами обслуживания
(очередь без отказов).
Задание:
Задайте параметры СМО: n = 2, λ = 4 заявки/час, μ = 3 заявки/час
(на один сервер).
Рассчитайте теоретические характеристики системы (Рₒ, Lₒ, L, T и др.).
Создайте модель в AnyLogic, допускающую наличие очереди и двух
сервисов.
Проведите несколько экспериментов, определив влияние параметров
на характеристики.
Определите, как влияет число каналов n на среднее время ожидания
в очереди.
Ход работы:
Расчет теоретических характеристик
Используя формулы для данного типа СМО, рассчитайте характеристики системы. Для сравнения будем использовать имитационное моделирование.
Создание модели в AnyLogic
Откройте AnyLogic и создайте новый проект.

25
Рис. 3.1. Создание модели
Перетащите на диаграмму следующие блоки из палитры Process
Modeling Library. Если вы постоянно используете одни и те же блоки, они
будут собираться в отдельную палитру «Избранное».
Рис. 3.2. Палитра «Избранное»
Source (Источник). Задайте интенсивность поступлений 4.

26
Рис. 3.3. Назначение свойств объекту Source
Расположите элементы для обработки заявок.
Queue (очередь) – перед обслуживанием заявки должны встать в оче-
редь (с ограничением по длине или без – по умолчанию очередь вмещает
100 агентов).
Рис. 3.4. Диаграмма процесса
Для бесконечной очереди поставим галочку «Максимальная вместимость», очередь будет условно бесконечной (эксперимент, скорее всего, закончится раньше, чем будут заняты все места в очереди).
Рис. 3.5. Назначение свойств объекту Queue
Так как мы моделируем многоканальную систему, добавим блок SelectOutput.

27
Рис. 3.6. Добавление блока SelectOutput
Данный блок позволит создать пока всего два канала обслуживания.
Зададим для них равные вероятности.
Рис. 3.7. Назначение свойств объекту SelectOutput
Добавим два блока задержки.
Рис. 3.8. Добавление блоков Delay
Настроим время задержки exponential(1 / 3.0).
Рис. 3.9. Назначение свойств блокам Delay

28
Sink – выход из системы. Добавим выход из системы для обработанных
требований и для тех, которые не поместились в очереди. Для тех, кто не попал в очередь, сделаем выход через порт outPreempted.
Рис. 3.10. Соединение порта outPreempted с блоком Sink
В свойствах очереди разрешим вытеснение.
Рис. 3.11. Изменение свойств блока Queue
Проверим работу модели. Если есть свободный канал, заявка пойдет
без ожидания. Если оба заняты, она останется в очереди. Если в очереди нет
места, заявка выходит из системы.
Запуск модели
Рис. 3.12. Запуск модели

29
На диаграмме мы видим, сколько заявок было обслужено, длину очереди, количество отказов в обслуживании.
Сбор статистики
Сначала соберем данные для определения среднего времени пребывания заявки в системе. Добавим блоки timeMeasureStart и timeMeasureEnd.
Рис. 3.13. Обновление диаграммы процесса
Свяжем элементы между собой. В свойстве объекты timeMeasureStart
нажмем указатель и на диаграмме щелкнем старт таймера.
Рис. 3.14. Свойства объекта timeMeasureEnd
В результате будет считаться время нахождения заявки между блоками.
Рис. 3.15. Связывание блоков таймера
Теперь при запуске симуляции таймер будет фиксировать проходящие
заявки.

30
Рис. 3.16. Запуск симуляции модели
Чтобы получить информацию о среднем времени нахождении заявки
в системе, нам понадобится значение timeMeasureEnd.dataset.getYMean().
Будем следить за его изменением с помощью диаграммы. Из палитры «Статистика» перенесем на диаграмму столбиковую диаграмму.
Рис. 3.17. Палитра «Статистика»
Рис. 3.18. Вид рабочей области
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
