Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория систем массового обслуживания. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
31
Теперь в свойствах диаграммы можно указать источник данных.
Рис. 3.19. Назначение свойств объекту «Столбиковая диаграмма»
Запустим модель и посмотрим, как изменяется вид диаграммы и сред­нее время пребывания в системе.
Рис. 3.20. Симуляция модели
32
Запустите симуляцию на некоторое время (например, 1 000 часов).
Сравните средние показатели (длина очереди, время пребывания за­явки в очереди и системе) с теоретическими.
Рассчитайте вероятность отказа по формулам. Добавьте в модель пере­менные и рассчитайте вероятность отказа в модели.
Если в реальной системе массового обслуживания отказов слишком много, с этим можно справиться двумя способами: увеличить количество каналов или уменьшить время обслуживания.
Для увеличения количества каналов блок selectOutput заменим на блок selectOutput5 – это позволит добавить еще три канала.
Рис. 3.21. Блок selectOutput5 на палитре «Библиотека моделирования процессов»
Встроим его в диаграмму и добавим каналы обслуживания.
Рис. 3.22. Изменение диаграммы процесса
Новым элементам Delay изменим время задержки. По умолчанию в настройках блока selectOutput5 все вероятности равны. Оставьте их без из­менений и попробуйте запустить модель.
33
Рис. 3.23. Свойства блока selectOutput5
Запустим симуляцию и посмотрим, как изменилось число отказов с до­бавлением каналов.
Рис. 3.24. Запуск симуляции
Теперь мы можем управлять распределением вероятности между кана­лами. Измените значения и понаблюдайте за работой системы.
Измените данные модели (λ и μ) и посмотрите, как изменятся характе­ристики системы массового обслуживания.
Запись результатов
Запишите полученные в эксперименте (AnyLogic) и теоретические зна­чения характеристик (L, T и т. д.).
34
Постройте графики зависимости средней длины очереди от λ (при μ = const и n = const).
Вывод:
Многоканальная СМО с очередью эффективно распределяет нагрузку между несколькими каналами. При этом увеличение числа каналов умень­шает вероятность наличия очереди и время ожидания. В ходе лабораторной работы выяснилось, что такие системы позволяют сравнительно легко управлять характеристиками обслуживания, не допуская перегрузок (по сравнению с одноканальными СМО).
Эксперименты с моделью в AnyLogic показали, что вычисление харак­теристик многоканальных СМО требует сложных расчетов, поэтому прак­тические результаты важны для понимания работы моделей. Реализация та­кой СМО в AnyLogic существенно упрощается за счет встроенной логики управления очередями и ресурсами.
Лабораторная работа № 4
СМО с приоритетами
Цель работы: исследование характеристик системы массового обслу­живания (СМО) с приоритетами. Моделирование обслуживания заявок с разными приоритетами в среде AnyLogic. Анализ времени ожидания и об­служивания в зависимости от приоритета.
Подготовка к работе:
Убедитесь, что AnyLogic установлен и открыт. Используйте получен­ные ранее навыки при работе с СМО.
Изучите, как работает добавление приоритетов для заявок (например, агенты в AnyLogic могут иметь поле «Приоритет»). Приоритет может быть числовым (меньше – выше приоритет, либо наоборот).
Теоретические сведения:
СМО с приоритетами – это система, в которой заявки с более высоким приоритетом обслуживаются перед заявками с низким, независимо от вре­мени поступления.
Распространенные виды обработки приоритетов:
1) с относительными приоритетами: если во время обслуживания низ-
коприоритетной заявки поступает высокоприоритетная, текущее обслужи­вание не прерывается. Новая заявка ждет в очереди в зависимости от своего приоритета;
2) с абсолютными приоритетами: поступление заявки с более высоким
приоритетом прерывает обслуживание текущей. Канал обслуживания пере­ключается на новую заявку, а прерванная обслуживается позже (заново или дообслуживается);
35
3) очередь с приоритетами: приоритет влияет только на место в очереди (то есть заявки с высоким приоритетом встают вперед в очереди). Время об­служивания одинаковое. Мы будем рассматривать этот вариант.
В общем случае для такой СМО громоздко считать теоретические ха-
рактеристики вручную, поэтому полагаем, что работает система M/M/1 с очередью (FIFO внутри классов с одинаковым приоритетом).
Задание:
Рассмотрим простой пример с двумя классами заявок. Смоделируйте СМО с двумя типами заявок: приоритет 1 (высокий) и 2
(низкий). Для заявок с приоритетом 1 λ₁ = 2 ед./час, для 2 λ₂ = 4 ед./час. Интенсивность обслуживания μ = 10 ед./час (для всех). ρ = (λ₁ + λ₂ )/μ.
Постройте модель этой СМО в AnyLogic, используя отдельные очереди
для каждого приоритета или общую очередь с сортировкой.
Выясните, как влияет приоритет на время ожидания в очереди и время
пребывания в системе.
Измените интенсивности входных потоков (λ1 и λ2), чтобы увидеть из­менение в характеристиках. Сравните с однопоточной СМО без приорите­тов (λ = λ1 + λ2).
Ход работы:
Создание модели в AnyLogic
Создайте новый проект, задайте имя и папку для хранения модели.
Рис. 4.1. Создание модели
36
В окне палитры Process Modeling Library найдите Source и перетащите два объекта (для потока высокого и низкого приоритетов, назовите их SourceHigh и SourceLow).
Рис. 4.2. Источники агентов с высоким и низким приоритетом
Создайте нового агента и на третьем шаге добавьте ему поле для зада­ния приоритета. По умолчанию задайте 0.
Рис. 4.3. Добавление поля «Приоритет» агенту
Сначала создадим два потока требований одинаковой интенсивности, чтобы лучше увидеть, как работает вытеснение агентов с низким приоритетом.
37
Рис. 4.4. Назначение свойств объекту Source
В свойстве «Новый агент» выберем созданного нами агента. При генера- ции в SourceHigh будем задавать priority равным 1, а в SourceLow – равным 0.
Рис. 4.5. Определение значения свойства «Приоритет»
Добавим очередь, в которой заявки с низким приоритетом будут вытес­няться заявками с высоким приоритетом.
Рис. 4.6. Создание очереди
38
Для обслуживания заявки разместим объект Delay (задержка на обслу­живание triangular( 0.8, 1.2, 1.8 )).
Рис. 4.7. Создание объекта Delay
После Delay расположим выход агентов. Еще один выход добавим для вытесненных агентов.
Рис. 4.8. Диаграмма процесса
Запустим модель, чтобы проверить работу.
Рис. 4.9. Симуляция модели
39
Сейчас мы не можем увидеть, какие агенты вытесняются. Чтобы понять это, добавим две переменные: priority1Count и priority0Count (объект «Пере­менная» из библиотеки «Агент»).
Рис. 4.10. Библиотека «Агент»
Первая переменная будет считать вытесненных агентов с приоритетом 1, вторая – с приоритетом 0.
Рис. 4.11. Добавление переменных
Начальные значения переменных зададим равными 0.
Рис. 4.12. Свойства переменных
40
Чтобы данные о приоритете вытесненного агента добавлялись в пере­менную, при вытеснении из очереди будет выполняться проверка значения свойства «Приоритет».
Рис. 4.13. Код, выполняющийся при вытеснении
Запустим модель и посмотрим, каких агентов вытесняется больше.
Рис. 4.14. Симуляция
Как видим, по большей части вытесняются агенты с низким приоритетом.
Теперь задайте оговоренные ранее характеристики системы, изучите работу модели, соберите статистику по заявкам разных типов (через дата­сеты или переменные). Установите достаточно большое время симуляции для устойчивости результатов (например, 1 000 единиц времени). Обрабо­тайте выходные данные (время ожидания для заявок с высоким и низким приоритетом).
Запись результатов
Результаты показывают, что приоритет 1 (высокий) намного быстрее проходит очередь (его доля задержки ниже). При этом приоритет 0 заметно проигрывает по сравнению с однопоточной очередью (FIFO).
Как следствие, ваша система должна уметь обрабатывать приоритеты в зависимости от бизнес-задач (важные заявки не терпят промедлений).
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]