Программа на языке высокого уровня 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 Мб (Скачать документ)

РОСЖЕЛДОР

Федеральное государственное бюджетное образовательное

учреждение высшего профессионального  образования

«Ростовский государственный университет путей сообщения»

(ФГБОУ ВПО РГУПС)

 


 

Кафедра «ВТ и АСУ»

 

 

 

 

 

 

КОНТРОЛЬНАЯ РАБОТА

 

по дисциплине:

 

«Моделирование информационных систем»

Вариант 1

 

 

 

Выполнила                                                         студентка заочного факультета

                                                                             группы: ЗИБ-4-701

                                                                            шифр: 11-ЗИБ-0139

                                                                             Шушина Галина Дмитриевна

 

 

 

 

Проверила                                                           доцент кафедры «ВТ и АСУ»

                                                                             Тишина Анжела Викторовна

 

 

 

 

 

 

 

 

 

 

Ростов-на-Дону

2014

 

Содержание

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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


 

 

 

 

 

Введение

 

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

Примерами систем массового обслуживания могут служить:

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

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

Основной задачей теории СМО является изучение режима функционирования обслуживающей системы и исследование явлений, возникающих в процессе обслуживания.

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

Для моделирования СМО разработан ряд систем имитационного моделирования. Наиболее популярной системой моделирования СМО является система GPSS World. Именно она используется в данной контрольной работе.

 

 

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

 

Система обработки информации содержит мультиплексный канал и три мини-ПК. Сигнал от датчиков поступают на вход канала через интервал времени 10 ± 5 мкс. В канале они буферируют и предварительно обрабатываются в течение 10 ± 3 мкс. Затем они поступают на обработку в ту мини-ПК, где имеется наименования по длине входная очередь. Ёмкость входных накопителей во всех мини-ПК рассчитаны на хранение величин 10 сигналов. Время обработки сигнала в любой мини-ПК равно 33 мкс.

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

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

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

 

 

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

 

Структурная схема процесса представлена на рисунке 1.

 

           

Рисунок 1 – Структурная схема процесса функционирования АСУТП

 

Q-схема системы представлена на рисунке 2.

 

           

Рисунок 2 – Q-схема системы

 

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

 

Алгоритм движения одного транзакта в системе можно представить в виде схемы, представленной на рисунке 3.

 

Рисунок 3 – Алгоритм движения одного транзакта в системе

 

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

 

Алгоритм функционирования системы во времени можно представить в виде схемы, представленной на рисунке 4, и таблицы 1.

 

 

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

 

Таблица 1 – Алгоритм функционирования системы во времени

N

Δt

 

Tпр.з.i

1

5

10

2

15

↙→

25

3

9

↙→

34

4

10

↙→

44

5

8

↙→

52

     

496

13

↙→

4880

497

11

↙→

4891

498

10

↙→

4901

499

7

↙→

4908

500

13

↙→

4921


 

 

 

 

 

 

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

 

unit Proga;

 

interface

 

uses

  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

 

type

  TForm1 = class(TForm)

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    Label5: TLabel;

   Label6: TLabel;

    Edit6: TEdit;

    Label7: TLabel;

    Edit7: TEdit;

    Edit4: TEdit;

    Label4: TLabel;

    Label8: TLabel;

    Edit5: TEdit;

    Label9: TLabel;

    Edit8: TEdit;

    Label10: TLabel;

    Edit9: TEdit;

    Label11: TLabel;

    Edit10: TEdit;

    Label12: TLabel;

    Edit11: TEdit;

    Label13: TLabel;

    Edit12: TEdit;

    Label14: TLabel;

    Button1: TButton;

    Label15: TLabel;

    Edit13: TEdit;

    Label16: TLabel;

    Edit14: TEdit;

    Label17: TLabel;

    Edit15: TEdit;

   Label18: TLabel;

    Edit16: TEdit;

    Label19: TLabel;

    Edit17: TEdit;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

  var

     GEN_time1, GEN_time2, START_END, Time_miniPK, Kanal_time1, Kanal_time2 : Integer;

     i,j,k,o,tim1,tim2,timm1,timm2,vx,vix,Time,v_ocheredi0,KANAL,START,Time_End_Kanal,GEN,otkaz,max_queue_kanal,vibor:integer;

 

     Time_Kanal  : Array [1..6000,1..2] of Integer ; // для сбора статистики о времени в канале

     v_ocheredi  : Array [1..3] of Integer ; // 3 очереди для трёх ЭВМ, показывает  сколько заявок в очереди

     EVM         : Array [1..3] of Integer ; // 3 ЭВМ эвм свободен (0), занят (0)

     Time_End_Evm: Array [1..3] of Integer ;

     Time_Evm    : Array [1..6000,1..2] of Integer ; // для сбора статистики о времени в ЭВМ 1 цифра = номер транзакта, 2 - 1 вход 2 выход из ЭВМ

 

     // статистика

     Time_raboti : Array [0..3] of Integer; // для сбора статистики по коэффициентам загрузки устройстсв Traboti/Tmodelirovaniya

     V_ocherediR : Array [0..3] of Integer; // для сбора статистики по средней  очереди

     V_ocherediRM: Array [0..3] of Integer; // для сбора статистики по максимальной очереди

 

  label

     povtor_Kanal;

begin

 

// Берём исходные данные из  формы

GEN_time1   := strtoint(Edit5.Text);      // Интервалы формирования сигналов time1+-time2

GEN_time2   := strtoint(Edit8.Text);

START_END   := strtoint(Edit11.Text);     // Счётчик завершения моделирования

Time_miniPK := strtoint(Edit12.Text);     // Время  обслуживания в миниПК

Kanal_time1 := strtoint(Edit9.Text);      // Интервалы осблуживания сигналов  в канале time1+-time2

Kanal_time2 := strtoint(Edit10.Text);

 

 

Form1.Edit1.Text:='Начало моделирования ... Пожалуйста подождите';

randomize;                // включаем случайный характер  случайной величины

 

// Исходные данные

j:=0;           // Количество транзактов в системе

i:=1;           // Порядковый номер следующего  входящего транзакта

k:=0;           // Номер выходящего из канала  транзакта (для статистики)

v_ocheredi0 := 0;     // В очереди  к каналу

max_queue_kanal:=0;   // максимальная длина  очереди канала за время моделирования

KANAL:=0;             // канал свободек (0) занят (1)

Time_End_Kanal := -1; // Время освобождения  канала заявкой

 

vx:=0; vix:=0; // номер вошедшей и выходящей  заявок в/из миниПК

vibor:=0; // выбор номера очереди 1 2 3

v_ocheredi[1]:=0;v_ocheredi[2]:=0;v_ocheredi[3]:=0;

EVM[1]:=0;EVM[2]:=0;EVM[3]:=0;

Time_End_Evm[1]:=-2;Time_End_Evm[2]:=-2;Time_End_Evm[3]:=-2;

 

Time:=-1;       // Начальное  время моделирования (далее текущее)

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

otkaz:=0;       // Количество  заявок, которым отказано в осблуживании

 

tim1 := abs(GEN_time1-GEN_time2);

tim2 := abs((GEN_time1+GEN_time2)-(GEN_time1-GEN_time2));

GEN  := tim1+random(tim2+1); // время поступлени 1го транзака  tim1+-tim2

 

// Для определения времени обслуживания  в канале timm1...timm2

timm1 := abs(Kanal_time1-Kanal_time2);

timm2 := abs((Kanal_time1+Kanal_time2)-(Kanal_time1-Kanal_time2));

 

// Время занятости устройств

Time_raboti[0] := 0;Time_raboti[1] := 0;Time_raboti[2] := 0;Time_raboti[3] := 0;

// Количество заявок в очереди

V_ocherediR[0] := 0;V_ocherediR[1] := 0;V_ocherediR[2] := 0;V_ocherediR[3] := 0;

V_ocherediRM[0] := 0;V_ocherediRM[1] := 0;V_ocherediRM[2] := 0;V_ocherediRM[3] := 0;

 

// <<< Моделируем >>>

while (START<START_END) do begin   // Выполняем  цикл моделирования, пока число  успешно обслуженных транзакто не равно 500

   Time:=Time+1;             // Крутим время моделирования  по едниице

 

   // собираем статистику каждую 1цу времени по размеру в  очереди

  V_ocherediR[0] := V_ocherediR[0] + v_ocheredi0;

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

  V_ocherediR[2] := V_ocherediR[2] + v_ocheredi[2];

  V_ocherediR[3] := V_ocherediR[3] + v_ocheredi[3];

  if (V_ocherediRM[0] < v_ocheredi0) then V_ocherediRM[0] := v_ocheredi0;

  for o := 1 to 3 do begin

    if (V_ocherediRM[o] < v_ocheredi[o]) then V_ocherediRM[o] := v_ocheredi[o];

  end;

{GENERATE}

   if (Time=GEN) then begin  // Если время  поступления первой заявки совпадает, то теперь увеличиваем счётчик  и в системе уже есть +1 заявка

      j:=j+1;                // формируем транзакт. Транзактов  в системе j.

      i:=i+1;                // порядковый номер следующего входящего транзакта

      GEN:=Time+tim1+random(tim2+1); // время  поступлени следующего транзака

      v_ocheredi0 := v_ocheredi0 + 1; // +1 в очереди0

      if (v_ocheredi0 > max_queue_kanal) then max_queue_kanal:=v_ocheredi0;

      Time_Kanal[i-1,1] := Time; // записываем в массив время входа в очередь (для статистики)

   end;

{BUFFER KANAL OUT}

povtor_Kanal:

   if ((KANAL = 0)AND(v_ocheredi0 > 0)) then begin   // Проверяем если канал не занят (0) , то транзакт отправляем на обслуживание, иначе в очередь

       v_ocheredi0 := v_ocheredi0 - 1; // -1 из очереди

       KANAL := 1; // канал  занят

       Time_End_Kanal := Time + timm1 + random (timm2+1) ;  // Время освобождения канала = текущее + (10+-3)

       Time_raboti[0] := Time_raboti[0] + (Time_End_Kanal-Time);

   end;

{ADVANCE KANAL OFF}

   if ((KANAL=1)AND(Time=Time_End_Kanal)) then begin    // Если текущее время равно времени окончания обслуживания заявки в канале - то освобождаем

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