Анализ работы микроавтобусного парка

На некотором кольцевом городском маршруте с десятью остановками работают пять одиннадцатиместных и десять четырнадцатиместных микроавтобусов. Время движения между остановками имеет равномерное распределение на отрезке [2; 12] мин. На каждую остановку в соответствии с экспоненциальным законом распределения со средним значением 2мин. прибывают пассажиры и ожидают прибытия микроавтобуса. Микроавтобус, подъехав к остановке, увозит столько пассажиров, сколько имеется свободных мест. Если свободных мест нет, и никто не выходит, микроавтобус не останавливается. Вероятность, что пассажир проедет некоторое количество остановок, задана в табл. 2.4. Стоимость проезда составляет 30 рублей.

Табл. 2.4. Распределение вероятности проезда пассажиром определенного количества остановок

Вероятность 0,1 0,15 0,2 0,25 0,3
Количество остановок          

Требуется промоделировать работу парка микроавтобусов на протяжении 16 часов. При этом необходимо оценить загруженность микроавтобусов, распределение времени поездки пассажиров и выручку всего парка микроавтобусов за рассматриваемый период.

На первом этапе решения поставленной задачи разработана таблица определений и выбора параметров (табл. 2.5).

Табл. 2.5. Таблица определений и выбора параметров

Элемент GPSS Характеристика элемента
1 усл. ед. времени 1 секунда
Транзакты
1-й сегмент Таймер
2-й сегмент Микроавтобусы
3й сегмент Пассажиры
Параметры
R=57601 Продолжительность моделирования (в секундах)
N1=5 Количество одиннадцатиместных автобусов
N2=10 Количество четырнадцатиместных автобусов
m1=25 Мат.ожидание экспон. распр. времени прихода пассажиров
m2=420 Среднее время движения микроавтобуса между остановками
d=300 Отклонение от среднего времени движения
p=30 Стоимость проезда
t1=10 Время, необходимое на остановку и разгон автобуса
t2=2 Время входа и выхода пассажиров в микроавтобус и из него

Концептуальная модель системы приведена на рис. 2.3.

Рис. 2.3. Концептуальная модель системы

Перечень блоков, используемых при моделировании, приведен на рис. 2.4.

Рис. 2.4. Блоки модели


Программа моделирования на языке GPSS с комментариями приведена ниже:

ostan function rn3,d5;задание распределения числа 0.1,3/0.25,4/0.45,5/0.7,6/1,7 остановок, которые едут люди

mat matrix,5,15;создание матрицы для

хранения величин

proezdtime table mp8,700,100,39;создание таблицы для получения распределения времени поездки

generate 57600,,1,2;таймер

savevalue 3,1;задание номера остановки, на

которую приходит пассажир

savevalue sredn,0;установка в ноль величины средней

занятости микроавтобуса

savevalue schet,0;установка в ноль временного

счетчика работы микроавтобусов

assign 1,1;

assign 2,1;

assign 3,5;

assign 4,15;

null msavevalue mat,p2,p1,0; в данном цикле задается

assign 1+,1; нулевое значение всем

loop 4,null; элементам матрицы mat

assign 1,1;

assign 4,15;

assign 2+,1;

loop 3,null;

terminate 1;

start 2;2 транзакта - 1й устанавливает начальные величины, 2й завершает моделирование

generate 300,,2,10;создание 14-местных микроавтобусов

savevalue 2+,1;увеличение номера данного

микроавтобуса на 1

assign 2,Х2;запись во 2-й параметр номера

микроавтобуса

msavevalue mat,3,p2,14;запись в 3-ю строку матрицы текущего числа свободных мест

msavevalue mat,5,p2,14;запись в 5-ю строку матрицы общего числа мест

transfer,marsh;отправка микроавтобуса на маршрут

generate 420,,,5;создание 11-местных микроавтобусов

savevalue 2+,1;увеличение номера данного

микроавтобуса на 1

assign 2, Х2;запись во 2-й параметр номера

микроавтобуса

msavevalue mat,3,p2,11;запись в 3-ю строку матрицы текущего числа свободных мест

msavevalue mat,5,p2,11;запись в 5-ю строку матрицы общего числа мест

transfer,marsh;отправка микроавтобуса на маршрут

marsh assign 3,1;начало маршрута, присвоение параметру 3 номера остановки, к которой подъехал автобус

assign 4,10;параметр 4 используется для цикличного проезда по 10-ти остановкам

proezd msavevalue mat,4,p2,p3;запись в 4-ю строку матрицы местоположения автобуса

test g mx$mat(3,p2),0,way;проверка наличия свободных мест

advance 10;если есть, то останавливаемся

test e mx$mat(2,p3),0;ждем, пока остановка освободится от предыдущего автобуса

msavevalue mat,2,p3,p2;открываем двери, записываем во 2-ю строку матрицы номер микроавтобуса, подъехавшего к остановке

test e (mx$mat(3,p2)#mx$mat(1,p3)),0;ждем пока закончатся свободные места или пассажиры на остановке

msavevalue mat,2,p3,0;закрываем двери, удаляем из 2-й строки номер автобуса

advance 10;трогаемся

mark 8;временная метка для подсчета средней занятости микроавтобусов

way advance 420,300;едем к следующей остановке

savevalue schet+,(mp8);суммируем время, которое микроавтобус был в пути

savevalue sredn+,(mp8#((100#mx$mat(5,p2)-100#mx$mat(3,p2)))/mx$mat(5,p2))

;подсчитываем число занятых мест

depart zagr,q$zagr;освобождаем очередь от предыдущего значения

queue zagr,(x$sredn/(x$schet/1));выводим через очередь текущее значение средней загруженности микроавтобусов

assign 3+,1;отправляем микроавтобус к следующей остановке

loop 4,proezd;и так 10 остановок

transfer,marsh;потом возвращаемся в начало

маршрута

generate (exponential(2,0,12));имитируем приход пассажиров

assign 5,Х3;присваиваем параметру 5 номер остановки, на которую пришел пассажир

savevalue 3+,1;увеличиваем номер остановки для следующего пассажира на 1

test e x3,11,ost1;11-й остановки нет, поэтому...

savevalue 3,1;отправляем пассажира на 1-ю

ost1 assign 6,(p5+fn$ostan-1);присваиваем параметру 6 номер остановки, после которой пассажир выйдет

test g p6,10,ost2;проверяем, не больше ли это число 10

assign 6-,10;если да, то отнимаем 10

ost2 msavevalue mat+,1,p5,1;увеличиваем число пассажиров на остановке, которое хранится в 1-й строке матрицы, на 1

test g mx$mat(2,p5),0;ждем прибытия микроавтобуса

assign 7,mx$mat(2,p5);записываем в параметр 7 номер микроавтобуса, в который пытается сесть пассажир

seize p5;входим в двери микроавтобуса на нашей остановке

advance 2;проходим в микроавтобус, 2 секунды

release p5;освобождаем двери

msavevalue mat-,1,p5,1;уменьшаем число людей на остановке

test g mx$mat(3,p7),0,ost2;если оказалось что в микроавтобусе нет мест, возвращаемся на остановку

msavevalue mat-,3,p7,1;в противном случае занимаем место

mark 8;временная отметка для сбора статистики о времени проезда

queue profit,30;очередь profit использована для получения прибыли с учетом всех микроавтобусов

priority 10;устанавливаем приоритет транзакта, равным 10

test e mx$mat(4,p7),p6;ждем остановки, после которой

надо выйти

assign 6+,1;записываем в 6-й параметр номер остановки, на которой надо выйти

test e p6,11,vyx;проверяем, чтобы число не

превышало 10

assign 6,1;если получается 11 присваиваем 1

vyx advance 120;готовимся к выходу на следующей остановке

msavevalue mat+,3,p7,1;освобождаем место

test e mx$mat(4,p7),p6;ждем остановки

tabulate proezdtime;собираем статистику о времени

проезда

seize p6;занимаем двери автобуса

advance 2;выходим

release p6;освобождаем двери

terminate 0;выход из модели


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: