Результаты работы программы:
SAVEVALUE RETRY VALUE
NUM_1 0 294.000
Q_TIME_1 0 700.935
Q_TIME_MX_1 0 301.456
Q_TIME_MX_12 0 208622.794
NUM_2 0 97.000
Q_NUM_CLIENT 0 0
Q_TIME_2 0 186.160
Q_TIME_MX_2 0 118.241
Q_TIME_MX_22 0 36207.146
NUM_2_TRUE 0 83.000
AVE_Q_LEN 0 1.170
SKO_1 0 343.143
SKO_2 0 149.084
P_2 0 0.144
.
Гистограмма распределения времени пребывания пользователей:
Гистограмма распределения времени пребывания постоянных клиентов:
Отладочный вариант работы программы:
Для отладки работы очереди сократим количество ПК до четырех.
Текст программы:
pc storage 4
savevalue q_num_client,0 ;ячейка содержит количество постоянных
;клиентов в очереди в данный момент времени
time_work variable 24#60#60 ;определяем время моделирования в секундах
generate 300,180 ;прибытие 5+-3 мин
priority 0
assign type,0 ;пользователь
assign work_time,(Uniform(1,1800,9000)) ;время работы 1,5+-1 час
savevalue num_1+,1 ;подсчет количества пользователей
test le q$q_pc,3,quit ;если в очереди не более 3х человек - ждать, иначе - выход
transfer ,pcs
generate 900,300 ;прибытие 15+-5 мин
priority 1
assign type,1 ;постоянный клиент
savevalue num_2+,1 ;подсчет количества постоянных клиентов
assign work_time,(Uniform(1,3600,10800)) ;время работы 2+-1 час
test le (x$q_num_client),1,quit ;если в очереди не более 1го постоянного
;клиента - ждать, иначе - выход
transfer ,pcs
pcs queue q_pc ;занимаем очередь
test e (p$type),1,capture ;если постоянный клиент
savevalue q_num_client+,1 ;обновляем счетчик
capture enter pc ;занимаем ПК
assign q_t,M1 ;время пребывания в очереди
depart q_pc ;покидаем очередь
test e (p$type),0,cont_1
test le (p$q_t),(Uniform(1,600,1800)),quit_q ;пользователь покидает очередь
;если время ожидания > 20+-10 мин
transfer ,cont_2
cont_1 savevalue q_num_client-,1 ;уменьшаем счетчик постоянных
;клиентов в очереди
test le (p$q_t),(Uniform(1,300,540)),quit_q ;клиент покидает очередь если
;время ожидания > 7+-2 мин
cont_2 advance p$work_time ;работа за ПК
quit_q leave pc ;покидаем ПК
quit terminate
Результат выполнения программы (пошаговое выполнение):
Тип посетителя |
Время прихода в очередь |
Время проведенное в очереди |
Время выхода из очереди |
Время выхода из модели |
Пользователь |
423 |
0 |
- |
4098 |
Пользователь |
860 |
0 |
- |
2821 |
Пользователь |
1010 |
0 |
- |
9505 |
Клиент |
1066 |
0 |
2821 |
9598 |
Пользователь |
1254 |
1576 |
2821 |
11321 |
Пользователь |
1530 |
6340 |
7870 |
7870 (превысил время ожидания) |
Пользователь |
1842 |
6340 |
7870 |
7870 (превысил время ожидания) |
Клиент |
2040 |
781 |
2821 |
2821 (превысил время ожидания) |
Пользователь |
2309 |
0 |
- |
2309 (слишком большая очередь) |
Пользователь |
2620 |
0 |
- |
2620 (слишком большая очередь) |
Пользователь |
2728 |
0 |
- |
2728 (слишком большая очередь) |
Клиент |
2903 |
1195 |
4098 |
4098 (превысил время ожидания) |