Автор работы: Пользователь скрыл имя, 28 Февраля 2013 в 08:54, курсовая работа
Имитационная модель СМО представляет собой алгоритм, отражающий поведение СМО, т.е. отражающий изменения состояния СМО во времени при заданных потоках заявок, поступающих на входы системы. Параметры входных потоков заявок - внешние параметры СМО. Выходными параметрами являются величины, характеризующие свойства системы - качество ее функционирования. Примеры выходных параметров: производительность СМО - среднее число заявок, обслуживаемых в единицу времени; коэффициенты загрузки оборудования - отношение времен обслуживания к общему времени в каждом ОА;
S.D. = SQR((SOS/(COUNT-1)) - (SUM/(COUNT)(COUNT-1)))
где SOS - сумма квадратов значений аргументов,
COUNT - число входов в таблицу,
SUM - квадрат суммы значений аргументов таблицы.
S.D. преобразуется в формат двойной точности при выводе в файл статистики.
Поле RETRY определяет количество заявок, ожидающих выполнения специальных условий, зависящих от состояния объекта типа "таблица".
Поле RANGE определяет верхний и нижний пределы частотных классов. При попадании табулируемого аргумента в интервал, который имеет значение большее нижней границы частотного класса и меньшее
или равное верхней границе, изменяется значение частоты (FREQUENCY). Операнд В блока TABULATE может быть использован для определения величины, которая добавляется в частотный класс при попадании табулируемого значения в этот частотный класс. Частотные классы, суммарное значение которых равно нулю, в файл статистики не выводятся. Значения частотных классов не уменьшаются при их изменении.
Поле FREQUENCY определяет суммарную величину, которая формируется при попадании табулируемого аргумента в указанные границы. Суммируются значения операнда В блоков TABULATE.
Поле CUM.% определяет величину частоты в процентах к общему количеству значений табулируемого аргумента.
В данной модели мы используем объекты типа «устройства», следовательно, потом пойдет информация об этих объектов:
FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY
1 10 0.019 5.554 1 0 0 0 0 0
2 4 0.016 11.222 1 0 0 0 0 0
3 2 0.014 20.320 1 0 0 0 0 0
4 4 0.021 15.466 1 0 0 0 0 0
5 4 0.004 3.136 1 0 0 0 0 0
Поле FACILITY определяет номер или имя объекта типа "устройство".
Поле ENTRIES определяет количество раз, когда устройство было занято или прервано после последнего выполнения блоков RESET или CLEAR или с начала работы программы.
Поле UTIL. определяет часть периода моделирования, в течение которого устройство было занято.
Поле AVE.TIME определяет среднее время занятости устройства одной заявкой в течение периода моделирования после последнего выполнения операторов RESET или CLEAR.
Поле AVAILABLE определяет состояние готовности устройства в конце периода моделирования. Оно равно 1 , если устройство готово и 0 - если не готово.
Поле OWNER определяет номер последней заявки, занявшей устройство. 0 означает, что устройство не занято.
Поле PEND определяет количество заявок, ожидающих устройство, находящееся в "режиме прерывания".
Поле INTER определяет количество заявок, прерывающих устройство в данный момент ( счетчик заявок в списке прерывания ).
Поле RETRY определяет количество заявок, ожидающих специальных условий, зависящих от состояния объекта типа "устройство".
Поле DELAY определяет количество заявок, ожидающих занятия устройства. Сюда входят также заявки, ожидающие освобождения устройства в "режиме прерывания" (блок PREEMPT).
В данной модели используется многоканальное устройство, то далее опишем информацию об этом устройстве:
STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY
TERM 24 18 0 10 35896 1 2.804 0.117 0 0
Поле STORAGE определяет имя или номер объекта типа "многоканальное устройство".
Поле CAP. определяет
емкость многоканального
оператором STORAGE.
Поле REMAIN определяет число единиц свободной емкости многоканального устройства в конце периода моделирования.
Поле MIN определяет минимальное количество используемой емкости многоканального устройства за период моделирования.
Поле MAX определяет максимальное количество используемой емкости многоканального устройства за период моделирования.
Поле ENTRIES определяет количество входов в многоканальное устройство за период моделирования.
Поле AVL. определяет состояние готовности многоканального устройства в конце периода моделирования. 1 - означает, что многоканальное устройство готово, 0 - не готово.
Поле AVE.C определяет среднее значение занятой емкости за период моделирования.
Поле UTIL. определяет часть периода моделирования в течение, которого многоканальное устройство использовалось.
Поле RETRY определяет количество заявок, ожидающих специальных условий, зависящих от состояния многоканального устройства.
Поле DELAY определяет количество заявок, ожидающих возможности входа в блок ENTER.
Остальное описание модели:
QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY
1 0 0 0 0 0.000 0.000 0.000 0
FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE
12 0 5760.000 12 0 40
Где Assem – номер семейства, Pr – приоритет, Current – блок, где заявка находится в данный момент, Next – блок, куда заявка планирует перейти.
Моделирование о работе системы приведено в приложении В
Заключение
В результате выполнения работы было проведено имитационное и аналитическое моделирование.
Работа смоделированной системы показала, что две ЭВМ справляются с минимальной очередью обращения к ней клиентов, на первой ЭВМ очередь возрастает больше чем на второй ЭВМ так как вероятность обращения приращения заявок происходит в 2 раза за 3 минуты, поэтому очередь к терминалу составляет 2-4 человека за период прохождения заявке на обоих ЭВМ в течении 10 минут. В течении 2880 секунд =480 минутам = 8 часам моделирования системы очередь колеблется от 0 до 12 человек, данная проблема решается на 70 процентов к одной из ЭВМ установкой второго терминала, средняя очередь составляет 2 человека, максимальная 4, что позволяет обеспечивать полноценную загрузку ЭВМ терминала.
Таким образом, при выполнении курсового проекта были получены основные навыки моделирования вычислительных систем. Все поставленные задачи были выполнены.
Список используемой литературы
Приложении А
Листинг программы:
procedure TForm1.Button1Click(Sender: TObject);
var m1,m2,m3,l,ro,t,t1,p,p0,p1,p2,
begin
t:=StrToFloat(LabeledEdit1.
l:=1/t;
m3:=StrToFloat(LabeledEdit4.
//////////////Первая Фаза\\\\\\\\\\\\\\\\\\\
Memo1.Lines.Add('**********
t1:=StrToFloat(LabeledEdit2.
m1:=1/t1;
ro:=l/m1;
Memo1.Lines.Add('ro='+
p0:=(1-ro)/(1-sqr(ro)*sqr(ro))
Memo1.Lines.Add('p0='+
p1:=ro*p0;
Memo1.Lines.Add('p1='+
p2:=p0*sqr(ro);
Memo1.Lines.Add('p2='+
p3:=p0*sqr(ro)*ro;
Memo1.Lines.Add('Pотк='+
p:=1-p3;
Memo1.Lines.Add('Pобс='+
q:=p;
p:=l*q;
Memo1.Lines.Add('A='+
r:=1*p2+2*p3;
Memo1.Lines.Add('r='+
t:=r/l;
Memo1.Lines.Add('t|='+
t:=t+t1;
Memo1.Lines.Add('t|='+
////////////Вторая Фаза\\\\\\\\\\\\\\
Memo1.Lines.Add('**********
t1:=StrToFloat(LabeledEdit3.
l:=l+m1;
m2:=1/t1;
ro:=l/m2;
Memo1.Lines.Add('ro='+
p0:=(1-ro)/(1-sqr(ro)*sqr(ro)*
Memo1.Lines.Add('p0='+
p1:=ro*p0;
Memo1.Lines.Add('p1='+
p2:=p0*sqr(ro);
Memo1.Lines.Add('p2='+
p3:=p0*sqr(ro)*ro;
Memo1.Lines.Add('p3='+
p4:=p0*sqr(ro)*sqr(ro);
Memo1.Lines.Add('Pотк='+
p:=1-p4;
Memo1.Lines.Add('Pобс='+
q:=p;
p:=l*q;
Memo1.Lines.Add('A='+
r:=1*p2+2*p3+3*p4;
Memo1.Lines.Add('r='+
t:=r/l;
Memo1.Lines.Add('t|='+FormatFl
t:=t+t1;
Memo1.Lines.Add('t|='+
/////////////////Третья Фаза\\\\\\\\\\\\\\\\\\\
Memo1.Lines.Add('**********
t1:=StrToFloat(LabeledEdit4.
l:=l+m2;
m3:=1/t1;
ro:=l/m3;
Memo1.Lines.Add('ro='+
p0:=(1-ro)/(1-sqr(ro)*sqr(ro)*
Memo1.Lines.Add('p0='+
p1:=ro*p0;
Memo1.Lines.Add('p1='+
p2:=p0*sqr(ro);
Memo1.Lines.Add('p2='+
p3:=p0*sqr(ro)*ro;
Memo1.Lines.Add('p3='+
p4:=p0*sqr(ro)*sqr(ro);
Memo1.Lines.Add('p4='+
p5:=p0*sqr(ro)*sqr(ro)*ro;
Memo1.Lines.Add('Pотк='+
p:=1-p5;
Memo1.Lines.Add('Pобс='+
q:=p;
p:=l*q;
Memo1.Lines.Add('A='+
r:=1*p2+2*p3+3*p4+4*p5;
Memo1.Lines.Add('r='+
t:=r/l;
Memo1.Lines.Add('t|='+
t:=t+t1;
Memo1.Lines.Add('t|='+
end;
Приложение Б
Листинг программы на языке GPSS:
visio1 TABLE M1,10,10,2 ; создание таблицы для всей системы;
visio2 TABLE M1,20,2,10 ; создание таблицы для 1-го мед;
visio3 TABLE M1,30,1,10 ; создание таблицы для 2-го книг;
visio4 TABLE M1,40,2,10 ; создание таблицы для вывода задания;1015
GENERATE 5,2,60,10;генерация транзакта обращения к терминалу пользователями
SEIZE 1
ADVANCE 5,2
RELEASE 1
TRANSFER ,Met1
;Первая ЭВМ
met1 GATE NU 2,met2
SEIZE 2
ADVANCE 6,4; происходит поиск на первой ЭВМ
TRANSFER 0.300,Met_exitK1,Met_
Met_vozvrat1 ADVANCE 10,5; Обращение пользователей к ЭВМ1 терминала
Met_exitK1 RELEASE 2
TABULATE VISIO1
TRANSFER ,Met_exit; очеред к к обращению ЭВМ1
;Вторая ЭВМ
met2 GATE NU 3,met3
SEIZE 3
ADVANCE 3,2;происходит поиск на второй ЭВМ
TRANSFER 0.700,Met_exitK2,Met_
Met_vozvrat2 ADVANCE 10,5; Обращение пользователей к ЭВМ2 терминала
Met_exitK2 RELEASE 3
TABULATE VISIO2
TRANSFER ,Met_exit
;Выдача результата на терминал
met3 GATE NU 4
SEIZE 4
ADVANCE 10,5
TRANSFER 0.400,Met_exitK3,Met_
Met_vozvrat3 ADVANCE 10,5
Met_exitK3 RELEASE 4
TRANSFER ,Met_exit
Met_error1 SEIZE 5
ADVANCE 6,4
RELEASE 5
TABULATE VISIO3
TRANSFER ,Met_vozvrat1
Met_error2 SEIZE 5
ADVANCE 3,2
RELEASE 5
TRANSFER ,Met_vozvrat2
Met_error3 SEIZE 5
ADVANCE 2,1
RELEASE 5
TABULATE VISIO4
TRANSFER ,Met_vozvrat3
Met_exit TERMINATE
GENERATE 2880; 8 часов работа программы
TERMINATE 1;Конец
Приложение В
Результат моделирования задачи
GPSS World Simulation Report - ЮЛЯ.57.1
Sunday, December 12, 2010 11:40:35
START TIME END TIME BLOCKS FACILITIES STORAGES
0.000 2880.000 45 5 0
NAME VALUE
MET1
MET2 14.000
MET3 22.000
MET_ERROR1 29.000
MET_ERROR2 34.000
MET_ERROR3 38.000
MET_EXIT 43.000
MET_EXITK1 11.000
MET_EXITK2 19.000
MET_EXITK3 27.000
MET_VOZVRAT1 10.000
MET_VOZVRAT2 18.000
MET_VOZVRAT3 26.000
VISIO1 10000.000
VISIO2 10001.000
VISIO3 10002.000
VISIO4 10003.000
LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY
1 GENERATE 10 0 0
2 SEIZE 10 0 0
3 ADVANCE 10 0 0
4 RELEASE 10 0 0
5 TRANSFER 10 0 0
MET1 6 GATE 10 0 0
7 SEIZE 4 0 0
8 ADVANCE 4 0 0
9 TRANSFER 4 0 0
MET_VOZVRAT1 10 ADVANCE 1 0 0
MET_EXITK1 11 RELEASE 4 0 0
12 TABULATE 4 0 0
13 TRANSFER 4 0 0
MET2 14 GATE 6 0 0
15 SEIZE 2 0 0
16 ADVANCE 2 0 0