В SimEvents® модель, блоки Entity Queue и Entity Server являются блоками хранения, которые содержат сущности.
Помещает объекты в очереди и сортирует их в соответствии с политиками очереди.
Серверы задерживают сущности до тех пор, пока не будут выполнены определенные обстоятельства.
Эта модель примера представляет простую систему постановки в очередь, которая генерирует сущности и ставит их в очередь в заданном порядке, обслуживает их, чтобы изменить их атрибуты и завершает их, чтобы представлять их уход из линии. Дополнительные сведения об основных системах постановки в очередь см. в разделе Модели основных систем постановке в очередь.
В дискретно-событийной симуляции блок Entity Queue хранит сущности в течение периода времени, который не может быть определен заранее. Очередь пытается вывести сущности, когда это возможно, но ее выход зависит от того, принимает ли нисходящий блок новые сущности.
Повседневным примером очереди являются люди, ожидающие регистра магазина в линии. Покупатель не может заранее определить, сколько времени он должен ждать, чтобы завершить покупку.
Для примера очередь может представлять поведение:
Самолеты, ожидающие доступа к взлетно-посадочной полосе
Сообщения, ожидающие отправки
Детали, ожидающие сборки на заводе
Компьютерные программы, ожидающие выполнения
Автомобили, ожидающие линии на АЗС
Чтобы определить поведение очереди, задайте:
Емкость - количество сущностей, которые могут храниться в очереди одновременно.
Политика сортировки очереди - определяет, какая сущность уходит первой, например, первая в первой (FIFO), последняя в первой (LIFO) или пользовательский приоритет, если в очереди хранится несколько сущностей.
Политика перезаписи - определяет поведение, когда очередь полна. Можно принять решение заблокировать новую входящую сущность или принять ее для перезаписи самой старой сущности в очереди.
Для получения дополнительной информации о поведении очереди см. Модель основных систем постановки в очередь».
В дискретно-событийной симуляции сервер хранит сущности в течение некоторого времени, называемого service time, затем пытается вывести сущность. В течение периода обслуживания блок serving сущность, который он хранит.
Повседневным примером сервера является лицо (например, банковский кассир или розничный кассир), с которым вы совершаете транзакцию с проектируемой длительностью. Для получения дополнительной информации смотрите Модель основных систем постановки в очередь.
Время обслуживания для каждой сущности вычисляется при прибытии сущности. Однако, если следующий блок не принимает прибытие сущности, завершившего свою службу, сервер вынужден удерживать сущность дольше.
Отличительные функции сервера включают в себя:
Количество сущностей, которым он может служить одновременно, которое может быть конечным или бесконечным.
Характеристики или метод вычисления времени обслуживания прибывающих сущностей.
Разрешает ли сервер поступающим сущностям упреждать сущности, которые уже сохранены на сервере. Для получения дополнительной информации см. раздел «Превентивное выполнение задач в многозадачном процессоре».
Совет
В отсутствие исключения сервер с конечной емкостью не принимает новые поступления, когда он уже полон. Вы можете поместить очередь перед каждым сервером конечной емкости, чтобы установить место, где сущности будут оставаться, пока они ждут, когда сервер примет их. В противном случае ожидающие сущности могут храниться в различных местоположениях модели, и поведение может оказаться более трудным для вас для предсказания или анализа.
Можно использовать сервер, чтобы представлять реальные системы, такие как:
Лицо (например, банковский кассир), которое выполняет транзакцию с каждым прибывающим клиентом
Передатчик, который обрабатывает и отправляет сообщения
Машина, которая собирает детали на заводе
Компьютер, который выполняет программы
Модуль обработки в приложении производственной линии
Процессор в сетевом приложении
В некоторых случаях сервер не представляет реальную систему. Общая техника моделирования включает задержку нулевой длительности (то есть бесконечного сервера, чье время обслуживания меньше нуля), чтобы обеспечить место для проживания сущности, чтобы управлять его атрибутами.
Можно использовать события и действия события, чтобы управлять атрибутами сущности и создавать пользовательское поведение в системе построения очередей. Для получения дополнительной информации о действиях события см. События и Действия события.
Предположим, что вы хотите изменить атрибуты сущности, когда сущности заходят или выходят из блока Entity Queue или Entity Server. Можно использовать действия, которые вызываются событиями, такими как вход в блок, выход из блока или завершение службы. Для получения дополнительной информации смотрите Модель основных систем постановки в очередь. Можно также использовать действия события для создания пользовательских шаблонов маршрутизации сущностей. Для получения дополнительной информации смотрите Использование действий события очереди для моделирования бака хранения.
Соединение двух пар сервер-очередь последовательно может представлять последовательные операции для сущности. Для примера можно смоделировать, как детали на линию сборки обрабатываются последовательно двумя машинами.
Также можно смоделировать тот же сценарий при помощи пары серверов без очереди между ними.
Однако при отсутствии очереди, если первый сервер завершает свою службу в сущности и если второй сервер доступен для принятия новой сущности:
Сущность должна оставаться на первом сервере после окончания обслуживания.
Первый сервер не может принять новую сущность для обслуживания, пока не станет доступен второй сервер.
Соединение двух очередей последовательно может быть полезно, если вы используете сущности для моделирования элементов, которые испытывают два различных набора физических условий во время хранения. Например, дополнительные элементы, которые переполняют один склад, должны находиться в другом складе, где менее хорошо регулируемая температура влияет на долгосрочное качество элементов.
Моделирование двух областей хранения как отдельных блоков очереди облегчает просмотр средней продолжительности времени, в течение которого сущности остаются в области хранения переполнения. Для получения дополнительной информации смотрите Модель основных систем постановки в очередь.
Соединение двух пар «очередь-сервер» параллельно, в котором сущности маршрутизируются к одной или к другой паре «очередь-сервер», может представлять альтернативные операции. Для примера можно смоделировать, как транспортных средств ждете в линию одного из нескольких панелей на платной площади. В этом случае модель должна иметь логику принятия решений, возможно, в форме switch, который предшествует этому шаблону. Для получения примера смотрите Обслуживание высокоприоритетных клиентов путем сортировки сущностей на основе приоритета.
Соединение двух пар «очередь-сервер» параллельно, в котором копия каждой сущности приходит к каждому, может представлять сценарий многоадресной передачи, такой как отправка сообщения нескольким получателям. Обратите внимание, что копирование сущностей может не иметь смысла в некоторых приложениях. Для получения примера смотрите Широковещательные объекты, использующие Многоадресную рассылку сущностей.
Если вы хотите смоделировать более сложные блоки хранения сущностей и расширить поведение блоков, предоставляемых библиотекой SimEvents, используйте блок MATLAB Discrete-Event System и блок Discrete-Event Chart.
Блок MATLAB Discrete-Event System расширяет системные объекты, чтобы создать пользовательские блоки SimEvents в вашей модели. Дополнительные сведения об авторских пользовательских блоках SimEvents см. в разделе Создание пользовательских блоков с использованием системного блока MATLAB Discrete-Event.
Блок Discrete-Event Chart использует Stateflow® графики и предоставляет графический язык для создания пользовательских блоков хранения данных в вашей модели. Для получения дополнительной информации см. Раздел «Сброс сущностей с сервера очереди».