Лабораторная работа №5. Моделирование сложных систем массового обслуживания, страница 2


Текст программы:

;---------------------------------------------------------------------------------------;

;ЛАБОРАТОРНАЯ РАБОТА № 5                                                          ;

;Моделирование реальных систем массового обслуживания        ;

;Вариант №1: Моделирование работы отдела одежды магазина   ;

;----------------------------------------------------------------------------------------;

;ОБЪЯВЛЕНИЕ И ОПИСАНИЕ ВИДОВ ПАМЯТИ

;-------------------------------------------------------------------------------;

OTDEL      storage        25                              ;вместимость отдела=5

SELLER     storage        5                                ;всего продавцов=5

CABIN        storage        5                                ;всего кабинок=5

LEN_QUE equ              5                                ;длина очереди к кабинкам=5

;-----------------------------------------------------------------------------------;

;программируется отсчет времени - создается таймер-транзакт с высоким приоритетом

;-----------------------------------------------------------------------------------;

generate ,,0,1,10                           ;время=0,транзакт=1,приоритет=10>0 по умолчанию

NEWDAY   mark WORK_DAY_BEGIN       ;отмечается начало рабочего дня

seize MAGAZIN                          ;открываются все двери магазина: вход-выход

advance 480                                  ;рабочий день длится 8*60=480минут

release MAGAZIN                       ;закрываются входные двери магазина

gate se OTDEL                            ;если отдел пуст-выходные двери магазина закрываются

savevalue ZARPLATA+,(300#R$SELLER);подсчет суммы для выдачи зарплаты

;                   test ge N$NEWDAY,30,NEWDAY ;отсчет 30 дней

savevalue KOEF_BUY_TO_ALL,(X$KOL_BUYMAN/N$OTDEL_END) ;коэфф=N_купивших/N_всем

savevalue INCOME,(X$SUM-X$ZARPLATA);подсчет выручки

terminate 1                                   ;моделирование закончилось

;-----------------------------------------------------------------------------------;

;генерация потока-покупателей  по закону Пуассона с синусоидальной интенсивностью

;-----------------------------------------------------------------------------------;

Y equ  (abs(sin((AC1-X$work_day_begin)/160)));формула интенсивности

generate (poisson(1,1.e-2+X$Y))                                   ;поток транзактов-покупателей

gate u MAGAZIN,QUIT;если устройство занято(магазин открыт),иначе-на выход

transfer both,OTDEL_BEG,QUIT                               ;проверка на вместимость отдела

;-----------------------------------------------------------------------------------;

;процесс переходов покупателей из очередей в очереди, на выход, и т.д. и т.п. 

;-----------------------------------------------------------------------------------;

OTDEL_BEG enter OTDEL,1                       ;заходят в отдел магазина

advance 15,3                                 ;осмотр отдела магазина

assign 2,5                                      ;параметр№2 транзакта=5минутам по умолчанию

transfer 0.6,OTDEL_BUY,OTDEL_END_NOBUY ;либо далее,либо на выход

OTDEL_BUY transfer 0.125,OTDEL_CAB,OTDEL_QUE;либо в примерочную-к кабинкам,либо в очередь к продавцам

OTDEL_CAB test le Q$CABIN_QUE,LEN_QUE,OTDEL_END_NOBUY_QUE;очередь не больше чем на n,иначе-на выход

queue CABIN_QUE,1                 ;занимается очередь к кабинкам для примерки

enter CABIN,1                             ;занимается кабинка для примерки

depart CABIN_QUE,1                 ;освобождается очередь к кабинкам для примерки

advance (abs(normal(3,10,3)))    ;затрачивается время на примерку

leave CABIN,1                             ;освобождается кабинка для примерки

assign 2,15                                    ;параметр№2 транзакта =15минутам-по пребыванию в кабинках

transfer 0.6,OTDEL_QUE,OTDEL_END_NOBUY;либо очередь к продавцам,либо - на выход

OTDEL_QUE assign 3,AC1;время входа покупателя в очередь к продавцам

queue SELL_QUE,1;занимается очередь к продавцам

advance 10,10;задержка СВОЯ:5,15-верхние пределы для 2типов покупателей