В этом примере показано, как минимизировать время, необходимое для обслуживания клиентов с высоким приоритетом, с помощью очереди приоритетов и блоков коммутатора ввода и вывода объектов. Клиенты обслуживаются в зависимости от их приоритетов обслуживания. В этом примере два типа клиентов входят в систему очередей. Один тип представляет высокоприоритетных клиентов с высокой срочностью. Второй тип клиентов имеет более низкий приоритет и обслуживается с меньшей срочностью. Приоритетная очередь ставит высокоприоритетных клиентов выше низкоприоритетных.

В модели прибывающие клиенты представлены генератором объектов и Generator1 объектов.
В блоке Entity Generator время между поступлениями клиента генерируется из экспоненциального распределения со средним значением 3.
Блок «Генератор объектов» генерирует объекты, имеющие атрибуты. priority и start time. priority атрибут имеет значение 1, что является срочностью обслуживания клиента. start time атрибут также имеет значение 1, которая инициализирует значение времени начала, используемое в модели.
Аналогично, объект Generator1 генерирует объекты, время между поступлениями которых генерируется из экспоненциального распределения со средним значением 1. Объекты имеют одинаковые атрибуты, priority и start time. priority атрибут имеет значение 2 что является срочностью обслуживания клиента. start time атрибут имеет значение 1.
Блок коммутатора вывода объектов принимает объекты, созданные генератором объектов, и блоки Generator1 объектов и пересылает их в очередь приоритетов.
Блок Entity Queue представляет постановку клиентов в очередь и определяет их приоритеты на основе срочности обслуживания.
Емкость блока очереди объектов: 25.
Для типа очереди установлено значение Priority для сортировки объектов на основе их значений приоритета.
Для источника приоритета установлено значение priority, который является атрибутом, используемым для сортировки объектов.
Для направления сортировки установлено значение Ascending. Объекты с более низкими значениями priority размещаются в передней части очереди. В этой настройке клиенты с priority значение 1 имеют приоритет над клиентами со значением 2.

Блок Simulink Function используется для метки времени объектов, которые входят в блок Entity Queue.
В блоке Очередь сущностей (Entity Queue) на вкладке Действия с событиями (Event actions) в действии Запись (Entry) используется следующий код, чтобы каждый раз при входе сущности в блок getCurrentTime() Вызывается функция Simulink.
entity.starttime = getCurrentTime();
В блоке Simulink Function блок цифровых часов используется для временной метки объекта, входящего в блок Entity Queue.

Блок сервера сущностей представляет услугу, которую получает клиент.
Блок «Переключатель вывода объектов» выводит объекты для отправки.
Критерий переключения установлен в значение From attribute, который выбирает путь отправления на основе атрибута сущности.
Для имени атрибута коммутатора установлено значение priority. Если priority значение равно 1, блок переключается на выходной порт 1 и если priority значение равно 2, блок переключается на выходной порт 2 для отъезда организации.

Когда объект входит в блок терминатора объекта, recordHighPriorityWaitTimes(starttime) вызывается функция для вычисления времени, затраченного между поступлением объекта в блок Entity Queue и его отходом от блока Entity Terminator.
В блоке Терминатор сущности (Entity Terminator), на вкладке Действия с событиями (Event actions), в разделе Запись (Entry), recordHighPriorityWaitTimes(starttime) вызывается функция.
Входной аргумент функции: startime, которая является отметкой времени, которая была записана при входе объекта в блок Entity Queue.
Блок Simulink Function принимает этот аргумент и вычисляет разницу между временем начала и временем отправления.

Аналогично, recordLowPriorityWaitTimes(starttime) функция вычисляет время для низкоприоритетных объектов.
Вычисленное общее время обслуживания отображается блоком области панели мониторинга.
Время моделирования модели устанавливается равным 100.
Смоделировать модель и наблюдать за результатами, отображаемыми в блоке Область панели мониторинга (Dashboard Scope). Блок показывает, что время ожидания высокоприоритетных клиентов значительно меньше, чем низкоприоритетных клиентов.

Переключатель ввода объекта | Переключатель вывода объекта | Очередь сущностей | Сервер сущностей | Функция симулятора