Московский Государственный Университет Леса
Факультет электроники и системотехники
Кафедра вычислительной техники
Курсовая работа
по дисциплине: Моделирование
на тему: Моделирование работы интернет-кафе.
Вариант 25
Выполнил:
студент группы ВТ-41
Соколов И.П.
Принял:
к.т.н., доцент
Артельщиков В.И.
Москва – 2012 г.
Содержание
1. Техническое задание……………………………………………………………………………….3
2. Текст программы...……………………………………………………...………………………….4 3. Результаты работы программы………………………….……………………………….………..6
4. Отладочный вариант работы программы...………………….…………………………………...7 Техническое задание:
Задание 25. Круглосуточное интернет-кафе располагает 25 ПК. Посетители кафе подразделяются на две категории: пользователи и постоянные клиенты.
Пользователи приходят в кафе через 53 мин. Время их работы составляет 1,51 часа. Пользователь занимает место в очереди, если в ней не более 3-х человек. Пользователь покидает очередь, если время ожидания в ней превысит 2010 мин.
Постоянные клиенты приходят через 155 мин. Время их работы составляет 21 час. Постоянные клиенты имеют приоритет при занятии ПК. Постоянный клиент занимает место в очереди, если в ней не более одного постоянного клиента. Постоянный клиент покидает очередь, если время ожидания в ней превысит 72 мин.
Необходимо:
1) Смоделировать работу кафе в течение суток.
2) Определить среднюю длину очереди и средний коэффициент использования ПК.
3) Для каждой категории посетителей построить гистограмму распределения времени пребывания в очереди, определить среднее значение этого времени и его СКО.
4) Определить минимальное число ПК, при котором вероятность, что постоянные клиенты не будут обслужены, не превысит 3 %.
5) Представить отладочный вариант модели для проверки функционирования очереди.
Текст программы:
pc storage 25 ;32 при увеличении модельного времени в 2 раза
histo_1 table x$q_time_1,100,100,15 ;гистограмма №1
histo_2 table x$q_time_2,100,100,15 ;гистограмма №2
savevalue q_num_client,0 ;ячейка содержит количество постоянных клиентов в
;очереди в данный момент времени
savevalue ave_q_len,0 ;средняя длина очереди
savevalue q_time_1,0 ;время пребывания пользователя в очереди
savevalue q_time_2,0 ;время пребывания постояннного клиента в очереди
savevalue q_time_mx_1,0 ;среднее значение времени пребывания пользователя
;в очереди
savevalue q_time_mx_12,0 ;М(х^2)
savevalue q_time_mx_2,0 ;среднее значение времени пребывания
;постоянного клиента в очереди
savevalue q_time_mx_22,0 ;М(х^2)
savevalue num_1,0 ;количество пользователей
savevalue num_2,0 ;количество постоянных клиентов
savevalue num_2_true,0 ;количество обуслуженных постоянных клиентов
savevalue sko_1,0 ;СКО №1
savevalue sko_2,0 ;СКО №2
savevalue p_2,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
savevalue q_time_1,p$q_t ;сохраняем время ожидания
;пользователя в очереди
savevalue q_time_mx_1+,x$q_time_1 ;суммируем времена
savevalue q_time_mx_12+,(x$q_time_1^2) ;суммируем квадраты времен
tabulate histo_1 ;обновить гистограмму №1
test le (p$q_t),(Uniform(1,600,1800)),quit_q ;пользователь покидает
;очередь если время ожидания
;превысит 20+-10 мин
transfer ,cont_2
cont_1 savevalue q_num_client-,1 ;уменьшаем счетчик
;постоянных клиентов в очереди
savevalue q_time_2,p$q_t ;сохраняем время ожидания
;постоянного клиента в очереди
savevalue q_time_mx_2+,x$q_time_2 ;суммируем времена
savevalue q_time_mx_22+,(x$q_time_2^2) ;суммируем квадраты времен
tabulate histo_2 ;обновляем гистограмму №2
test le (p$q_t),(Uniform(1,300,540)),quit_q ;клиент покидает очередь
;если время ожидания
;превысит 7+-2 мин
cont_2 advance p$work_time ;работа за ПК
test e (p$type),1,quit_q ;считаем кол-во обслуженных
;постоянных клиентов
savevalue num_2_true+,1
quit_q leave pc ;покидаем ПК
quit terminate
generate v$time_work ;определяем время работы. 86400=24 часа
savevalue ave_q_len,(qa$q_pc) ;средняя длина очереди
savevalue q_time_mx_1,(x$q_time_mx_1/x$num_1) ;среднее значение времени
;ожидания пользователя
savevalue q_time_mx_2,(x$q_time_mx_2/x$num_2) ;М(х^2)
savevalue q_time_mx_12,(x$q_time_mx_12/x$num_1) ;среднее значение
;времени ожидания клиента
savevalue q_time_mx_22,(x$q_time_mx_22/x$num_2) ;М(х^2)
savevalue sko_1,(sqr(x$q_time_mx_12-x$q_time_mx_1^2)) ;считаем ско №1
savevalue sko_2,(sqr(x$q_time_mx_22-x$q_time_mx_2^2)) ;считаем ско №2
savevalue p_2,(1-x$num_2_true/x$num_2) ;процент необслуженных клиентов
terminate 1
start 1