Моделирование работы диспетчерского пункта
Автор работы: Пользователь скрыл имя, 15 Октября 2017 в 13:49, курсовая работа
Описание работы
Объектом моделирования является диспетчерская служба.
Предметом моделирования:
- Приём заявок от клиентов.
- Обработка заявок от клиентов.
- Выдача результата клиенту в виде квитанции.
Файлы: 1 файл
Курсовая моделирование.docx
— 84.81 Кб (Скачать файл)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[
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])
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- α равно
где - среднеквадратическое отклонение переменной 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 |