
- •Тема: Основные понятия языка моделирования gpss. Введение
- •1.1. Пример моделируемой системы.
- •Устройство
- •1.2. События и таймер модельного времени.
- •Модельное время
- •56 Разыгранное значение времени обслуживания (15) 71
- •1.3. Основные объекты языка gpss.
- •1.4. Простейшие операторы gpss
- •1.4.1. Введение транзактов в модель
- •1.4.2. Удаление транзактов из модели
- •1.4.3. Управление устройствами.
- •1.4.4. Задержка транзактов во времени.
- •1.4.5. Сбор статистики при ожидании в очереди.
- •1.5. Модель работы парикмахерской
- •1.6. Расчет статистических характеристик объектов.
- •1.7. Задания для самостоятельной работы
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
- •Вариант 6.
- •Вариант 8.
- •Вариант 9.
- •Вариант 10.
- •Тема: Технология работы в системе gpss World
- •2.1. Работа с файлами
- •2.2. Ввод текста модели
- •2.3. Компиляция и исправление ошибок
- •2.4. Выполнение программы имитации
- •2.5. Структура стандартного отчета
- •2.6. Управляющие операторы gpss World
- •2.7. Задание для самостоятельной работы
- •Тема: Основные приемы программирования моделей
- •3.1. Организация обработки различных типов транзактов
- •Устройство
- •3.2. Использование приоритетов транзактов
- •Устройство
- •3.3. Изменение маршрутов движения транзактов
- •3.4. Моделирование многоканальных устройств
3.4. Моделирование многоканальных устройств
Многоканальному устройству в системе GPSS соответствует объект память (символическое обозначение S). Память может выполнять параллельное обслуживание нескольких транзактов. При этом необходимо, чтобы такое обслуживание было однородным, т.е. обладало некоторыми общими свойствами. Например, среднее время обслуживания и разброс этого времени для кассиров банка, одновременно обслуживающих клиентов, должно быть одинаковым. Если же они обслуживают с разной скоростью, то для их имитации следует использовать несколько параллельно расположенных устройств.
Емкость памяти, т.е. максимальное количество одновременно обслуживаемых транзактов (число каналов обслуживания) задается оператором описания STORAGE, который имеет следующий формат:
Name STORAGE A
Где Name – имя (номер) памяти; A – емкость памяти.
Например,
1 STORAGE 100 ; память с номером 1 емкости 100
PAM STORAGE 10 ; память именем PAM емкости 10
Операторы описания памятей обычно помещаются в начале программы перед первым оператором GENERATE.
Изменение состояния памяти в модели осуществляется с помощью операторов занятия и освобождения памяти ENTER и LEAVE :
ENTER A,B
LEAVE A,B
Где A – имя (номер памяти);
B – число единиц памяти, занимаемых (освобождаемых) транзактом при входе в блоки (по умолчанию 1).
Примером, когда один транзакт может потребовать несколько единиц памяти, является моделирование причала в порту. В зависимости от размера корабль может потребовать использование нескольких причалов. Транзакт не может войти в блок ENTER, если нет достаточного количества свободных единиц памяти. Не обязательно освобождается такое же число единиц памяти, какое было занято. Память может освобождаться транзактом, ее ранее не занимавшим (в отличие от устройства). Однако в сумме число освобождаемых единиц не должно превосходить число занимаемых транзактами единиц памяти.
На блок-схеме блоки ENTER и LEAVE изображаются, как показано на рис. 3.14.
Рис.3.14. Блоки ENTER (ВОЙТИ) и LEAVE (ВЫЙТИ).
Память моделирует многоканальное устройство, к которому транзакты выстраиваются в общую очередь, которая обслуживается по принципу “первым пришел – первым обслужен внутри приоритетного класса” (рис. 3.15). Примером является “быстрая очередь” в банке, когда клиент не выбирает себе окошко, а становится в конец общей очереди. Если же перед параллельно обслуживающими каналами возникает несколько очередей, то моделирование их сложнее и будет рассмотрено позже.
Высший приоритет
Средний приоритет
Низший приоритет
Приход
Уход
Память
Рис.3.15. Многоканальная система массового обслуживания с одной очередью и приоритетами
В конце моделирования по каждой памяти распечатывается статистика:
количество свободных каналов памяти на момент окончания моделирования (REM.),
минимальное и максимальное количество одновременно занятых каналов (MIN. и MAX.),
счетчик входов (ENTRIES),
состояние доступности памяти (AVL. равно 1, если устройство доступно, и равно 0, если недоступно),
среднее число занятых каналов (AVE.C.),
коэффициент использования памяти (UTIL.),
количество транзактов в цепи Retry Chain (RETRY),
количество транзактов в цепи Delay Chain (DELAY) – транзакты, ожидающие в очереди к памяти.
Пример 3.5. На трикотажной фабрике 50 швейных машин работают по 8 ч в день и по 5 дней в неделю. Любая из этих машин может в любой момент выйти из строя. В этом случае ее заменяют резервной машиной, причем либо сразу, либо по мере ее появления. Тем временем сломанную машину отправляют в ремонтную мастерскую, где ее чинят и возвращают в цех, но уже в качестве резервной. В существующем замкнутом цикле движения машин можно выделить четыре фазы (рис.3.16). На рисунке квадраты представляют собой работоспособные машины, а перечеркнутые – машины либо ремонтируемые, либо ожидающие ремонта.
Управляющий хочет знать, сколько рабочих следует нанять для работы в мастерской, и сколько машин следует иметь в резерве (резервные машины арендуются), чтобы ими можно было подменить 50 собственных. Цель – минимизация стоимости производства. Оплата рабочих в мастерской 3,75$ в час, за арендуемую машину надо платить по 30$ в день. Почасовой убыток при использовании менее 50 машин в производстве оценивается примерно в 20$ за машину. Этот убыток возникает из-за снижения производства.
Опыт эксплуатации показывает, что на ремонт сломанной машины уходит примерно 7±3 ч, распределение равномерное. Когда машину используют в производстве, время наработки до отказа распределено равномерно и составляет 157±25 ч. Время, необходимое для перевозки машины из цеха в мастерскую и обратно мало, и его не учитывают.
Плата за арендуемые машины не зависит от того, используют их или они простаивают. По этой причине не делают попыток увеличить число собственных машин в работе в любой период времени. Различия в эксплуатации собственных и арендуемых машин также нет.
Необходимо построить на GPSS модель такой системы и исследовать на ней расходы при различном числе арендуемых машин и количестве рабочих в мастерской в течение 3 лет. Следует выбрать наилучший вариант организации системы по критерию минимизации расходов.
Резерв машин,
готовых к использованию
Машины в
работе
…
Машины, ожидающие
ремонта
Ремонт машин
Рис. 3.16. Функциональная схема примера 3.5
Рабочие в мастерской и машины, одновременно находящиеся в производстве, могут быть представлены многоканальными устройствами обслуживания. Поэтому для их моделирования будем использовать памяти с именами Men и Nowon соответственно. Емкость памяти Men равна количеству рабочих в мастерской, которое будет меняться для разных экспериментов на модели (рассмотрим 3, 4 и 5 рабочих). Емкость памяти Nowon постоянна и равна 50. Машины, циркулирующие в системе, моделируются транзактами. Машины, находящиеся в резерве, - это транзакты в очереди к памяти Nowon, а машины, ожидающие ремонта, - это транзакты в очереди к памяти Men.
Обслуживание транзакта одним из каналом памяти Nowon моделируется задержкой на время наработки до отказа (157±25). Когда машина выходит из строя, она покидает память Nowon и становится в очередь к памяти Men (рабочие мастерской). Ремонт в мастерской имитируется задержкой на 7±3 ч, а затем машина покидает память Men и направляется в резерв (становится в очередь к памяти Nowon). Общее число транзактов, циркулирующих в системе, равно 50 собственным машинам плюс некоторое число арендуемых для резерва (рассмотрим случаи аренды 3, 4 и 5 машин). Это число следует задавать до начала прогона модели как ограничитель количества транзактов в блоке GENERATE (переменная Machines). Для ограничения времени моделирования используется сегмент таймера, который приходит в момент 6240 (8 ч*5 дней в неделю*52 недели в году*3 года). За единицу времени принят 1 ч. Блок – схема модели показана на рис. 3.17, а соответствующая программа на языке GPSS приведена на рис.3.18.
GENERATE ,,,Machines
Определение
общего количества машин
GENERATE
6240
Backplace
Машина поступает
в работу
TERMINATE
ENTER
1
Nowon
2 сегмент модели (сегмент таймера)
Машина работает
ADVANCE 157,25
Машина ломается,
выходит из работы
LEAVE
Nowon
ENTER
Занятие рабочего
Men
ADVANCE 7,3
Машину ремонтируют
Освобождение
рабочего
LEAVE
Men
Вернутся и начать
работу, если необходимо
TRANSFER
Backplace
1 сегмент модели
Рис.3.17. Блок-схема примера 3.5.
* Модель задачи об управлении производством
Nowon STORAGE 50 ;Число одновременно работающих машин
Men STORAGE 3 ;Количество ремонтных рабочих
Machines EQU 53 ;Общее количество машин
* Сегмент циркуляции машин
GENERATE ,,,Machines ;Ввод в систему транзактов-машин
Backplace ENTER Nowon ;Машина поступает в работу
ADVANCE 157,25 ;Машина работает
LEAVE Nowon ;Машина ломается и выходит из работы
ENTER Men ;Занятие рабочего
ADVANCE 7,3 ;Ремонт машины
LEAVE Men ;Освобождение рабочего
TRANSFER ,Backplace ;Возврат и начало работы, если необходимо
* Сегмент таймера
GENERATE 6240 ;Приход таймера
TERMINATE 1 ;Окончание моделирования
Рис.3.18. Программа примера 3.5.
Статистика для случая “трое рабочих – три арендуемые машины” показана на рис.3.19. Построим функцию зависимости дневных расходов (F) от числа рабочих (x) и количества арендуемых машин (y). Оплата рабочих в ремонтной мастерской за день составит 3,75$ в час*8 ч в день*x. Аренда машин обойдется 30$ в день*y. Потери от простоя машин равны 20$ в час*8 ч в день*среднее число недостающих машин. Если K – это коэффициент использования устройства Nowon (доля каналов, занятых обслуживанием), то 1-K – это доля свободных каналов. Умножив на количество каналов памяти Nowon (50), получим среднее число недостающих машин. Таким образом, функция дневных расходов имеет вид:
F(x,y)=30x+30y+8000(1-K),
Где K – коэффициент использования памяти (UTIL. в отчете). Расчет функции дневных расходов для случая 3 рабочих и 3 арендуемых машин дает:
F(3,3)=30*3+30*3+8000*(1-0,984)=308.
Рис.3.19. Отчет по многоканальным устройствам примера 3.5.
Задание 3.3. Из папки Примеры загрузите модель Пример 35.gps. Модифицируйте модель и выполните прогоны для всех остальных пар (x,y), где x=3, 4, 5 – число рабочих; y=3, 4, 5 – количество арендуемых машин. Значение коэффициента использования памяти Nowon в каждом случае занесите в таблицу 3.5. Рассчитайте дневные расходы для каждого случая и занесите в таблицу 3.6. Выберите наилучший вариант организации системы.
Таблица 3.5. Коэффициент использования памяти Nowon
Число рабочих |
Число арендуемых машин |
||
3 |
4 |
5 |
|
3 |
0,984 |
|
|
4 |
|
|
|
5 |
|
|
|
Таблица 3.6. Средние дневные расходы на трикотажной фабрике
Число рабочих |
Число арендуемых машин |
||
3 |
4 |
5 |
|
3 |
308 |
|
|
4 |
|
|
|
5 |
|
|
|