В этом примере показано, как создать модель SimEvents ® для представления сети трафика транспортных средств и изучить среднее время ожидания транспортных средств, когда сеть находится в установившемся состоянии.
Предположим, что сеть движения транспортных средств состоит из двух точек входа транспортного средства и двух точек выхода транспортного средства, представленных коричневыми и зелеными узлами на следующем рисунке. Каждый синий узел в сети представляет перекресток маршрута со светофором, и стрелы представляют соединения маршрута на каждом перекрестке. Значения рядом со стрелами представляют процент транспортных средств, принимающих маршрут в этом перекрестке.
Скорость ввода транспортных средств в сеть представлена пуассоновскими процессами со скоростями 0.5
для ввода 1
и 0.15
для ввода 2
. Ставки обслуживания представляют время, которое транспортные средства проводят на каждом перекрестке, которые берутся из экспоненциального распределения со средним 1
. Значениями стрелы являются вероятности выбора маршрута для транспортных средств на перекрестке.
Чтобы представлять сеть трафика автомобиля, эта модель использует блоки Entity Generator, Entity Server, Entity Queue, Entity Input Switch, Entity Output Switch и Entity Terminator.
model = 'QueueServerTransportationNetwork';
open_system(model);
Два блока Генератора сущностей представляют точки входа в сеть. Время межгенерации сущностей устанавливается, чтобы создать процесс прибытия Пуассона.
Это код в поле Действие времени Межгенерации 1
Entry блок.
% Random number generation coder.extrinsic('rand'); ValEntry1 = 1; ValEntry1 = rand(); % Pattern: Exponential distribution mu = 0.5; dt = -1/mu * log(1 - ValEntry1);
В коде mu
- коэффициент прибытия Пуассона. The coder.extrinsic('rand')
используется, потому что для рандомизации не назначено уникальное начальное значение. Для получения дополнительной информации о генерации случайных чисел в действиях события, смотрите Языки действий события и Генерация случайных чисел. Дополнительные сведения о внешних функциях см. в разделе Работа с mxArrays.
Сущности имеют Route
атрибут, который принимает значение 1
или 2
. Значение атрибута определяет выход порт, от которого сущности отходят блок Сущности Выхода Switch.
Этот код в действие входа Server 1
представляет случайный выбор маршрута транспортных средств на перекрестке, представленном Node 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] Jackson, James R. Operations research Vol. 5, № 4 (Aug., 1957), pp 518-521.