Программа на языке высокого уровня Delphi

Автор работы: Пользователь скрыл имя, 12 Ноября 2014 в 13:53, контрольная работа

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

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

Содержание

Введение……………………………………………………………..……………….3

1 Постановка задачи………………………………………………………....………5

2 Выявление основных особенностей системы……………………………….…...6

3 Алгоритм движения одного транзакта в системе …………………..…………...7

4 Алгоритм функционирования системы во времени………………….………….8

5 Программа на языке высокого уровня Delphi……………………………….….10

6 Программа в среде имитационного моделирования GPSSWorld………….…..20

Заключение…………………………………………………………………….……22

Список литературы…………………………………………………………...…….23

Прикрепленные файлы: 1 файл

Контрольная по моделированию_final.doc

— 1.39 Мб (Скачать документ)

       KANAL:=0;                  // транзакт освобождает канал

       k:=k+1;

       Time_Kanal[k,2] := Time; // записываем  в массив время выхода из  канала (для статистики)

{SELECT PATH 1 2 3 OR OUT}

       vibor:=0;

       if ((v_ocheredi[1]<=v_ocheredi[2])AND(v_ocheredi[1]<=v_ocheredi[3])) then vibor := 1

       else begin if ((v_ocheredi[2]<=v_ocheredi[1])AND(v_ocheredi[2]<=v_ocheredi[3])) then vibor := 2

            else begin if ((v_ocheredi[3]<=v_ocheredi[1])AND(v_ocheredi[3]<=v_ocheredi[2])) then vibor:= 3; end;

            end;

       if (v_ocheredi[vibor]<10) then begin

          vx:=vx+1;

          Time_Evm[vx,1] := Time; // время входа в очередь  миниПК

          v_ocheredi[vibor]:=v_ocheredi[vibor]+1;

          if (EVM[vibor]=0) then begin  // Если обслуживающий ЭВМ свободен, ТО

              v_ocheredi[vibor]:=v_ocheredi[vibor]-1; // Вынимаем из очереди

              EVM[vibor] := 1; // занимаем ЭВМ

              Time_End_Evm[vibor]:=Time+Time_miniPK; // записываем  время выхода из ЭВМ

          end;

       end else begin j:=j-1; otkaz:=otkaz+1; end;

       // После обслуживания проверяем есть ли в очереди кто-то, если есть, а канал уже свободен, возвращаемся к проверке и занятию канала

       if (v_ocheredi0 > 0) then Goto povtor_Kanal;

   end;

 

   // Проверка трёх очередей  и ЭВМ

  for o := 1 to 3 do begin

     if ((EVM[o]=1)AND(Time=Time_End_Evm[o])) then begin    // Если текущее время  равно времени окончания обслуживания  заявки в ЭВМ с определённым  номером, ТО

          Time_raboti[o] := Time_raboti[o] + Time_miniPK;

          EVM[o]:=0; // Освобождаем

          vix:=vix+1;

          Time_Evm[vix,2] := Time; // время выхода

          START:=START+1;          // Подсчёт числа успешно обслуженных  транзактов

  {TERMINATE}  j:=j-1;                  // транзакт обслужен в ЭВМ, покидает  систему

          if (v_ocheredi[o]>0) then begin

              v_ocheredi[o]:=v_ocheredi[o]-1; // Вынимаем из очереди

              EVM[o] := 1; // занимаем ЭВМ

              Time_End_Evm[o]:=Time+Time_miniPK; // записываем время  выхода из ЭВМ

          end;

     end;

end;

end;

 

// Вывод на печать результатов

Form1.Edit1.Text:='Моделирование завершено  успешно';

Form1.Edit7.Text:=inttostr(Time); // Печатаем время  моделирования

Form1.Edit2.Text:=inttostr(max_queue_kanal); // Печатаем  максимальное количество заявок  в очереди

 

// коэффициенты загрузки устройств

if (Time_raboti[0] > Time) then Time_raboti[0] := Time;

Form1.Edit14.Text:=floattostr(Time_raboti[0]/Time)+' : '+floattostr(Time_raboti[1]/Time)+' : '+floattostr(Time_raboti[2]/Time)+' : '+floattostr(Time_raboti[3]/Time);

// Средние размеры очередей перед устройствами

Form1.Edit15.Text:=floattostr(V_ocherediR[0]/Time)+' : '+floattostr(V_ocherediR[1]/Time)+' : '+floattostr(V_ocherediR[2]/Time)+' : '+floattostr(V_ocherediR[3]/Time);

// Максимальные размеры очередей перед устройствами

Form1.Edit16.Text:=floattostr(V_ocherediRM[0])+' : '+floattostr(V_ocherediRM[1])+' : '+floattostr(V_ocherediRM[2])+' : '+floattostr(V_ocherediRM[3]);

// Среднее время в очереди

Form1.Edit17.Text:=floattostr(V_ocherediR[0]/i)+' : '+floattostr(V_ocherediR[1]/vx*3)+' : '+floattostr(V_ocherediR[2]/vx*3)+' : '+floattostr(V_ocherediR[3]/vx*3);

 

// среднее время в канале

Time := 0;

for o := 1 to START_END do Time := Time+ Time_Kanal[o,2]-Time_Kanal[o,1]; // время в канале

Form1.Edit3.Text:=floattostr(Time/START_END);            //Печатаем среднее время в канале

 

// среднее время в миниПК

Time := 0;

for o := 1 to START_END do Time := Time+ Time_Evm[o,2]-Time_Evm[o,1]; // время в канале

Form1.Edit4.Text:=inttostr(round(Time/START_END));            //Печатаем среднее время в миниПК

Form1.Edit6.Text:=inttostr(i-1)+':'+inttostr(START)+':'+inttostr(otkaz);    //Печатаем количество обслуженных : отказов

Form1.Edit13.Text := floattostr(otkaz*100/(i-1)); // Печатаем вероятность отказа

end;

end.

Результат работы программы представлен на рисунке 5.

 

 

Рисунок 5 – Программа на языке высокого уровня Delphi

6 Программа в среде  имитационного моделирования GPSSWorld

 

**источник транзактов**

GENERATE 10,5

 

**предварительная обработка  сигналов в мультиплексном канале**

QUEUE buf_0

SEIZE canal_0

DEPART buf_0

ADVANCE 10,3

RELEASE canal_0

 

**нахождение наименьшей  длины очереди**

SELECT MIN VIBOR,1,3,,Q ; результат записываем в параметр заявки P$VIBOR

 

**ЭВМ**

TEST L (Q*VIBOR),10,mOUT  ; размер выбранной очереди меньше 10, иначе в OUT

QUEUE P$VIBOR

SEIZE P$VIBOR

DEPART P$VIBOR

ADVANCE 33

RELEASE P$VIBOR

SAVEVALUE obs+,1

TERMINATE 1

START 500

 

**Отказы (переполнения)**

mOUT SAVEVALUE out+,1

TERMINATE

 

Результат работы программы:

 

 

              GPSS World Simulation Report - Model.15.1

 

 

           START TIME           END TIME  BLOCKS  FACILITIES  STORAGES

                0.000           5569.604    17        4          0

 

 

              NAME                       VALUE 

          BUF_0                       10000.000

          CANAL_0                     10001.000

          MOUT                           16.000

          OBS                         10003.000

          OUT                         10004.000

          VIBOR                       10002.000

 

 

LABEL              LOC  BLOCK TYPE     ENTRY COUNT CURRENT COUNT RETRY

                    1    GENERATE           557             0       0

                    2    QUEUE              557             3       0

                    3    SEIZE              554             0       0

                    4    DEPART             554             0       0

                    5    ADVANCE            554             1       0

                    6    RELEASE            553             0       0

                    7    SELECT             553             0       0

                    8    TEST               553             0       0

                    9    QUEUE              532            29       0

                   10    SEIZE              503             1       0

                  11    DEPART             502             0       0

                   12    ADVANCE            502             2       0

                   13    RELEASE            500             0       0

                   14    SAVEVALUE          500             0       0

                   15    TERMINATE          500             0       0

MOUT               16    SAVEVALUE           21             0       0

                   17    TERMINATE           21             0       0

 

 

FACILITY         ENTRIES  UTIL.   AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

1                  168    0.995      32.999  1      518    0    0     0     10

2                  168    0.992      32.896  1      520    0    0     0     10

3                  167    0.984      32.802  1      522    0    0     0      9

CANAL_0            554    0.991       9.961  1      554    0    0     0      3

 

 

QUEUE              MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME   AVE.(-0) RETRY

1                  10   10    178      1     7.027    219.885    221.128   0

2                  10   10    178      1     6.941    217.186    218.413   0

3                  10   10    176      2     6.521    206.365    208.737   0

BUF_0               6    3    557     20     1.873     18.726     19.424   0

 

 

SAVEVALUE               RETRY       VALUE

OBS                      0        500.000                           

OUT                      0         21.000                           

 

 

CEC XN   PRI          M1      ASSEM  CURRENT  NEXT  PARAMETER    VALUE

   522   0        5226.759    522     10     11

                                                    VIBOR         3.000

 

 

FEC XN   PRI         BDT      ASSEM  CURRENT  NEXT  PARAMETER    VALUE

   518    0        5569.710    518     12     13

                                                    VIBOR         1.000

   558    0        5571.780    558      0      1

   554    0        5571.881    554      5      6

   520    0        5587.116    520     12     13

                                                    VIBOR         2.000

 

 

 

 

 

 

Заключение

 

Целью данной контрольной работы было создание имитационной модели системы обработки сигналов на мини-ПК и написание программы, моделирующей данный процесс.

В ходе выполнения контрольной работы были пройдены следующие этапы:

  • постановка задачи;
  • выявление основных особенностей процесса;
  • создание алгоритма движения одного транзакта в системе;
  • создание алгоритма функционирования системы во времени;
  • реализация программы;

Разработанная программа функционирования системы массового обслуживания содержит следующие выходные данные:

    1. коэффициент загрузки канала i –того;
    2. максимальная очередь за все время моделирования;
    3. средняя очередь;
    4. среднее время ожидания в очереди;
    5. количество потерь.

В результате выполнения работы была получена модель, полностью удовлетворяющая потребностям поставленной задачи.

 

Список литературы

 

  1. Советов Б.Я., Яковлев С.А. Моделирование систем: Учебник для вузов по спец. «Автоматизированные системы управления». — М.: Высш. шк., 2001. — 271 с.
  2. Боев В. Моделирование систем. Инструментальные средства GPSS WORLD. – М.: БХВ, 2004.
  3. Кудрявцев Е. GPSS World. Основы имитационного моделирования различных систем. – М.: ДМК, 2003.

 

 

 

 


 

 


Информация о работе Программа на языке высокого уровня Delphi