Рассмотренная в разд. 3.2 система массового обслуживания (СМО), моделирующая операционный зал банка, является типичной для широкого круга систем, моделирующих сервисное обслуживание. Другими примерами СМО являются парикмахерские, телефонные станции, магазины, бензоколонки и т. п. В моделях таких систем типичными объектами являются заявки и обслуживающие их приборы. Заявки моделируют клиентов, заказы на вы-
полнение работ, телефонные вызовы, покупателей, автомашины и т. п. Приборы обслуживания моделируют кассиров, продавцов в магазине, лифты, линии передачи данных и т. п. Сам процесс обслуживания — с точки зрения модели — это просто временная задержка. Каждая СМО состоит из какого-то числа приборов обслуживания и имеет на входе потоки заявок, поступающих обычно в случайные моменты времени. Обслуживание заявки каждым прибором СМО происходит обычно также в течение случайного времени. Различные СМО отличаются характеристиками случайных входных потоков заявок, числом обслуживающих приборов и дисциплиной обслуживания. Дисциплиной обслуживания называют порядок прохождения заявками приборов в системе, правила ухода заявок из системы, характеристики времени обслуживания заявок приборами, правила организации очередей к приборам.
Системы массового обслуживания являются типичными системами событийно-дискретного типа. Событием в СМО является появление в системе очередной заявки, постановка заявки в очередь на обслуживание, начало и окончание обслуживания и т. п.
Из-за однотипности, похожести задач, решаемых моделями систем массового обслуживания, удобно отдельные блоки (генераторы заявок, обслуживающие приборы, очереди и т. п.) реализовать как набор (библиотеку) объектов, из которых может собираться структура конкретной модели и параметры которых можно настраивать в зависимости от характеристик моделируемой системы.
Именно для этих целей в AnyLogic создана библиотека Enterprise Library. Она предоставляет высокоуровневый интерфейс для быстрого создания дискретно-событийных моделей с помощью блок-схем. Построим с помощью элементов библиотеки модель системы, предоставляющей сервисы — операционный зал банка.
Постановка проблемы
Проблема описана в разд. 3.2.1. В банке есть два менеджера, отвечающие за два различных типа операций. Клиент, пришедший в банк, становится в очередь к одному из этих менеджеров в зависимости от требуемой ему операции. После обслуживания менеджером каждый клиент идет в кассу, получая либо сдавая деньги. Очередь в кассу общая.
Рисунок 6.22 показывает структуру модели операционного зала банка на том уровне абстракции, который достаточен для ответа на подобные вопросы. Обслуживающий прибор может быть представлен просто как блок задержки.
Блоки, представленные на рис. 6.22, часто используются для моделирования систем массового обслуживания. Все такие блоки есть в библиотеке Enterprise Library.
Постройте модель операционного зала банка. Создайте новый проект, назовите его QueuingModelLibrary, откройте библиотеку Enterprise Library и в окно структуры корневого активного объекта методом drag-and-drop внесите из библиотеки следующие элементы — рис. 6.23. Блоки serverA, serverB и serverc — это экземпляры блока Delay библиотеки. Соедините блоки нужным образом и запустите модель на выполнение. (Соединяются блоки библиотеки так же, как интерфейсные переменные или порты.)
Настройка параметров включенных в модель блоков из библиотеки тоже не займет много времени. Пусть в соответствии с измерениями (или предположениями) поток клиентов к первому менеджеру является случайным, интервалы времени между клиентами в нем распределены экспоненциально со средним 16.5 мин., поток ко второму менеджеру — тоже экспоненциальный со средним интервалом времени между приходами клиентов 12.5 мин.
Выделите блок source, и в окне свойств этого объекта в строчке параметра interarrivalTime запишите exponential (1/16.5). Заметим, что параметром функции exponential (которая при обращении к ней генерирует реализацию случайной величины с экспоненциальным законом распределения) является интенсивность потока событий, обратная среднему времени межд> событиями. Остальные параметры этого объекта не изменяйте. На рис. 6.24 видно, что измененные значения параметров в соответствующих полях свойств блоков выделяются полужирным шрифтом.
Аналогично измените значение параметра interarrivalTime у другого генератора потока заявок source1.
Пусть время обработки заявок обоими менеджерами и кассиром тоже случайно, и пусть оно распределено экспоненциально со средними значениями 15, 10 и 6.5. Введите соответствующие значения параметра delayTime у экземпляров delay, delayl И delay2 (рис. 6.25).
запустите модель на выполнение. Целью моделирования подобной сервис-ной системы является, конечно, не просто имитация функционирования его служащих и поведения клиентов, а определение тех параметров, которые
характеризуют качество сервиса и затраты на обеспечение этого сервиса при определенных характеристиках входного потока клиентов и структуры системы. В частности, средней длины очередей, занятость обслуживающегс персонала и т. п.
Окно root модели банка после обработки ~32 тыс. заявок представленс на рис. 6.26. На нем видно, что 14 032 заявки прошли через первого менеджера (delay), 18 364 заявки — через второго менеджера (delay1) и 32 336 заявок обработано кассиром. Далее на этом же рисунке видно, что в данный момент времени до генерации очередной заявки объекту source осталось 10.635 мин., a source1 — 0.366 мин., в очереди к первому менеджеру стоит одна заявка, ко второму — 7 заявок, а к кассиру — 60 заявок.
Все эти значения получены без каких-либо усилий со стороны разработчика модели. Они представляются при работе библиотечных блоков автоматически. Блоки библиотеки Enterprise Library имеют и другие встроенные средства сбора статистической информации, однако по умолчанию сбор части статистики отключен для повышения производительности модели. В окне j
СВОЙСТВ блоков queue, queuel И queue2, а также delay, delayl И delay:
в поле значений параметра statsEnabled вместо false вставьте из выпадающего меню значение true. Запустите систему на выполнение опять.
На рис. 6.27 представлено окно root модели банка, в которой для экземпля-ров активных объектов Queue и Delay включен сбор статистики. В системе собирается статистика по длинам очередей для Queue и статистика по коэффициенту использования (доля времени занятости) для блоков Delay, представляющих в нашей модели менеджеров. В системе обработано бол 34 тысячи заявок. Видно, что средняя длина очереди queue равна 9.968, очереди queuel равна 3.963, а очереди queue2 равна 12.437. Коэффициент использования двух менеджеров и кассира соответственно 0.914, 0.795 и 0.918
На основе этого анализа можно с уверенностью сказать, что при указанных ранее входных потоках клиентов и производительности обслуживания за-фиксированная в модели структура операционного зала банка неудовлетворительна. Первый менеджер (которого моделирует блок delay) и кассир (блок delay2) перегружены, средняя длина очередей к ним 10—12 человек, Клиенты банка будут не удовлетворены.
Аналогичная модель под именем QueuingModelLibraryl находится в папке Первые модели.