В этом примере показано, как создать модель SimEvents®, чтобы представлять сеть трафика транспортного средства и исследовать среднее время ожидания транспортных средств, когда сеть находится в установившемся.
Предположим, что сеть трафика транспортного средства состоит из двух записей транспортного средства и двух точек выхода транспортного средства, представленных коричневыми и зелеными узлами на следующем рисунке. Каждый синий узел в сети представляет пересечение маршрута светофором, и стрелы представляют связи маршрута на каждом пересечении. Значения рядом со стрелами представляют процент транспортных средств, следующих маршрутом в том пересечении.
Уровень записей транспортного средства в сеть представлен Пуассоновскими процессами с уровнями 0.5
для записи 1
и 0.15
для записи 2
. Скорости обслуживания представляют транспортные средства времени, тратят на каждом пересечении, которые чертятся от экспоненциального распределения со средним 1
. Значения стрелы являются вероятностями выбора маршрута для транспортных средств в пересечении.
Чтобы представлять сеть трафика транспортного средства, эта модель использует Генератор Сущности, Сервер Сущности, Очередь Сущности, Входной Переключатель Сущности, Переключатель Сущности Выход и блоки Терминатора Сущности.
model = 'QueueServerTransportationNetwork';
open_system(model);
Два блока Генератора Сущности представляют сетевые точки входа. Их время межгенерации сущности собирается создать процесс прибытия Пуассона.
Это - код в поле действия времени Межгенерации Записи 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.
Сущности имеют 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.