- •Кафедра асу Курсовая работа
- •Постановка задачи (вариант №26):
- •Нормальный закон распределения:
- •Для потоков сообщений, поступающих через нормально распределенные интервалы времени:
- •Для пуассоновского потока входных сообщений:
- •1.Для потока сообщений, поступающих через интервалы времени, распределенные по нормальному закону распределения:
- •2.Для пуассоновского потока сообщений:
Российский государственный университет
нефти и газа им. И.М. Губкина
Кафедра асу Курсовая работа
по предмету
"Моделирование систем"
Выполнил: Григорьев И. Б.
Группа: АС-08-5
Руководитель: Степанкина О.А.
Москва
2012 год
Постановка задачи (вариант №26):
В узел коммутации сообщений, состоящий из одного общего входного буфера, процессора, двух выходных буферов и двух выходных линий, поступают сообщения с двух направлений. Сообщения с первого и второго направлений поступают через интервалы времени, распределенные нормально с параметрами m1, s1 и m2, s2, соответственно (таблица). Сообщения с первого направления поступают во входной буфер, обрабатываются в процессоре, накапливаются в выходном буфере первой линии и передаются по первой выходной линии. Сообщения со второго направления обрабатываются аналогично, но передаются через второй выходной буфер по второй линии. Применяемый метод контроля требует одновременного присутствия в системе не более трех сообщений с каждого направления.
Если сообщение поступает в систему и застает в ней три сообщения со своего направления, то оно получает отказ и уничтожается. Время обработки процессором одного сообщения составляет Т1 мс, время передачи одного сообщения по первой линии составляет Т2 мс, по второй - T3 мс.
Прибыль от обслуживания сообщений с первого направления составляет d1единиц стоимости, со второго - d2 единиц стоимости. Есть возможность ускорить процесс передачи сообщений по выходным линиям. Уменьшение на одну единицу среднего времени передачи сообщения по первой линии требует z1 единиц стоимости на сообщение, по второй - z2 единиц стоимости.
Определить, при каких характеристиках работы выходных линий достигается максимальная экономическая эффективность узла коммутации сообщений. Выполнить то же при условии, что входящие потоки сообщений - пуассоновские с параметрами λ=1/m1 и λ2 = 1/m2, соответственно.
m1 |
s1 |
m2 |
s2 |
T1 |
T2 |
T3 |
d1 |
d2 |
z1 |
z2 |
9 |
1 |
7 |
1 |
4±1 |
12±3 |
11±3 |
50 |
80 |
5 |
8 |
Листинг программы:
-
Нормальный закон распределения:
*Исходные данные
*************************************************************************************
initial X$d1,50 ;Прибыль от обслуж. сообщений с 1-го направления
initial X$d2,80 ;Прибыль от обслуж. сообщений со 2-го направления
initial X$zz1,5 ;На столько уменьшается прибыль при уменьшении времени передачи сообщ. по 1-ой линии на одну единицу
initial X$zz2,8 ;На столько уменьшается прибыль при уменьшении времени передачи сообщ. по 2-ой линии на одну единицу
initial X$ii,0 ;ii и jj - cчетчики для прогонки по всем временам передачи сообщений по линиям
initial X$jj,0
initial X$TOptim1,0 ;Для запоминания оптимального времени передачи по 1-ой линии
initial X$TOptim2,0 ;Для запоминания оптимального времени передачи по 2-ой линии
initial X$KolvoOptim1,0
initial X$KolvoOptim2,0
initial X$MaxPrib,0 ;Максимальная прибыль
initial X$Kolvo1Tip,0 ;Число обработанных сообщений 1-го типа
initial X$Kolvo2Tip,0 ;Число обработанных сообщений 2-го типа
initial X$Prib,0 ;Прибыль от передачи сообщений
TObslug1 variable (12 - X$ii) ;Время обслуживания на первой линии с учетом вычета ii единиц
TObslug2 variable (11 - X$jj) ;Время обслуживания на второй линии с учетом вычета jj единиц
Prib1 variable (50 - 5#(X$ii)) ;Прибыль от передачи сообщения по первой линии
Prib2 variable (80 - 8#(X$jj)) ;По второй линии
*Для проверки
*************************************************************************************
MM Matrix ,1000,5
savevalue kkk,0
*************************************************************************************
*Формирование времени моделирования
*************************************************************************************
generate 1000
start 80
test L X$MaxPrib,X$Prib,Dalshe ;Проверка на максимальность прибыли
savevalue TOptim1,V$TObslug1 ;Сохраняем нужные значения
savevalue TOptim2,V$TObslug2
savevalue MaxPrib,X$Prib
savevalue KolvoOptim1,X$Kolvo1Tip
savevalue KolvoOptim2,X$Kolvo2Tip
transfer ,Dalshe
Dalshe savevalue kkk+,1
msavevalue MM,X$kkk,1,X$ii
msavevalue MM,X$kkk,2,X$jj
msavevalue MM,X$kkk,3,X$Prib
msavevalue MM,X$kkk,4,X$Kolvo1Tip
msavevalue MM,X$kkk,5,X$Kolvo2Tip
savevalue ii+,1
test G X$ii,7,Metka
savevalue ii,0
savevalue jj+,1
terminate 1
Metka terminate 1
*Генерируем поток сообщений 1-го типа (сообщения поступают через моменты времени, распределенные по норм. закону)
*************************************************************************************
generate (Normal(1,9,1))
assign 1,1 ;Обозначаем, что это транзакт именно первого потока
transfer ,Proverka ;Кидаем на проверку
*Генерируем поток сообщений 2-го типа (сообщения поступают через моменты времени, распределенные по норм. закону)
*************************************************************************************
generate (Normal(1,7,1))
assign 1,2 ;Обозначаем, что это транзакт второго потока
transfer ,Proverka ;Кидаем на проверку
*Проверка на длину очередей вых. буферов
*************************************************************************************
Proverka test e p1,1,Proverka2 ;Смотрим, к какому потоку принадлежит транзакт
test L Q$Line1Queue,2,Udalenie ;Проверяем длину очереди 1-го вых. буфера
transfer ,Processor ;Кидаем на процессор
Proverka2 test L Q$Line2Queue,2,Udalenie ;Проверяем длину очереди 2-го вых. буфера
transfer ,Processor ;Кидаем на процессор
*Входной буфер и процессор
*************************************************************************************
Processor queue EnterQueue ;Занимаем очередь во входном буфере (ожидаем обработки процессором)
seize Proc ;Занимаем процессор
depart EnterQueue ;Освобождаем очередь входного буфера
advance 4,1 ;Обработка процессором
release Proc ;Освобождаем процессор
test e p1,1,Line2 ;Смотрим, сообщение какого типа мы обработали (первого или второго)
transfer ,Line1 ;Соответственно посылаем на первую или вторую вых. линию
*Первая выходная линия
*************************************************************************************
Line1 queue Line1Queue ;Занимаем очередь в выходном буфере
первой линии
seize L1 ;Занимаем первую линию
depart Line1Queue ;Освобождаем очередь вых. буфера первой линии
advance V$TObslug1,3 ;Обработка на первой линии
release L1 ;Освобождаем первую линию
transfer ,PodschetEffect ;Кидаем на подсчет эффективности
*Вторая выходная линия
*************************************************************************************
Line2 queue Line2Queue
seize L2
depart Line2Queue
advance V$TObslug2,3
release L2
transfer ,PodschetEffect
*Подсчет эффективности (в зависимости от типа сообщения)
*************************************************************************************
PodschetEffect test E p1,1,PodschetEffect2
savevalue Prib+,V$Prib1
savevalue Kolvo1Tip+,1
transfer ,Udalenie
PodschetEffect2 savevalue Prib+,V$Prib2
savevalue Kolvo2Tip+,1
transfer ,Udalenie
*Удаление транзактов
*************************************************************************************
Udalenie terminate
2. Если входящие потоки сообщений пуассоновские с параметрами λ=1/8 и λ2=1/9, то сообщения будут поступать в систему через интервалы времени, распределенные экспоненциально. Тогда генерирование потоков будет выглядеть следующим образом:
*Генерируем поток сообщений 1-го типа (сообщения поступают через моменты времени, распределенные по эксп. закону)
*****************************************************************************
generate (Exponential(1,0,9))
assign 1,1 ;Обозначаем, что это транзакт именно первого потока
transfer ,Proverka ;Кидаем на проверку
*Генерируем поток сообщений 2-го типа (сообщения поступают через моменты времени, распределенные по эксп. закону)
*****************************************************************************
generate (Exponential(1,0,7))
assign 1,2 ;Обозначаем, что это транзакт второго потока
transfer ,Proverka ;Кидаем на проверку
В отчете получили: