Имитационная модель СМО

Автор работы: Пользователь скрыл имя, 28 Февраля 2013 в 08:54, курсовая работа

Краткое описание

Имитационная модель СМО представляет собой алгоритм, отражающий поведение СМО, т.е. отражающий изменения состояния СМО во времени при заданных потоках заявок, поступающих на входы системы. Параметры входных потоков заявок - внешние параметры СМО. Выходными параметрами являются величины, характеризующие свойства системы - качество ее функционирования. Примеры выходных параметров: производительность СМО - среднее число заявок, обслуживаемых в единицу времени; коэффициенты загрузки оборудования - отношение времен обслуживания к общему времени в каждом ОА;

Содержимое работы - 1 файл

КУРСОВОЙ.doc

— 799.50 Кб (Скачать файл)

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, что позволяет обеспечивать полноценную загрузку ЭВМ терминала.

Таким образом, при выполнении курсового проекта  были получены основные навыки моделирования  вычислительных систем. Все поставленные задачи были выполнены.

 

Список используемой литературы

  1. А.Г. королев Моделирование систем средствами Object GPSS.
  2. Молчанов А.А. Моделирование и проектирование сложных систем,   К. Выща школа,1988.
  3. Б.Я. Советов С.А. Яковлев Моделирование систем.2007г-343с.
  4. В.Е. Котов - Сети Петри 1984г -158с.
  5. Пособие по моделированию на GPSS Московский государственный технический университет им. Н.Э. Баумана Москва

 

 

Приложении  А

Листинг программы:

procedure TForm1.Button1Click(Sender: TObject);

var m1,m2,m3,l,ro,t,t1,p,p0,p1,p2,p3,p4,p5,q,r:real;

begin

t:=StrToFloat(LabeledEdit1.Text);

l:=1/t;

m3:=StrToFloat(LabeledEdit4.Text);

//////////////Первая  Фаза\\\\\\\\\\\\\\\\\\\

Memo1.Lines.Add('**********Первая  Фаза**********');

t1:=StrToFloat(LabeledEdit2.Text);

m1:=1/t1;

ro:=l/m1;

Memo1.Lines.Add('ro='+FormatFloat('0.000',ro));

p0:=(1-ro)/(1-sqr(ro)*sqr(ro));

Memo1.Lines.Add('p0='+FormatFloat('0.000',p0));

p1:=ro*p0;

Memo1.Lines.Add('p1='+FormatFloat('0.000',p1));

p2:=p0*sqr(ro);

Memo1.Lines.Add('p2='+FormatFloat('0.000',p2));

p3:=p0*sqr(ro)*ro;

Memo1.Lines.Add('Pотк='+FormatFloat('0.000',p3));

p:=1-p3;

Memo1.Lines.Add('Pобс='+FormatFloat('0.000',p));

q:=p;

p:=l*q;

Memo1.Lines.Add('A='+FormatFloat('0.000',p));

r:=1*p2+2*p3;

Memo1.Lines.Add('r='+FormatFloat('0.000',r));

t:=r/l;

Memo1.Lines.Add('t|='+FormatFloat('0.000',t));

t:=t+t1;

Memo1.Lines.Add('t|='+FormatFloat('0.000',t));

////////////Вторая  Фаза\\\\\\\\\\\\\\

Memo1.Lines.Add('**********Вторая Фаза**********');

t1:=StrToFloat(LabeledEdit3.Text);

l:=l+m1;

m2:=1/t1;

ro:=l/m2;

Memo1.Lines.Add('ro='+FormatFloat('0.000',ro));

p0:=(1-ro)/(1-sqr(ro)*sqr(ro)*ro);

Memo1.Lines.Add('p0='+FormatFloat('0.000',p0));

p1:=ro*p0;

Memo1.Lines.Add('p1='+FormatFloat('0.000',p1));

p2:=p0*sqr(ro);

Memo1.Lines.Add('p2='+FormatFloat('0.000',p2));

p3:=p0*sqr(ro)*ro;

Memo1.Lines.Add('p3='+FormatFloat('0.000',p3));

p4:=p0*sqr(ro)*sqr(ro);

Memo1.Lines.Add('Pотк='+FormatFloat('0.000',p4));

p:=1-p4;

Memo1.Lines.Add('Pобс='+FormatFloat('0.000',p));

q:=p;

p:=l*q;

Memo1.Lines.Add('A='+FormatFloat('0.000',p));

r:=1*p2+2*p3+3*p4;

Memo1.Lines.Add('r='+FormatFloat('0.000',r));

t:=r/l;

Memo1.Lines.Add('t|='+FormatFloat('0.000',t));

t:=t+t1;

Memo1.Lines.Add('t|='+FormatFloat('0.000',t));

/////////////////Третья  Фаза\\\\\\\\\\\\\\\\\\\

Memo1.Lines.Add('**********Третья  Фаза**********');

t1:=StrToFloat(LabeledEdit4.Text);

l:=l+m2;

m3:=1/t1;

ro:=l/m3;

Memo1.Lines.Add('ro='+FormatFloat('0.000',ro));

p0:=(1-ro)/(1-sqr(ro)*sqr(ro)*sqr(ro)*ro);

Memo1.Lines.Add('p0='+FormatFloat('0.000',p0));

p1:=ro*p0;

Memo1.Lines.Add('p1='+FormatFloat('0.000',p1));

p2:=p0*sqr(ro);

Memo1.Lines.Add('p2='+FormatFloat('0.000',p2));

p3:=p0*sqr(ro)*ro;

Memo1.Lines.Add('p3='+FormatFloat('0.000',p3));

p4:=p0*sqr(ro)*sqr(ro);

Memo1.Lines.Add('p4='+FormatFloat('0.000',p4));

p5:=p0*sqr(ro)*sqr(ro)*ro;

Memo1.Lines.Add('Pотк='+FormatFloat('0.000',p5));

p:=1-p5;

Memo1.Lines.Add('Pобс='+FormatFloat('0.000',p));

q:=p;

p:=l*q;

Memo1.Lines.Add('A='+FormatFloat('0.000',p));

r:=1*p2+2*p3+3*p4+4*p5;

Memo1.Lines.Add('r='+FormatFloat('0.000',r));

t:=r/l;

Memo1.Lines.Add('t|='+FormatFloat('0.000',t));

t:=t+t1;

Memo1.Lines.Add('t|='+FormatFloat('0.000',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_error1; интенсивность ЭВМ1

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_error2;интенсивность ЭВМ2

 

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_error3 

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                            6.000

          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

Информация о работе Имитационная модель СМО