Моделирование работы супермаркета - GPSS
от 0 до 30 мин λ=0, β=60; от 30 до 90 мин λ=0, β=40; от 90 до 150 мин λ=0, β=80; свыше 150 мин λ=0, β=120.Если покупатель берет более 10 видов товаров, то необходима тележка, иначе используется корзина. После покупатели подходят к стеллажам для взятия товара. Число взятых товаров определяется с помощью датчика случайных чисел.
Задание:
1. Создать имитационную модель работы супермаркета в течение рабочей смены, равной 8 ч.
2. Определить параметры функционирования системы: коэффициент загрузки всех касс; максимальное и текущее число покупателей в каждой очереди; среднее время обслуживания в каждом канале обслуживания; среднее время нахождения покупателя в каждой очереди.
3. Построить следующие гистограммы: времени нахождения покупателей в системе; числа покупок, сделанных в течение смены; числа покупателей, посетивших магазин в течение смены.
Указания к решению задачи.
1. Выявление основных особенностей. Необходимо сформировать входной поток посетителей и временной интервал моделирования работы супермаркета. В качестве единицы измерения времени возьмем секунду, тогда общее время моделирования составит 8×60×60 с. Создание и представление имитационной модели процесса. Разобьем модель на несколько секторов. В первом введем информацию, необходимую для функционирования супермаркета. Во втором смоделируем поступление покупателей, определим число покупок, их стоимость и направление покупателей к местоположению корзинок или тележек. В третьем секторе будем собирать статистическую информацию по очереди, связанной с получением корзинок. В четвертом секторе соберем статистику по очереди, связанной с получением тележек. В пятом секторе моделируется перемещение требований в системе в зависимости от ее состояния. В шестом собирается статистика по очереди и каналу быстрого обслуживания. Моделируется время обслуживания, выход из области взятия тары и переход к другому сектору. В седьмом секторе действия аналогичны шестому сектору. В восьмом секторе собирается информация в табличном виде по времени работы системы и числу покупок. Моделируется возвращение к автомобилю и его удаление из системы. В девятом секторе моделируются различные потоки покупателей. В десятом моделируем время работы системы.
Программа может выглядеть следующим образом:
RMULT 1187 ;определяем набор начальных чисел семи ;генераторов случайных чисел kassa_2 EQU 2 ;указываем номера каналов обслуживания и ;соответствующие очереди к ним kassa_N EQU 5 time_work VARIABLE 8#60#60 ;определяем время моделирования системы в ;секундах n_pokupok VARIABLE (RN1@96+5) ;число покупок, одного покупателя finance VARIABLE (RN1@3+1)#40+150 ;переменная определяет размер оплаты ;покупок time_system TABLE M1,1000,1000,7 ;создаем таблицы, представляющие ;собой набор чисел для построения гистограмм pokupki TABLE P$kol_pokupok,10,10,10 ;каждое целое число ;представляет класс частоты в гистограмме n_pokupatel TABLE X$pokupatel,100,50,12 park STORAGE 100 ;вместимость стоянки telejka STORAGE 100 ;количество тележек korzina STORAGE 50 ;количество корзин kassir VARIABLE (P$kol_pokupok)#2+P$oplata ;переменная определяет ;время затраченное кассиром на обслуживание покупателя time_mag VARIABLE P$kol_pokupok#100 ;время нахождения покупателя в ;магазине INITIAL X$pokupatel,0 ;определяет начальное значение ;сохраняемой величины значение которой в начале смены равно 0 ****************************************** parking TRANSFER Both,,Lost ;требование направляется в следующий ;блок, если он занят то к блоку с меткой Lost ENTER park ;если есть место автомобиль въезжает на ;стоянку ADVANCE 60,40 ;покупатель идет в супермаркет SAVEVALUE pokupatel+,1 ;подсчет поступивших покупателей с ;момента открытия магазина ASSIGN kol_pokupok,V$n_pokupok ;выполняем присваивание ;параметру требования kol_pokupok с помощью переменной V$n_pokupok ASSIGN oplata,V$finance TEST LE P$kol_pokupok,10,Qtelejka ;определяем дальнейший ;путь требования GATE SNF korzina,Qtelejka ;проверяем условие накопитель не ;полон ******************************************* QUEUE korzina_Q ;собираем статистику по очереди ENTER korzina ;собираем информацию об использовании корзин ;покупателями DEPART korzina_Q ;ОСВОБОЖДАЕМ ОЧЕРЕДЬ ASSIGN tara,korzina ;присваивание параметру требования TRANSFER ,magazin ;переход требования к оператору с меткой ;покупатель входит в магазин ********************************************* Qtelejka QUEUE telejka_Q ;собираем статистику по очереди ENTER telejka ;собираем информацию об использовании корзин ;покупателями DEPART telejka_Q ;освобождаем очередь ASSIGN tara,telejka ;присваивание параметру требования ********************************************** magazin ADVANCE V$time_mag ; моделируем время нахождения ;покупателя в магазине TEST LE P$kol_pokupok,10,min_och ;определяем дальнейший путь ;требования COUNT L kassir_0,kassa_2,kassa_n,1,Q ; определяем число ;объектов заданного диапазона удов-щих заданному требованию TEST E P$kassir_0,0,min_och ;определяем дальнейший путь ;требования ********************************************** QUEUE bistro_q ;собираем статистику об очереди SEIZE bistro ;собираем статистику по каналу ;обслуживания DEPART bistro_q ADVANCE V$kassir ;моделируем время быстрого ;обслуживания RELEASE bistro LEAVE P$tara ;завершаем сбор статистики по работе ;накопителей связанных с тарой TRANSFER ,fin ;направляем требование к оператору ;указанному в поле В ********************************************** min_och SELECT MIN min_ocher,kassa_2,kassa_n,,Q ; выбираем объект ;удовлетворяющий условию QUEUE P$min_ocher SEIZE P$min_ocher DEPART P$min_ocher ADVANCE V$kassir RELEASE P$min_ocher LEAVE P$tara ********************************************** fin TABULATE time_system ;выполняем сбор данных по времени ;обслуживания TABULATE pokupki ;собираем данные по числу сделанных ;покупок SAVEVALUE pokupatel-,1 ;уменьшаем число обслуженных ;покупателей ADVANCE 60,50 LEAVE park TERMINATE lost TERMINATE ********************************************* GENERATE (Exponential(1,0,60)),,,200 ;используем встроенное ;распределение вероятностей для моделирования потока покупателей TRANSFER ,parking GENERATE (Exponential(1,0,40)),,1800,400 TRANSFER ,parking GENERATE (Exponential(1,0,80)),,5400,300 TRANSFER ,parking GENERATE (Exponential(1,0,120)),,9000 TRANSFER ,parking ********************************************** GENERATE V$time_work ;определяем время работы системы TABULATE n_pokupatel ;собираем информацию о числе ;покупателей посетивших магазин TERMINATE 1 START 1Подготовка к моделированию. Установить в диалоговом окне SETTINGS (закладка REPORTS) вывод информации о следующих объектах: Queues (очереди), Tables (таблицы/ гистограммы), Facilities (каналы обслуживания), Storages (накопители), Savevalues (сохраняемые величины).
Моделирование системы. Созданную имитационную модель необходимо оттранслировать и запустить на выполнение.
2. После трансляции, если нет ошибок, начнется процесс моделирования. Появится окно REPORT, в котором можно найти указанные в задании 2 параметры функционирования системы.
3. Представим табличные данные в виде гистограмм. Для построения гистограмм необходимо воспользоваться окном гистограмм (Table Window), где в выпадающем списке выбрать имена нужных гистограмм.
Очевидно, что эту задачу можно легко приспособить к любому магазину или товару. Все это усложняет цепочку транзакций, но суть остается прежней - в модель надо добавить новые элементы.