Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач. Соколов. 25 вариант.docx
Скачиваний:
1
Добавлен:
28.08.2019
Размер:
49.02 Кб
Скачать

Результаты работы программы:

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

(превысил время ожидания)