- •Ю. М. Елизарова н. А. Тихонова Создание имитационных моделей в системе gpss world
- •Оглавление
- •Глава 1. Основы моделирования в gpss world 5
- •Глава 2. Построение имитационных моделей средствами gpss world 59
- •Введение
- •Глава 1. Основы моделирования в gpss World
- •1.1. Объекты gpss, ввод транзактов в модель и вывод их из модели Объекты gpss
- •Часы модельного времени
- •Описание операторов gpss World
- •Ввод транзактов в модель
- •Задание продолжительности моделирования
- •1.2. Задания для самостоятельного выполнения
- •1.3. Одноканальные устройства, задержка во времени, сбор статистики при ожидании, переход транзакта в блок, отличный от последующего Одноканальные устройства
- •Реализация задержки во времени
- •Сбор статистики при ожидании
- •Переход транзакта в блок, отличный от последующего
- •1.4. Задания для самостоятельного выполнения
- •1.5. Многоканальные устройства
- •1.6. Задания для самостоятельного выполнения
- •1.7. Переменные и функции Переменные
- •Функции
- •1.8. Задания для самостоятельного выполнения
- •Параметры транзактов
- •Задание и изменение значений параметров транзактов
- •Отметка времени. Транзитное время
- •1.10. Задания для самостоятельного выполнения
- •1.11. Сохраняемые величины, проверка числовых выражений, приоритет транзакта, прерывания, таблицы Сохраняемые величины
- •Сравнение сча
- •Изменение приоритета транзактов
- •Обслуживание с прерыванием
- •Определение и использование таблиц
- •1.12. Задания для самостоятельного выполнения
- •Глава 2. Построение имитационных моделей средствами gpss world
- •2.1. Анализ работы кассового зала железнодорожного вокзала станции «омск»
- •Результаты моделирования и их интерпретация
- •2.2. Анализ работы микроавтобусного парка
- •Результаты моделирования и их интерпретация
- •2.3. Анализ функционирования информационной сети
- •Результаты моделирования и их интерпретация
- •Заключение
- •Библиографический список
- •Приложение 1 диалоговые возможности gpss world
- •Статистическая информация в стандартном отчете gpss world
- •Создание имитационных моделей в системе gpss World
2.2. Анализ работы микроавтобусного парка
На некотором кольцевом городском маршруте с десятью остановками работают пять одиннадцатиместных и десять четырнадцатиместных микроавтобусов. Время движения между остановками имеет равномерное распределение на отрезке [2; 12] мин. На каждую остановку в соответствии с экспоненциальным законом распределения со средним значением 2 мин прибывают пассажиры и ожидают микроавтобус. Микроавтобус, подъехав к остановке, увозит столько пассажиров, сколько имеется свободных мест. Если свободных мест нет, и никто не выходит, микроавтобус не останавливается. Вероятность, что пассажир проедет некоторое количество остановок, задана в табл. 2.4. Стоимость проезда составляет 30 рублей.
Таблица 2.4
Распределение вероятности проезда пассажиром определенного количества остановок
Вероятность |
0,1 |
0,15 |
0,2 |
0,25 |
0,3 |
Количество остановок |
3 |
4 |
5 |
6 |
7 |
Требуется промоделировать работу парка микроавтобусов на протяжении 16 ч. При этом необходимо оценить загруженность микроавтобусов, распределение времени поездки пассажиров и выручку всего парка микроавтобусов за рассматриваемый период.
На первом этапе решения поставленной задачи разработана таблица определений и выбора параметров (табл. 2.5).
Таблица 2.5
Таблица определений и выбора параметров
Элемент GPSS |
Характеристика элемента |
1 |
2 |
1 усл. ед. времени |
1 секунда |
Транзакты |
|
1-й сегмент |
Таймер |
2-й сегмент |
Микроавтобусы |
3-й сегмент |
Пассажиры |
Параметры |
|
R = 57601 |
Продолжительность моделирования (в секундах) |
N1 = 5 |
Количество одиннадцатиместных автобусов |
N2 = 10 |
Количество четырнадцатиместных автобусов |
m1 = 25 |
Мат.ожидание экспон. распр. времени прихода пассажиров |
m2 = 420 |
Среднее время движения микроавтобуса между остановками |
Окончание табл. 2.5
1 |
2 |
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 ;выход из модели
