Этот пример показывает, как создать модель SimEvents®, чтобы представлять сеть трафика автомобиля и исследовать среднее время ожидания автомобилей, когда сеть находится в установившемся.
Предположим, что сеть трафика автомобиля состоит из двух записей автомобиля и двух точек выхода автомобиля, представленных коричневыми и зелеными узлами в следующей фигуре. Каждый синий узел в сети представляет пересечение маршрута со светофором, и стрелки представляют связи маршрута на каждом пересечении. Значения рядом со стрелками представляют процент автомобилей, следующих маршрутом в том пересечении.
Уровень записей автомобиля в сеть представлен Пуассоновскими процессами с уровнями 0.5
для Записи 1
и 0.15
для Записи 2
. Скорости обслуживания представляют автомобили времени, тратят на каждом пересечении, которые чертятся от экспоненциального распределения со средним 1
. Значения стрелки являются вероятностями выбора маршрута для автомобилей в пересечении.
Чтобы представлять сеть трафика автомобиля, эта модель использует Генератор Сущности, Сервер Сущности, Очередь Сущности, Входной Переключатель Сущности, Переключатель Сущности Вывод и блоки Терминатора Сущности.
model = 'QueueServerTransportationNetwork';
open_system(model);
Два блока Генератора Сущности представляют сетевые точки входа. Их время межгенерации сущности собирается создать процесс прибытия Пуассона.
Это - код в поле действия времени Межгенерации блока Entry 1
.
% Random number generation coder.extrinsic('rand'); ValEntry1 = 1; ValEntry1 = rand(); % Pattern: Exponential distribution mu = 0.5; dt = -1/mu * log(1 - ValEntry1);
В коде mu
является частотой поступления Пуассона. coder.extrinsic('rand')
используется, потому что нет никакого уникального seed, присвоенного для рандомизации. Для получения дополнительной информации о генерации случайных чисел в действиях события, смотрите Языки Действия События и Генерацию случайных чисел. Чтобы узнать больше о внешних функциях, смотрите Работу с mxArrays (Simulink).
Сущности имеют атрибут Route
, который принимает значение 1
или 2
. Значение атрибута определяет выходной порт, из которого сущности отбывают из блока switch Сущности Вывод.
Этот код в действии Записи Сервера Сущности 1
представляет случайные выборы маршрута автомобилей на пересечении, представленном Узлом 1
.
Coin1 = 1; coder.extrinsic('rand'); Coin1 = rand; if Coin1 <= 0.2 entity.Route = 1; else entity.Route = 2; end
Это - пример случайных присвоений атрибута Route
, когда сущности вводят блок Entity Server 1. Значение Route
присвоено на основе значения случайной переменной rand
, который принимает значения между 0
и 1
. Route
становится 1
, если rand
меньше чем или равен 0.2
или 2
, если rand
больше, чем 0.2
.
Каждый синий узел представляет пересечение маршрута и включает бесконечную полную очередь и сервер со временем обслуживания, чертившим от экспоненциального распределения со средним 1
.
Сервер сущности 1
содержит этот код.
% Pattern: Exponential distribution coder.extrinsic('rand'); Val1 = 1; Val1 = rand(); mu = 1; dt = -mu * log(1 - Val1);
Сеть создается как открытая сеть Джексона, которая удовлетворяет эти условия.
Все прибывающие автомобили могут выйти из сети.
Прибытие автомобиля представлено Пуассоновским процессом.
Автомобили отбывают из пересечения как из метода "первым пришел - первым вышел". Время ожидания в пересечении экспоненциально распределяется со средним 1
.
Автомобиль, отбывая из пересечения или следует доступным маршрутом или оставляет сеть.
Использование каждой перекрестной очереди трафика является меньше, чем 1
.
В устойчивом состоянии каждая очередь в открытой сети Джексона ведет себя независимо как M/M/1 очередь. Поведение сети является продуктом отдельных очередей в дистрибутивах равновесия. Для получения дополнительной информации о M/M/1 очередях, см. M/M/1 Систему массового обслуживания.
Частота поступления автомобиля для каждого узла вычисляется с помощью этой формулы.
В формуле:
уровень внешнего прибытия для узла.
общее количество входящих стрелок к узлу.
вероятность выбора узла от узла.
общая частота поступления автомобиля к узлу.
Для всех узлов в сети уравнение принимает эту матричную форму.
Здесь, матрица маршрутизации, и каждый элемент представляет вероятность перехода от узла до узла.
Для сети, исследованной здесь, это - матрица маршрутизации.
вектор внешнего прибытия в каждый узел.
Используя эти значения, средняя частота поступления вычисляется для каждого узла.
Каждый узел ведет себя как независимая M/M/1 очередь, и среднее время ожидания каждого узла вычисляется этой формулой. См. M/M/1 Систему массового обслуживания.
Среднее время ожидания каждого узла вычисляется путем слияния каждого элемента.
Моделируйте модель и заметьте, что среднее время ожидания в каждой очереди в сети совпадает с расчетными теоретическими результатами.
Время ожидания очереди в узле 1
сходится к 1
.
Время ожидания очереди в узле 2
сходится к 0.11
.
Время ожидания очереди в узле 3
сходится к 0.88
.
Время ожидания очереди в узле 4
сходится к 0.58
.
[1] Джексон, Джеймс Р. Издание 5 исследования операций, № 4 (август 1957), стр 518-521.