Моделирование работы диспетчерского пункта

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Государственное Образовательное Учреждение

Высшего Профессионального Образования

 

РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

 

 

Кафедра Автоматизированных Систем Управления

 

 

 

КУРСОВОЙ ПРОЕКТ

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

 

на тему

«Моделирование работы диспетчерского пункта»

 

 

 

 

 

Выполнил: 
студент группы 535

Фирсов Д.А.

 

 

Проверил: 
Малинин Ю.И.

 

 

 

 

Страниц 32

 

 

 

 

 

Рязань 2017г.

 

АННОТАЦИЯ

 

В данном курсовом проекте моделируется работа диспетчерского пункта. В качестве средства моделирования используется универсальный язык программирования Borland Pascal 7.0. Разработанная программа позволяет проанализировать работу диспетчерского пункта.

 

Сокращения:

ЭВМ – Электронно-вычислительная машина.

БД – База данных.

МЧС – Министерство по Чрезвычайным Ситуациям.

ЧС – Чрезвычайная ситуация.

 

СОДЕРЖАНИЕ

 

 

 

 

 

ВВЕДЕНИЕ

Моделирование (в широком смысле) является основным методом исследований во всех областях знаний и научно обоснованным методом оценок характеристик сложных систем, используемым для принятия решений в различных сферах инженерной деятельности.[1]

Все то, на что направлена человеческая деятельность, называется объектом (лат. objection — предмет).[1]

Модель (лат modulus — мера) — это объект-заместитель объекта-оригинала, обеспечивающий изучение некоторых свойств оригинала.[1]

Существующие и проектируемые системы можно эффективно исследовать с помощью математических моделей (аналитических и имитационных), реализуемых на современных ЭВМ, которые в этом случае выступают в качестве инструмента экспериментатора с моделью системы.

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

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

Применение ЭВМ при анализе и решении аналитических моделей ограничивается лишь автоматизацией вычислений. Для имитационной модели ЭВМ является ее непосредственным компонентом.

С учетом сказанного имитационный эксперимент можно рассматривать как материализацию "мысленного эксперимента".

Целью данного курсового проекта является создание имитационной модели.

Имитационная модель объекта - это его программное представление с целью анализа поведения в вычислительной среде ЭВМ.

В настоящее время работа по обслуживанию клиентов достигла высокой скорости с множеством пользователей. Все процессы осуществляются с помощью компьютера, данные хранятся в БД.

Однако, не все организации приобщились к современным технологиям и пользуются традиционными методами обслуживания. Это является следствием более низкой производительности. Естественно, до сих пор разрабатываются всё новые и новые программы, стремящиеся к максимальному ускорению данного процесса.

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

1)База данных хранится и обрабатывается  так, что любые другие внекомпьютерные  хранилища информации(библиотеки, архивы) не являются базами данных.

2)Данные хорошо структурированы, т.е. хорошо выделены составные  части и их связи.

3)Структура обеспечивает эффективные  поиск и обработку данных.

       База данных позволяет хранить данные, использовать их несколькими пользователями, строить отчёты по запросу пользователя.

В данном курсовом проекте моделируется работа диспетчерской службы.

Для начала моделирования нужно изучить выбранную систему, все её плюсы и минусы, а также возможности оптимизации работы.

Объектом моделирования является диспетчерская служба.

Предметом моделирования: 
- Приём заявок от клиентов. 
- Обработка заявок от клиентов. 
- Выдача результата клиенту в виде квитанции.

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

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

 

Описание предметной области

Диспетчерская служба представляет собой пункт, в который клиенты обращаются со своей проблемой. Сотрудник обслуживает клиента, принимая у него заявку и обрабатывая её. Результат работы над заявкой сотрудник выдаёт клиенту в виде квитанции со статусом работы над заявкой.

Диспетчерская служба имеется во многих отраслях(МЧС России, аэропорт, диспетчерская служба, связанная с несколькими домами одного района). Задачей диспетчерской службы является обслуживание клиентов. Имеются требования и ограничения в её работе. Требования:

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

Также имеются ограничения:

  • работа осуществляется не круглосуточно;
  • ограниченность времени ожидания.

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

 

 

 

 

 

 

 

 

 

 

 

1.ПРИНЦИП ФУНКЦИОНИРОВАНИЯ МОДЕЛИРУЕМОЙ СИСТЕМЫ

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

Необходимо смоделировать процесс, который в дальнейшем сможет использовать любое предприятие[2].

Диспетчерская служба обслуживается сотрудником. Сотрудник принимает заявки и обрабатывает их. Исходными данными для осуществления имитации модели являются:

- начало рабочего дня – 8:00, конец  рабочего дня – 18:00;

- интервал прихода клиентов  – 9 минут;

- минимальное время обслуживания  – 7 минут, максимальное время обслуживания  – 13 минут;

- число прогонов – 10

В процессе работы может возникнуть чрезвычайная ситуация, например, отключение света, в результате чего работа приостанавливается на время устранения этих обстоятельств (от 5 до 10 минут).

Требуется смоделировать работу системы в течение полного рабочего дня и определить:

  • Число посетителей за рабочий день;
  • Время закрытия;
  • Среднюю длину очереди;
  • Среднее количество посетителей;
  • Среднее время обслуживания;
  • Количество ЧС.

 

1.2.Блок-схема алгоритма  функционирования моделируемой системы

Принцип функционирования системы представлен на рисунке 1.


 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
При приходе клиента происходит сравнение числа людей, находящихся в очереди. При освобождении сотрудника к нему подходит посетитель. На обслуживание одного клиента отводится от 7 до 13 минут. После этого клиент уходит из очереди.


 

 

1.3.Выбор концептуальной  модели

Необходимо определить подход к разработке концептуальной модели. Возможны два различных подхода -  дискретное и непрерывное моделирование, различающиеся способами задания времени в вычислительной среде ЭВМ.

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

При непрерывном моделировании системное время всегда первично и задается вычислительной системой по самостоятельному алгоритму. Это время используется как аргумент для последующего вычисления нужных величин с целью определения состояния моделируемого объекта.

Так как непрерывных процессов, в которых время является аргументом, в явном виде не имеется, то данную систему можно представить как дискретную модель. Здесь, главным образом, рассматриваются события. Она представлена на рисунке 2.

 

 



 
2.ФОРМАЛИЗАЦИЯ МОДЕЛИ


2.1.Группировка событий

Класс 1. Приход клиента.

В данном классе задаётся количество пришедших посетителей, имеется ли очередь, а также её длина.

Класс 2. Обслуживание клиента.

В данном классе задаётся время, которые было затрачено на обслуживание клиента.

Класс 3. Уход клиента.

В данном классе происходит процесс освобождения места в очереди клиентом.

Класс 4. ЧС.

В данном классе происходит чрезвычайная ситуация, увеличивается время свершения.

2.2.Переменные модели

В процессе моделирования систем разработчик использует большое число переменных. Наиболее важные из них:

  1. NRNS – номер текущего прогона;
  2. NNRNS – общее число заданных прогонов;
  3. TNow – системное, т.е. текущее время;
  4. TTBeg – время начала прогона;
  5. TTFin – время окончания имитационного процесса;
  6. TSob – время свершения события;
  7. KEvent – код события;
  8. All – общее число посетителей;
  9. NEvents – количество записей в календаре;
  10. Ochered – длина очереди;
  11. Zanyat – признак занятости сотрудника;
  12. Kol_Chs – количество ЧС;
  13. Otchet_progon – файл отчёта по прогону;
  14. Otchet_Allprogon – файл отчёта по всем прогонам;
  15. Events – файл календаря.

 

3.АЛГОРИТМ ИМИТАЦИИ МОДЕЛИ

3.1.Процедура планирования

В процедуре SCHDL имеется 3 параметра:

KEvent – код события;

TSob – время его свершения;

A1 – атрибут события.

Начинается формирование записи, в которую поступают данные из A1. После этого в A2 копируются код и время свершения события. A2 – массив для работы с событиями. С оператора For j:=1 to nnq do начинается поиск первой свободной записи в календаре (запись с кодом события равным 0). На место найденной записи записываются данные из массива А2 (новое запланированное событие). После этого файл календаря переписывается с новой записью. В конце процедуры SCHDL записи календаря сортируются в порядке возрастания времени свершения событий процедурой GRUP.


 

 
procedure schdl(kevnt,dtime:integer;a4:ta1);


  var

   i,j:integer;

  begin

   for i:=1 to matr do a2[i]:=a4[i];writeln('атрибуты события ',a1[1]);

   a2[matr+1]:=kevnt;writeln('код события ',kevnt);

   a2[matr+2]:=tnow+dtime;writeln('время события ', tnow+dtime);

   seek(f,0);

   read(f,a3);

   j:=1;

   while a3[matr+1,j]<>0 do j:=j+1;

   for i:=1 to matr+2 do a3[i,j]:=a2[i];

   seek(f,0);

   write(f,a3);

   writeln(' Вывод календаря');

   for i:=1 to nnq1 do

    begin

     for j:=1 to matr+2 do

      write(a3[j,i],' ');write('   ');

    end;

    writeln;

   grup;

  end;

 

 

3.2.Процедура перегруппировки

          Процедура GRUP – системная и без параметров. Она сортирует записи по возрастанию по времени свершения. После копирования в A3 календаря осуществляется проверка состояния первой записи. Если она пустая, значит из календаря ранее выбрано событие с минимальным временем свершения и, следовательно, достаточно сдвинуть календарь на одну запись влево. Далее календарь из массива A3 переписывается  в файл. Перед сортировкой календаря оператор K=J запоминает номер j–й записи, а оператор z:=a3[3,j] – ее время свершения. Следующий за ними оператор For l:=j+1 to nnq do:  проверяет код очередной, сопоставляемой с j, записи l;  сравнивает время двух записей; запоминает (обновляет k, z) номер и время  свершения записи l. Если проверяемый код записи l равен нулю, календарь кончился и происходит обмен данными между записями j и l (k), так как ищутся записи со временем меньшим, чем у записи j. Если время свершения записи l оказывается больше или равным тому же для записи j, переходим к следующей записи календаря.

procedure grup;

  var

   l,k,h,i,j,n:integer;

  begin

   writeln(' Подпрограмма перегруппировки');

   seek(f,0);

   read(f,a3);

   n:=1;

   while a3[matr+2,n]=0 do

    begin

     for k:=1 to nnq1-1 do

      for l:=1 to matr+2 do

       begin

        a3[l,k]:=a3[l,k+1];

        a3[l,k+1]:=0;

       end;

     n:=n+1;

    end;

   h:=nnq1 div 2;

   i:=0;

   while h<>0 do

    begin

     for j:=h+1 to nnq1 do

      begin

       i:=j-h;

       for k:=1 to matr+2 do

        a[k]:=a3[k,j];

       repeat

        for k:=1 to matr+2 do

         b[k]:=a3[k,i];

        if (a[matr+2]<b[matr+2])and(a[matr+2]>0) then

         begin

          for k:=1 to matr+2 do

           a3[k,i+h]:=b[k];

          i:=i-h;

         end;

        until (i<=0)or(a[matr+2]>=b[matr+2])or(a[matr+2]=0);

        for k:=1 to matr+2 do

         a3[k,i+h]:=a[k];

      end;

      h:=h div 2;

    end;

   seek(f,0);

   write(f,a3);

   writeln(' Вывод нового календаря');

   for i:=1 to nnq1 do

    begin

     for j:=1 to matr+2 do

      write(a3[j,i],' ');write('   ');

    end;

    writeln;

   end;

3.3.Процедура извлечения первой записи из календаря

 Извлечение осуществляется процедурой RMOVE. Происходит копирование календаря в массив А3. Затем  из его первой  записи извлекаются: время свершения события, код события и его атрибут. Затем код события обнуляется, после этого календарь. В конце вызывается процедура GRUP для расстановки записей в порядке возрастания по времени свершении. 
 

 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
procedure rmove;


   var

    i,j:integer;

   begin

    seek(f,0);

    read(f,a3);

    i:=a3[matr+1,1];

    writeln(' Код извлеченного события ',i);

    writeln(' Время извлеченного события ',a3[matr+2,1]);

    for j:=1 to matr+3 do a3[j,1]:=0;

    for j:=1 to matr do attr[j]:=a3[j,1];

    seek(f,0);

    write(f,a3);

    writeln(' Вывод календаря');

    for i:=1 to nnq1 do

     begin

      for j:=1 to matr+2 do

       write(a3[j,i],' ');write('   ');

     end;

    writeln;

    grup;

    end;

 

3.4.Процедура инициализации

В процедуре INTLC определяются необходимые условия имитации. Обязательными являются оператор задания начального имитационного времени и оператор планирования события.

В процедуре задаются начальные условия:

  • tnow:=ttbeg – время начала имитации;
  • zanyat:=false – обнуление занятости сотрудника;
  • nevents:=0 – количество событий в календаре;
  • ochered:=0 – количество клиентов в очереди;
  • all:=0 – общее число клиентов;
  • schdl(1) – планирование первого события.


 

 


 
3.5.Главный модуль


В главном модуле задаются всепрогонные переменные, вводится количество прогонов, а также вызывается процедура slam.

  • nnrns:=0;
  • ttbeg:=0;
  • ttfin:=600;

 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
3.6.Процедура поиска алгоритма обработки события


Процедура поиска алгоритма обработки события EVENT содержит оператор выбора Case, реализующий  выбор требуемой  процедуры по коду извлечённого события. Имеется 4 класса событий: приход, обслуживание, уход и ЧС.

 
3.7.Процедура обработки события первого класса 

Данная процедура служит для обработки события «Приход клиента». В ней клиент становится в очередь и увеличивается число человек в очереди на 1. Если сотрудник не занят, то происходит переход к планированию события второго класса.

3.8.Процедура обработки события второго класса

Это процедура обслуживания у сотрудника. Число клиентов в очереди уменьшается на 1, и если оно равняется 0, то сотрудник свободен, иначе клиент остаётся в очереди. Происходит обслуживание и увеличение числа обслуженных клиентов на 1.

3.9.Процедура обработки  события третьего класса

Это процедура ухода клиента. Число клиентов в очереди уменьшается на 1.

3.10.Процедура обработки  события четвёртого класса

Процедура обработки события данного класса вызывается в случае наступления чрезвычайной ситуации (отключение света). При этом работа диспетчерской службы приостанавливается на время устранения причин задержки. Увеличивается время свершения события в календаре.

3.11.Процедура формирования отчёта по прогону

Данная процедура Outputn формирует отчёт по прогону. На экран и в файл выводятся следующие статистические данные:

  • Номер прогона;
  • Общее количество обслуженных;
  • Средняя длина очереди за прогон;
  • Среднее время обслуживания за прогон;
  • Время закрытия;
  • Количество ЧС за прогон.

 

 

3.12.Процедура формирования отчёта по всем прогонам

Процедура Output выводит на экран и в файл данные:

  • Среднее количество обслуженных;
  • Средняя длина очереди;
  • Среднее время обслуживания;
  • Время закрытия;
  • Число прогонов;
  • Количество ЧС.

 

4.ВЫБОР ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

 

Для реализации имитационной модели воспользуемся универсальным языком программирования. В качестве такого языка будем использовать язык Borland Pascal 7.0.

 

Данный язык обладает достаточным набором операторов, с помощью которых вполне реально создать имитационную модель. Кроме того, данное программное средство очень просто в применении. 
5.ПРОГРАММА ИМИТАЦИОННОГО МОДЕЛИРОВАНИЯ

 

После запуска программы необходимо ввести число прогонов. После окончания имитации на экране отобразятся итоговые данные. Просмотрев их, необходимо провести анализ и выяснить оптимальное количество прогонов. После этого запустить программу с этим числом прогонов и просмотреть новые результаты. В результате этих действий итоговые данные моделирования будут удовлетворять с заданной вероятностью определённому доверительному интервалу.

 

6.РЕЗУЛЬТАТЫ МОДЕЛИРОВАНИЯ

 

После запуска программы введём   количество  прогонов  модели равное 10. В результате имитации получим данные, по каждому из прогонов. Ниже приведен отчет по первому прогону (рис 7):

**************************************************************

Прогон №1

Время закрытия:    18:00

Общее число посетителей:    63

Средняя длина очереди:    1.19

Среднее время обслуживания:    9.48

**************************************************************

 

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

Номер прогона

Время закрытия

Общее число посетителей

Средняя длина очереди

Среднее время обслуживания

ЧС

1

18:00

63

1.19

9.48

 

2

18:00

67

1.279

9.43

 

3

18:00

66

1.299

9.57

 

4

18:00

65

1.154

9.71

 

5

18:00

63

1.361

9.84

 

6

18:00

64

1.172

9.891

 

7

18:00

66

1.136

9.41

 

8

18:00

69

1.242

9.17

ЧС

9

18:00

65

1.319

9.55

 

10

18:00

68

1.261

9.33

 

Среднее

 

65.6

1.241

9.53

1


 

Таблица 1 – результаты моделирования при количестве прогонов, равном 10 
7.АНАЛИЗ РЕЗУЛЬТАТОВ

7.1.Расчёт оптимального числа прогонов

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

Для того, чтобы выполнить подобный анализ, необходимо задать два параметра: доверительную вероятность и точность оценки.

Число независимых повторных прогонов для достижения заданной доверительной вероятности  1- α равно

,[2]

где - среднеквадратическое отклонение переменной X; q – половина доверительного интервала (точность оценки). Поскольку сами параметры , основаны на статистике, сначала делают  любые I прогонов, находят (по разбросу выборок X), (по таблице t-распределения Стьюдента для заданной доверительной вероятности и m=I–1), а затем уточняют I  по и q.[2]

m – число прогонов

=65 – выборочное среднее число посетителей.

Примем доверительную вероятность  p=1-α=0.95(95%).

=2.26216 

Для полученных данных имеем:

 = =3.01(ед. 
клиентов).

q=*0.05/2=65*0.025=1.625(ед.клиентов)

Подставим полученные значения в формулу для расчёта оптимального числа прогонов:

==17 
В результате анализа получаем, что оптимальное количество прогонов, которое обеспечивает оценку математического ожидания с точностью 5% равно 17.

7.2. Установление закона  распределения

    Процедура проверки гипотез требует определения нулевой гипотезы (H0) и альтернативной (H1). Проверка ведется по выбранным критериям.

-критерий (критерий согласия  Пирсона) используют при наличии  гистограмм:

,

где - число интервалов, - теоретическая вероятность попадания в - й интервал, - практическое число попаданий в - й интервал. Из таблицы - распределения находят верхний порог значимости (квантиль)   (где ) для выбранного . Значение сравнивают с :

1) приемлемо, если  < (гипотеза H0);

2) не приемлемо, если  ³ (гипотеза H1).

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

    На основе таблицы 2, приведённой ниже, построим гистограмму (рис 8).

 

 

Номер прогона

Количество посетителей

Средняя длина очереди

Среднее время обслуживания

ЧС

1

63

1.17

9.46

 

2

66

1.299

9.57

 

3

65

1.319

9.55

 

4

66

1.307

9.61

 

5

67

1.279

9.43

 

6

67

1.268

9.41

 

7

69

1.242

9.17

 

8

68

1.261

9.33

 

9

69

1.241

9.16

ЧС

10

69

1.244

9.19

 

11

64

1.172

9.891

 

12

68

1.265

9.36

 

13

65

1.322

9.58

 

14

62

1.13

9.41

 

15

64

1.165

9.886

 

16

67

1.272

9.44

 

17

64

1.18

9.896

 

Среднее

66.059

1.243

9.491

1

Моделирование работы диспетчерского пункта