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

Московский Государственный Университет Леса

Факультет электроники и системотехники

Кафедра вычислительной техники

Курсовая работа

по дисциплине: Моделирование

на тему: Моделирование работы интернет-кафе.

Вариант 25

Выполнил:

студент группы ВТ-41

Соколов И.П.

Принял:

к.т.н., доцент

Артельщиков В.И.

Москва – 2012 г.

Содержание

1. Техническое задание……………………………………………………………………………….3

2. Текст программы...……………………………………………………...………………………….4 3. Результаты работы программы………………………….……………………………….………..6

4. Отладочный вариант работы программы...………………….…………………………………...7 Техническое задание:

Задание 25. Круглосуточное интернет-кафе располагает 25 ПК. Посетители кафе подразделяются на две категории: пользователи и постоянные клиенты.

Пользователи приходят в кафе через 53 мин. Время их работы составляет 1,51 часа. Пользователь занимает место в очереди, если в ней не более 3-х человек. Пользователь покидает очередь, если время ожидания в ней превысит 2010 мин.

Постоянные клиенты приходят через 155 мин. Время их работы составляет 21 час. Постоянные клиенты имеют приоритет при занятии ПК. Постоянный клиент занимает место в очереди, если в ней не более одного постоянного клиента. Постоянный клиент покидает очередь, если время ожидания в ней превысит 72 мин.

Необходимо:

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