Моделирование бизнес-процессов предприятия с применением программных продуктов Business-Studio и ErWin Data Modeler
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
федеральное государственное автономное образовательное учреждение
высшего профессионального образования
Национальный исследовательский ядерный университет «МИФИ»
Факультет Кибернетики
Кафедра «Информатика и процессы управления» (№ 17)
ОТЧЕТ по лабораторным работам
по курсу "Математическое моделирование"
Выполнил студент группы К8-172 Кузин А.А.
Москва 2012
Задание
Узел коммутации сообщений (УКС) состоит из входного буфера, процессора и двух выходных линий с двумя буферами, по одному на входе каждой линии. В УКС через интервалы времени 15±7 мс поступают сообщения двух типов. Все сообщения сначала помещаются во входной буфер УКС, а затем поочередно обрабатываются процессором, независимо от их типа. Время обработки одного сообщения в процессоре равно 7 мс. После обработки процессором сообщения первого типа передаются по первой выходной линии, а сообщения второго типа - по второй выходной линии. Время передачи сообщения по любой выходной линии равно 15±5 мс. Поскольку по каждой выходной линии не может одновременно передаваться более одного сообщения, то сообщения первого типа предварительно поступают в буфер перед первой выходной линией, а второго типа - в буфер перед второй выходной линией. Применяемый метод контроля потоков сообщений требует одновременного присутствия в каждом буфере выходных линий не более трех сообщений. При полном заполнении буфера поступающее в УКС сообщение соответствующего типа получает отказ.
Смоделировать работу УКС в течение 10 секунд. Определить параметры загрузки устройств и вероятность отказа в обслуживании сообщений из-за возможности переполнения буферов выходных линий.
Лабораторная работа №1
События:
P13 - новое сообщение
P1 - сгенерировано сообщение 1го типа
P2 - сгенерировано сообщение 2го типа
P3 - ожидание в буфере сообщений
P4 - обработка сообщений (CPU)
P5 - наличие места в буфере передачи 2
P6 - требование типа сообщения 2
P7 - наличие места в буфере передачи 1
P8 - требование типа сообщения 1
P9 - ожидание в буфере передачи 1
P10 - ожидание в буфере передачи 2
P11 - передано сообщения 1го типа
P12 - передано сообщения 2го типа
Переходы:
T10 - начало обработки сообщения
t1 - определение типа сообщения 1
t2 - определение типа сообщения 2
t3 - поступление на обработку в CPU
t4 - конец обработки и поступление в буфер передачи 1 сообщения 1
t5 - конец обработки и поступление в буфер передачи 2 сообщения 2
t6 - начало передачи сообщения 1
t7 - начало передачи сообщения 2
t8 - конец передачи сообщения 1
t9 - конец передачи сообщения 2
Лабораторная работа № 2
= < D,X,{Sa},Y,{Ia},{Fa}, c,e >
Переменные
Входные переменные- тип сообщений, X ? {1, 2} ? {?};
Переменные состояния
g1 - состояние CPU, g1 ? {0, 1}, где 0 - не занят, 1 - занят
g2 - количество сообщений во входном буфере
g3i - количество сообщений в i-м буфере передачи
g4 - тип последнего сообщения, g4 ? {1, 2}
g5i - сумма времен ожидания сообщений i-го типа в i-й очереди на передачу
g6i - количество переданных сообщений по i-й линии
g7 - количество обработанных сообщений
g8 - количество поступивших сообщений
Выходные переменные
y1 - среднее время ожидания сообщений в очереди на обработкуi - среднее время ожидания сообщений i-го типа в очереди на передачу- количество поступивших сообщений
y4 - количество обработанных сообщений
y5 - вероятность отказа
y6 - загрузка всего оборудования
y7i - загрузка i-й линии
Процессы
P1 - генерация сообщений 1 и 2 типов- обработка сообщений- отправка сообщения 1го типа- отправка сообщения 2го типа- обработка информации
События
C1 - поступление сообщения- начало обработки сообщенияi - окончание обработки сообщения i-го типаi - начало передачи сообщения i-го типаi - завершение передачи сообщения i-го типа- формирование результатов моделирования
Описание D и Sa
D = {P1, P2, P3, P4, P5 }= {x}= {g1, g2, g31, g32, g4, g7}= {g31, g51, g61}= {g32, g52, g62}
Sp5 = {g51, g52, g61, g62, g7, g8, y1, y21, y22, y3, y4, y5, y6, y71, y72}
Отчет о моделировании
Время моделирования - 10 секунд
Поступило: 669 сообщений
Обработано: 34 (5.08%)
Вероятность отказа: 94.8%
Среднее время ожидания во входном буфере: 0.00с
Среднее время ожидания в очереди на передачу 1: 38.86мс
Среднее время ожидания в очереди на передачу 2: 40.43мс
Загрузка CPU: 2.38%
Загрузка линии передачи 1: 1.07%
Загрузка линии передачи 1: 2.91%
Листинг
unit userdef;
interface
uses SysUtils;
// -----------------------Изменяемая часть-----------------------------------
procedure Message1;Obrab;Send1;Send2;UserInit;UserStat;UserCheck: boolean;start;prog,main;MsgSpec =: integer;: integer;;: BaseQueue;, SQueue2: BaseQueue;: integer;: MsgSpec;
узел коммутация сообщение буфер
Tobrab,Obrabot, Otkaz, Vsego,Twait,Twork, TSend1, TSend2, TwaitSend1, TwaitSend2,TobrabSend1, TobrabSend2, TworkSend1, TworkSend2, ObrabotSend1, ObrabotSend2, inq1, inq2: integer;
{$F+}Message1;. RichEdit1. Lines. Clear;: =Random (2) +1;. richedit1. Lines. add (' Поступило сообщение типа '+inttostr (x) +'. ');(Time+RangeRnd (15,7),P1);. Kind: =X;. inTime: =Time;(LBase,@Msg);: =Vsego+1;. richedit1. Lines. add (' Длина очереди: '+inttostr (LBase. Length));(Time,P2);;Obrab;: ^MsgSpec;
t: integer;. RichEdit1. Lines. Clear;. richedit1. Lines. add (' Длина очереди: '+inttostr (LBase. Length));Tobrab<=Time then { т. е свободен }LBase. Length>0 then { очередь не пуста }. richedit1. Lines. add ('CPU взял 1 сообщение и начал обработку. ');: = OutQueue (LBase);: =Twait+Time-MsgPtr^. inTime;: =7; // RangeRnd (7,1);MsgPtr^. Kind=1 thenSQueue1. Length<3 then: =Time+t;: =Twork+t;^. inTime: = TObrab;(SQueue1,MsgPtr);(Tobrab,P3);1. richedit1. Lines. add (' Сообщение 1 типа отправлено в буфер передачи. ');: =Obrabot+1;(Tobrab,P2);. richedit1. Lines. add (' Сообщение 1 типа получило отказ. ');(Otkaz);;SQueue2. Length<3 then: =Time+t;: =Twork+t;^. inTime: = TObrab;(SQueue2,MsgPtr);(Tobrab,P4);
form1. richedit1. Lines. add (' Сообщение 2 типа отправлено в буфер передачи. ');: =Obrabot+1;(Tobrab,P2);. richedit1. Lines. add (' Сообщение 2 типа получило отказ. ');(Otkaz);;;
{FreeMem (MsgPtr,LBase. Size); }
{Shedull (Tobrab,P3); }form1. richedit1. Lines. add ('CPU простаивает. ')form1. richedit1. Lines. add ('CPU занят. ');Send1;: ^MsgSpec;: integer;. RichEdit1. Lines. Clear;. richedit1. Lines. add (' Длина очереди передачи 1: '+inttostr (SQueue1. Length));TObrabSend1<=Time thenSQueue1. Length>0 then { очередь не пуста }
begin. richedit1. Lines. add ('Началась передача сообщения по линии 1. ');
MsgPtr: = OutQueue (SQueue1);
TwaitSend1: =TwaitSend1+Time-MsgPtr^. inTime;
t: =RangeRnd (15,5);
TworkSend1: =TworkSend1+t;: =Time+t;(MsgPtr,SQueue1. Size);(TobrabSend1,P2);(ObrabotSend1);;;Send2;
var: ^MsgSpec;: integer;
form1. RichEdit1. Lines. Clear;. richedit1. Lines. add (' Длина очереди передачи 2: '+inttostr (SQueue2. Length));TObrabSend2<=Time thenSQueue2. Length>0 then { очередь не пуста }
begin. richedit1. Lines. add ('Началась передача сообщения по линии 2. ');
MsgPtr: = OutQueue (SQueue2);
TwaitSend2: =TwaitSend2+Time-MsgPtr^. inTime;
t: =RangeRnd (15,5);
TworkSend2: =TworkSend2+t;: =Time+t;(MsgPtr,SQueue2. Size);(TobrabSend2,P2);(ObrabotSend2);;;UserInit; { процедура инициализации переменных }: =0;: = 0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;: =0;(LBase,Sizeof (MsgSpec)); { инициализация очереди }(SQueue1,Sizeof (MsgSpec));(SQueue2,Sizeof (MsgSpec));
Shedull (0,P1); { инициализация календаря };UserStat; { процедура выдачи статистики }
begin. RichEdit4. Lines. clear;. richedit4. Lines. add ('Поступило: '+inttostr (Vsego) +' сообщений. ');. richedit4. Lines. add ('Обработано: '+inttostr (Obrabot) +', т. е: '+floattostrf ( (Obrabot/Vsego) *100,ffGeneral,3,2) +'% сообщений. ');. richedit4. Lines. add ('Вероятность отказа: '+floattostrf ( (Otkaz/Vsego) *100,ffGeneral,3,2) +'%. ');. richedit4. Lines. add ('Среднее время ожидания в очереди: '+floattostrf ( (Twait/Vsego),ffFixed,8,5));obrabotSend1>0 then. richedit4. Lines. add ('Среднее время ожидания в очереди на передачу 1: '+floattostrf ( (TwaitSend1/ObrabotSend1),ffFixed,8,5));obrabotSend2>0 then. richedit4. Lines. add ('Среднее время ожидания в очереди на передачу 2: '+floattostrf ( (TwaitSend2/ObrabotSend2),ffFixed,8,5));. richedit4. Lines. add ('Загрузка оборудования: '+floattostrf ( (Twork/Time) *100,ffFixed,3,2) +' % ');. richedit4. Lines. add ('Загрузка линии передачи 1: '+floattostrf ( (TworkSend1/Time) *100,ffFixed,3,2) +'% ');. richedit4. Lines. add ('Загрузка линии передачи 2: '+floattostrf ( (TworkSend2/Time) *100,ffFixed,3,2) +'% ');
end;UserCheck: boolean; {Функция проверки окончания моделирования}
begin: =false;Time>10000 then UserCheck: =true; { Время работы 10 секунд };start;
{F-}{ программа }
ActMatr [P1]. ActPtr: =@Message1; { настройка адресов блоков }[P2]. ActPtr: =@Obrab;[P3]. ActPtr: =@Send1;[P4]. ActPtr: =@Send2;[P1]. Name: ='Сообщ1';[P2]. Name: ='Обработ. ';[P3]. Name: ='Перед1';[P4]. Name: ='Перед2';
UInitPtr: =@UserInit; { настройка адреса процедуры инициализации}: =@UserStat; { настройка адреса процедуры статистики }: =UserCheck; { задание имени функции проверки условия }
SIMULATE; { вызов имитатора };.
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Курсовая работа (т)
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ