Моделирование работы супермаркета - 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), где в выпадающем списке выбрать имена нужных гистограмм.
Очевидно, что эту задачу можно легко приспособить к любому магазину или товару. Но только если магазин будет предлагать купить пластиковые окна, например, то надо учитывать, что покупка выполняется только после выезда мастера на место (дополнительные затраты времени), выполнения измерений и заказа на изготовление. Все это усложняет цепочку транзакций, но суть остается прежней - в модель надо добавить новые элементы.