Этот пример показывает систему массового обслуживания, в которой обратная связь влияет на частоту поступления. Цель обратной связи состоит в том, чтобы стабилизировать очередь сущности путем замедления скорости генерации сущности блока Entity Generator, когда больше сущностей накапливается в блоке Entity Queue и блоке Entity Server.
Схема показывает простую систему массового обслуживания с Генератором Сущности, Очередью Сущности, Сервером Сущности и блоком Entity Terminator. Для получения дополнительной информации о создании этой простой системы массового обслуживания, смотрите, Создают Дискретную Модель событий.

Способностью блока Entity Server является 1. Это вызывает увеличение длины очереди без обратной связи. Цель состоит в том, чтобы отрегулировать время межгенерации сущности на основе размера очереди и количества сущностей, ожидающих, чтобы быть поданной.
Чтобы открыть пример, смотрите Example Model for Discouraged Arrival.
В блоке Entity Generator выберите MATLAB action как Time source. Добавьте этот код в поле Intergeneration time action.
persistent rngInit; if isempty(rngInit) seed = 12345; rng(seed); rngInit = true; end % Pattern: Exponential distribution mu = getAvgInterGenTime(); dt = -mu*log(1-rand());
dt времени межгенерации сущности сгенерирован от экспоненциального распределения со средним mu, который определяется функциональным getAvgInterGenTime().
В блоке Entity Queue, во вкладке Statistics, выбирают Number of entities in block, n и Average queue length, l как выходная статистика.
В блоке Entity Server выберите MATLAB action как Service time source. Добавьте этот код в поле Service time action.
persistent rngInit; if isempty(rngInit) seed = 67868; rng(seed); rngInit = true; end % Pattern: Exponential distribution mu = 3; dt = -mu*log(1-rand());
Время обслуживания dt чертится от экспоненциального распределения со средним 3.
В блоке Entity Server, во вкладке Statistics, выбирают Number of entities in block, n, как выходная статистика.
Добавьте Функциональный блок Simulink от библиотеки SimEvents®. На Функциональном блоке Simulink дважды кликните функциональную подпись и введите y = getAvgInterGenTime().
В Функциональном блоке Simulink:

Добавьте два блока In1 и переименуйте их как numInQueue и numInServer.
numInQueue представляет текущее количество сущностей, накопленных в очереди, и numInServer представляет текущее количество сущностей, накопленных в сервере.
Добавьте блок Simulink® Add, чтобы добавить эти два входных параметров.
Добавьте блок Simulink Bias и установите параметр Bias как 1.
Систематическая ошибка 1 должна гарантировать ненулевое время межгенерации.
Опционально, выберите Display> Function Connections из главного меню, чтобы отобразить обратную связь от Функционального блока Simulink до блока Entity Generation.
В родительской модели соедините статистику Number of entities in block, n от блоков Сервера Очереди и Сущности Сущности до Функционального блока Simulink.
Соедините блок Simulink Scope со статистической величиной Average queue length, l от блока Entity Queue.
Цель состоит в том, чтобы исследовать среднюю длину очереди.
Увеличьте время симуляции до 10000 и моделируйте модель.
Заметьте, что Average queue length, l в осциллографе не увеличивается из-за эффекта обратной связи для нежелательной скорости генерации сущности.

Генератор сущности | Очередь сущности | Сервер сущности | Терминатор сущности