Задача. Покупатели приезжают за покупками к супермаркету на машинах. Парковочная стоянка рассчитана на 650 машин. Если покупатель не находит свободного парковочного места, он немедленно уезжает без покупок. От машины к супермаркету покупатель идет в среднем 60 секунд. Число покупок, сделанных одним покупателем, равномерно распределено между 5 и 100 предметами. Покупатель, приобретающий 10 предметов или меньше, пользуется корзиной (в супермаркете 70 корзин). Покупатель, приобретающий больше 10 предметов, пользуется тележкой (в супермаркете 650 тележек).
Время, затрачиваемое на покупки, зависит от числа приобретаемых предметов (10 секунд на предмет). Покупатели, выбравшие предметы, встают в самую короткую очередь к одной из 17 касс. Покупатели, покупающие меньше 10 предметов, могут выбрать экспресс-кассу. Оплата занимает 2 секунды на предмет плюс 25, 30 или 35 секунд. Это время зависит от типа оплаты (наличные, чек или кредитная карточка). Данные виды оплаты имеют одинаковую вероятность появления. После оплаты покупатель идет к машине (60 секунд), загружает товары и уезжает со стоянки.
Частота появления покупателей имеет экспоненциальное распределение, начиная с 600 в час в течение получаса, затем 900 в час в течение одного часа, далее 450 в час в течение одного часа и оставшееся время 300 в час.
Необходимо:
1. Запустить процесс моделирования на 3 часа.
2. Определить транзитное время, необходимое покупателям.
3. Определить загрузку (коэффициент использования) парковки, тележек, корзин и касс.
4. Записать количества покупателей, находящихся в супермаркете, для каждого минутного интервала.
Решение.
RMULT 1187
First EQU 2
Last EQU 18
Qty VARIABLE (RN1@96+5)
Finance VARIABLE (RN1@3+1)#50+200
Transit TABLE M1,10000,10000,7 ;Время пребывания в системе.
Items TABLE P$Quantity,10,10,10 ;Число купленных предметов.
Shoppers TABLE X$Customers,100,50,12 ;Число покупателей.
Baskt STORAGE 70
Cart STORAGE 650
Park STORAGE 650
Checkout VARIABLE (P$Quantity)#20+P$Payment
Tshop VARIABLE P$Quantity#100
INITIAL X$Customers,0
Beg TRANSFER Both,,Los ;Попытка припарковаться.
ENTER Park ;Парковка.
ADVANCE 600 ;Путь от машины в супермаркет.
SAVEVALUE Customers+,1 ;Вход в супермаркет
ASSIGN Quantity,V$Qty ;Параметр Quantity = числу купленных предметов.
ASSIGN Payment,V$Finance ;Параметр payment = метод оплаты.
TEST LE P$Quantity,10,Qcart ;Предметов >10 Берем тележку.
GATE SNF Baskt,Qcart ;Проверяем наличие тележки.
QUEUE Basket ;Встаем в очередь за корзиной.
ENTER Baskt ;Получаем корзину.
DEPART Basket ;Покидаем очередь.
ASSIGN Carrier,Baskt ;В параметр Carrier записывается Baskt (корзина).
TRANSFER ,Shop ;Покупки окончены.
Qcart QUEUE Carts ;Встаем в очередь за тележку.
ENTER Cart ;Получаем тележку.
DEPART Carts ;Покидаем очередь за тележками.
ASSIGN Carrier,Cart ;В параметр Carrier записывается Cart (тележка).
Shop ADVANCE V$Tshop ;Время покупок истекло.
TEST LE P$Quantity,10,Norm ;Покупок < 10 - идем к кассе быстрого обслуживания.
COUNT L Where,First,Last,1,Q ;Есть свободная касса с быстрым обслуживанием?
TEST E P$Where,0,Norm ;Есть свободная касса с нормальным обслуживанием?
QUEUE Xpress ;Встаем в очередь на быстрое обслуживание.
SEIZE Xpres ;Начало обслуживания.
DEPART Xpress ;Освобождение очереди.
ADVANCE V$Checkout ;Время обслуживания.
RELEASE Xpres ;Освобождение кассы.
LEAVE P$Carrier ;Освобождение корзины.
TRANSFER ,Fin
Norm SELECT MIN Minque,First,Last,,Q ;Находим кратчайшую очередь.
QUEUE P$Minque ;Встаем в эту очередь.
SEIZE P$Minque ;Начало обслуживания.
DEPART P$Minque ;Освобождение очереди.
ADVANCE V$Checkout ;Время обслуживания.
RELEASE P$Minque ;Освобождение кассы.
LEAVE P$Carrier ;Освобождение тележки.
Fin TABULATE Transit ;Запись транзитного времени.
TABULATE Items ;Запись количества купленных предметов.
SAVEVALUE Customers-,1 ;Один покупатель уходит.
ADVANCE 600 ;Движение к машине.
LEAVE Park ;Освобождение стоянки.
TERMINATE
Lost TERMINATE ;Один покупатель уехал.
* Прибытие покупателей для времени 0 – 30 мин.
GENERATE (Exponential(1,0,60)),,,300 ;Появление покупателей.
TRANSFER ,Beg
* Прибытие покупателей для времени 30 – 90 мин.
GENERATE (Exponential(1,0,40)),,18000,900 ;Частота появления через 0.5 часа.
TRANSFER ,Beg
* Прибытие покупателей для времени 90 – 150 мин.
GENERATE (Exponential(1,0,80)),,54000,450 ;Частота появления через 1.5 часа.
TRANSFER ,Beg
* Прибытие покупателей для времени 150+ мин.
GENERATE (Exponential(1,0,120)),,90000 ;Частота появления через 2.5 часа.
TRANSFER ,Beg
GENERATE 600 ;Один транзакт каждую минуту.
TABULATE Shoppers ;Запись числа покупателей.
TERMINATE 1
START 180
Результаты моделирования.