В этом примере показано, как минимизировать время, необходимое для обслуживания высокоприоритетных клиентов с помощью очереди приоритетов и блоков Вход Switch и Entity Output Switch. Клиенты обслуживаются на основе их приоритетов обслуживания. В этом примере два типа клиентов заходят в систему постановки в очередь. Один тип представляет высокоприоритетных клиентов с высокой срочностью. Второй тип клиентов является более низким приоритетом и обслуживается с меньшей срочностью. Приоритетная очередь ставит приоритетных клиентов перед низкоприоритетными.
В модели прибывающие клиенты представлены генератором сущностей и Generator1 сущностей.
В блоке Entity Generator время прибытия клиента генерируется из экспоненциального распределения со средним значением 3
.
Блок Генератор сущностей генерирует сущности, которые имеют атрибуты, priority
и start time
. The priority
для атрибута задано значение 1
, что является срочностью обслуживания клиента. The start time
атрибут также имеет значение 1
, который инициализирует начальное значение времени, используемое в модели.
Точно так же Entity Generator1 генерирует сущности, чье промежуточное время прибытия сгенерировано из экспоненциального распределения со средним значением 1
. Сущности имеют одинаковые атрибуты, priority
и start time
. The priority
для атрибута задано значение 2
что является срочностью обслуживания клиента. The start time
для атрибута задано значение 1
.
Блок Выходной Коммутатор Сущности принимает сущности, сгенерированные блоками Генератор Сущностей и Generator1 Сущности, и пересылает их в очередь приоритетов.
Блок Entity Queue представляет очередь клиентов и определяет их приоритеты в зависимости от срочности обслуживания.
Емкость блока Entity Queue 25
.
Для типа очереди задано значение Priority
для сортировки сущностей на основе их значений приоритета.
Для источника приоритета задано значение priority
, который является атрибутом, используемым для сортировки сущностей.
Для направления сортировки задано значение Ascending
. Сущности с более низкими значениями priority
размещаются в передней части очереди. В этой настройке Клиенты с priority
значение 1
приоритеты по сравнению с клиентами с значением 2
.
Блок Simulink Function используется для временной метки сущностей, которые заходят в блок Entity Queue.
В блоке Entity Queue, на вкладке Event actions, в действие входа используется следующий код, так что каждый раз, когда сущность входит в блок, getCurrentTime()
Вызывается функция Simulink.
entity.starttime = getCurrentTime();
В блоке Simulink Function блок Digital Clock используется для временной метки сущности, входящего в блок Сущности Queue.
Блок Entity Server представляет услугу, которую получает клиент.
Блок Выход Switch выводит сущности для отправки.
Критерий переключения установлен в From attribute
, который выбирает путь отправления на основе атрибута сущности.
Для имени атрибута Switch задано значение priority
. Если на priority
значение 1
блок переключается на выходной порт 1
и если priority
значение 2
блок переключается на выходной порт 2
для отъезда сущности.
Когда сущность входит в блок Entity Terminator, recordHighPriorityWaitTimes(starttime)
вызывается функция для вычисления времени, затраченного между прибытием сущности в блок Entity Queue и его уходом из блока Entity Terminator.
В блоке Entity Terminator, на вкладке Event actions, в Элементе, recordHighPriorityWaitTimes(starttime)
вызывается функция.
Входной параметр функции startime
, которая является временной меткой, которая была записана, когда сущность вошла в блок Entity Queue.
Блок Simulink Function принимает этот аргумент и вычисляет различие между временем начала и временем отправления.
Точно так же recordLowPriorityWaitTimes(starttime)
функция вычисляет время для низкоприоритетных сущностей.
Вычисленное общее время обслуживания отображается блоком Dashboard Scope.
Время симуляции модели установлено на 100
.
Симулируйте модель и наблюдайте результаты, отображенные в блоке Dashboard Scope. Блок показывает, что время ожидания для высокоприоритетных клиентов значительно меньше, чем у низкоприоритетных клиентов.
Входной переключатель сущности | Выходной переключатель сущности | Entity Queue | Entity Server | Функция Simulink