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

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

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
11
Рис. 1.12. Второй шаг диаграммы
Перетащите элемент Delay (обслуживание клиента сотрудником банка). Этот элемент задерживает агента на установленное время.
Рис. 1.13. Элемент Delay в библиотеке
Перетащите элемент Sink (выход клиента из системы). Данный элемент удаляет агентов из модели.
Рис. 1.14. Элемент Sink в библиотеке
Шаг 3. Соединение элементов
Нажмите двойным щелчком на маленький кружок справа от Source (out) и потяните стрелку к in слева от Queue. Повторите так же для осталь­ных элементов (out → in).
Рис. 1.15. Построенная диаграмма
Шаг 4. Настройка параметров
Выберите Source, перейдите в панель Properties и выставьте: Arrivals defined by → Rate (интенсивность прибытия клиентов в систему, прибывают согласно интенсивности).
12
Rate → 10 (клиентов в час).
Рис. 1.16. Настройка параметров источника клиентов
Выберите Delay, выставьте Delay time → triangular (2, 5, 10) (время об­служивания клиента: треугольное распределение – минимум 2, мода 5, мак­симум 10 минут).
Рис. 1.17. Настройка параметров элемента Delay
Шаг 5. Запуск модели
Нажмите Run в панели инструментов (зеленая стрелка). Откроется окно симуляции с анимацией. Если у вас в приложении открыто несколько про­ектов, надо нажать на стрелочку раскрывающегося списка справа от кнопки запуска и выбрать нужную симуляцию.
Рис. 1.18. Запуск модели
13
Рис. 1.19. Окно симуляции
Так как по свойству источника появляется всего 10 клиентов в час, не­много ускорим симуляцию, используя кнопки внизу окна. С помощью кно­пок на этой панели мы можем запускать и останавливать симуляцию, пере­ключаться между режимами реального и виртуального времени.
Числа около элементов диаграммы показывают состояние: над эле­ментом – сколько агентов находится в данный момент в этом объекте мо­дели, слева – сколько ожидает, справа – количество агентов, покинувших объект.
Рис. 1.20. Числа показывают количество обслуженных клиентов и клиентов
Шаг 6. Анализ результатов
В симуляции клиенты будут появляться, становиться в очередь и об­служиваться. Обратите внимание на очередь: со временем она растет, по­тому что времени обслуживания клиента недостаточно относительно скоро­сти их прибытия. По умолчанию вместимость очереди 100.
14
Рис. 1.21. Свойства элемента «Очередь»
При изменении вводных данных (например, если мы уменьшим вме­стимость очереди, увеличим поток клиентов или дождемся переполнения очереди) программа выдаст ошибку. Изменим свойство элемента Source (интенсивность прибытия).
Рис. 1.22. Увеличение интенсивности до 100 клиентов в час
Уменьшим вместимость очереди.
Рис. 1.23. Изменение свойства элемента «Очередь»
Запустим симуляцию. Ускорим ее и получим ошибку.
15
Рис. 1.24. Экран симуляции с сообщением об ошибке
Вернем прежние значения и запустим симуляцию еще раз. Нажмем на элемент «Очередь». У нас появится окошко с данными по этому элементу.
Рис. 1.25. Окно со свойствами и статистикой по элементу «Очередь»
AnyLogic Cloud позволяет запускать модели онлайн, делиться ими с другими и проводить множество симуляций одновременно.
В главном меню выберите «Экспорт…» → «В облако AnyLogic».
Рис. 1.26. Экспорт проекта
Следуйте инструкциям, чтобы загрузить модель в облако (требуется ак-
каунт AnyLogic Cloud).
16
Лабораторная работа № 2
Одноканальная СМО с отказами
Цель работы: исследование характеристик одноканальной системы массового обслуживания (СМО) с отказами (M/M/1/0), определение вероят­ности отказа и среднего числа заявок в системе, создание модели в среде AnyLogic для тестирования.
Подготовка к работе:
Установите среду имитационного моделирования AnyLogic (если еще не установлена).
Изучите структуру и основную терминологию СМО (поток заявок, время обслуживания, отказ и т. д.).
Познакомьтесь с элементами интерфейса AnyLogic для создания моде­лей СМО.
Теоретические сведения:
Одноканальная СМО с отказами (M/M/1/0) описывается следующими параметрами:
λ (лямбда) – интенсивность входящего потока заявок (среднее число заявок, поступающих в единицу времени);
μ (мю) – интенсивность обслуживания (среднее число заявок, обслужи­ваемых в единицу времени).
Состояние такой СМО можно представить как 0 (канал свободен) и 1 (канал занят).
Рис. 2.1. Схема одноканальной СМО с отказами
Вероятность отказа в системе M/M/1/0: P(отказа) = ρ / (1 + ρ), где ρ = λ / μ – коэффициент загрузки системы.
Вероятность обслуживания: P(обслуживания) = 1 – P(отказа).
Задание:
Задайте параметры λ и μ для СМО (например, λ = 2 заявки/час, μ = 3 заявки/час).
Рассчитайте теоретически вероятность отказа и обслуживания заявки.
Создайте модель в AnyLogic, имитирующую работу одноканальной СМО с отказами.
Проведите серию экспериментов с разными значениями λ и μ и сопо­ставьте результаты расчетов и моделирования.
Определите, как изменения интенсивности входного потока и обслужи­вания влияют на вероятность отказа.
17
Ход работы:
Расчет вероятности отказа и обслуживания
ρ = λ / μ = 2 / 3 ≈ 0.6667;
P(отказа) = ρ / (1 + ρ) = 0.6667 / (1 + 0.6667) ≈ 0.4 (40 %);
P(обслуживания) = 1 – 0.4 = 0.6 (60 %).
Создание модели в AnyLogic
Откройте AnyLogic и создайте новый проект.
Рис. 2.2. Создание новой модели
При создании модели мы не меняем модельное время, но при необхо­димости можем его поменять позже. Для этого надо перейти в палитру «Проекты» и в свойствах проекта изменить значение свойства «Единицы модельного времени».
Рис. 2.3. Задание единиц модельного времени
На панели «Палитра» (Palette) найдите библиотеку Process Modeling Library.
18
Рис. 2.4. Палитра «Библиотека моделирования процессов»
Перетащите объекты Source (источник), Delay (обслуживание), Sink (выход).
Рис. 2.5. Диаграмма проекта
Назначьте свойства элементам проекта.
Source генерирует заявки. Во вкладке «Прибывают согласно» выберите «Интенсивности» и установите λ (например, 2.0).
Рис. 2.6. Свойства объекта Delay
19
Delay обрабатывает заявки. В качестве времени обработки укажите exponential(1 / μ) (например, exponential(1 / 3.0)).
Поскольку наша СМО с отказами, установите для блока Delay вмести­мость 1. Это означает, что в системе не может быть больше одной заявки, и все новые заявки, пришедшие в занятую систему, будут получать отказ.
Рис. 2.7. Свойства объекта Service
Запустим симуляцию, чтобы убедиться, что все работает.
Рис. 2.8. Запуск симуляции
Симуляция очень быстро показала ошибку, так как при занятом Delay агентам некуда идти.
Каждый раз, когда поступает новая заявка, будем проверять, свободен ли сервис. По умолчанию в AnyLogic, если сервис занят, заявка просто будет ждать (дело до отказа не дойдет). Чтобы сделать именно СМО с отказами, принимаем заявку в сервис, только если он свободен.
Чтобы сделать отказы, подключите выход блока Source к блоку выбора
SelectOutput.
Рис. 2.9. Блок SelectOutput в «Библиотеке моделирования процессов»
20
Сдвиньте блок Delay вправо и вниз, между ним и блоком Source до­бавьте блок SelectOutput. Правый выход (выход true) соедините с блоком Sink, нижний – с блоком Delay. Для этого делаем двойной клик на выходе и кликами отмечаем траекторию пути, затем щелкаем на входе блока Delay.
Рис. 2.10. Диаграмма процесса
Механизм обработки отказа будет выглядеть следующим образом. Ис­пользуем блок SelectOutput после Source, который направляет заявки либо в Delay (если он свободен) либо сразу в Sink (при отказе), определяя это по условию delay.size() >= 1 (то есть заявка уже есть внутри – сервис занят).
Настройте SelectOutput так: добавьте условие service.size() >= 1. Если это условие истинно, агент идет на выход true (отказ). На выход false – на об­служивание.
Рис. 2.11. Свойства элемента SelectOutput
Подсоедините выход true (отказ) к блоку Sink. Подсоедините выход false (обслуживание) к блоку Delay.
Рис. 2.12. Запущенная симуляция
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]