Министерство образования и науки Республики Казахстан
Карагандинский государственный технический университет
Кафедра
ПОЯСНИТЕЛЬНАЯ
ЗАПИСКА
к курсовому проекту
по дисциплине "Прикладная теория систем"
Тема: "Моделирование системы массового обслуживания"
Руководитель
Студент
2009
Содержание
Введение
1. Постановка задачи
2. Теоретическая часть
2.1 Предмет и задачи теории массового обслуживания
3. Описание программного модуля
4. Руководство программиста
5. Руководство пользователя
Заключение
Введение
Компьютерное моделирование нашло практическое применение во всех сферах деятельности человека, начиная от моделей технических, технологических и организационных систем и заканчивая проблемами развития человечества и вселенной. Еще с детства человек через игрушки и игры узнает мир и таким образом моделирует действительность. Вместо того, чтобы учиться на своих ошибках или на ошибках других людей, целесообразно закреплять и проверять познание реальной действительности полученными результатами на компьютерной модели. В этом случае есть возможность проигрывать на модели любые ситуации, включая те, при которых реальная система вышла бы из строя. Это позволяет моделировать катастрофы, редкие события и так далее. Одно из преимуществ компьютерного моделирования - это также моделирование того, что не существует на самом деле, то есть моделирование виртуальной реальности.
За последнее время в самых разных областях практики возникла необходимость в решении различных вероятностных задач, связанных с работой так называемых систем массового обслуживания (
СМО
). Примерами таких систем могут служить: телефонные станции, ремонтные мастерские, билетные кассы, стоянки такси, парикмахерские, медицинские учреждения и т.п.
Темой данного курсового проекта является моделирование дневного стационара - многоканальной СМО с ожиданием. Задачами являются определение оптимального числа койко-мест для данного количества клиентов стационара. Решение данной задачи построено не на аналитическом описании системы, а на статистическом моделировании.
Медицинское учреждение - это такая организация, в которой требуется грамотное управление, так как от эффективности работы этой организации зависит то, насколько квалифицировано и своевременно будут обслужены клиенты. Для того, чтобы достаточно эффективно анализировать работу этой достаточно крупной организации, применяется имитационное моделирование. Моделирование хорошо тем, что не требуется вмешиваться в работу данной организации, после создания модели с ней можно проводить любые испытания и эксперименты.
Практическое решение задачи осуществлено с помощью программы, реализованной в среде Delphi 7.
1. Постановка задачи
Формулировка задачи:
Построить модель СМО - дневной стационар и исследовать поведение характеристик её эффективности.
Описание системы:
Имеется многоканальная СМО с ожиданием с одним потоков заявок. Поток заявок однородный. То есть поступившая на обслуживание в стационар звонка направляется на одну из коек, если она свободна, получив койку заявка отправляется на процедуры, если свободных процедур нет, она становится в очередь на соответствующую процедуру с наименьшей очередью из списка необходимых для данной заявки, иначе она становятся в очередь на койку с наименьшей очередью. Осуществляется возможность поступления как обычных, так и приоритетных заявок.
Частота поступления заявок в стационар по промежуткам времени определяется пользователем.
Теоретическое представление задачи.
На многоканальную СМО поступают заявки стационарных, ординарных потоков без последействия.
Поток событий называется стационарным, если вероятность попадания того или иного числа событий на участок времени длиной t зависит только от длины участка и не зависит от того, где именно на оси времени расположен этот участок.
Поток событий называется ординарным, если вероятность попадания на элементарный участок Dt двух или более событий пренебрежимо мала по сравнению с вероятностью попадания одного события. Ординарность означает, что поток прореженный, т.е. между любыми двумя событиями есть временной интервал.
Поток событий называется потоком без последействия, если для любых, не перекрывающихся участков времени число событий, попадающих на один из них, не зависит от числа событий, попадающих на другие. Это означает, что заявки попадают в систему не зависимо друг от друга.
2. Теоретическая часть
2.1 Предмет и задачи теории массового обслуживания
Теория массового обслуживания - область прикладной математики, занимающаяся анализом процессов в системах производства, обслуживания, управления, в которых однородные события повторяются многократно, например, на предприятиях бытового обслуживания; в системах приема, переработки и передачи информации; автоматических линиях производства и др.
Предметом теории массового обслуживания является установление зависимостей между характером потока заявок, числом каналов обслуживан6ия, производительностью отдельного канала и эффективным обслуживанием с целью нахождения наилучших путей управления этими процессами.
Задача теории массового обслуживания - установить зависимость результирующих показателей работы системы массового обслуживания (вероятности того, что заявка будет обслужена; математического ожидания числа обслуженных заявок и т.д.) от входных показателей (количества каналов в системе, параметров входящего потока заявок и т.д.). Результирующими показателями или интересующими нас характеристиками СМО являются - показатели эффективности СМО, которые описывают способна ли данная система справляться с потоком заявок.
Задачи теории массового обслуживания носят оптимизационный характер и в конечном итоге включают экономический аспект по определению такого варианта системы, при котором будет обеспечен минимум суммарных затрат от ожидания обслуживания, потерь времени и ресурсов на обслуживание и простоев каналов обслуживания.
Система массового обслуживания.
Система обслуживания считается заданной, если известны:
1) поток требований, его характер;
2) множество обслуживающих приборов;
3) дисциплина обслуживания (совокупность правил, задающих процесс обслуживания).
Каждая СМО состоит из какого-то числа обслуживающих единиц, которые называются каналами обслуживания. В качестве каналов могут фигурировать: линии связи, различные приборы, лица, выполняющие те или иные операции и т. п
Всякая СМО предназначена для обслуживания какого-то потока заявок, поступающих в какие-то случайные моменты времени. Обслуживание заявок продолжается какое-то случайное время, после чего канал освобождается и готов к приему следующей заявки. Случайный характер потока заявок и времен обслуживания приводит к тому, что в какие-то периоды времени на входе СМО скапливается излишне большое число заявок (они либо становятся в очередь, либо покидают СМО не обслуженными); в другие же периоды СМО будет работать с недогрузкой или вообще простаивать.
Процесс работы СМО представляет собой случайный процесс с дискретными состояниями и непрерывным временем; состояние СМО меняется скачком в моменты появления каких-то событий (или прихода новой заявки, или окончания обслуживания, или момента, когда заявка, которой надоело ждать, покидает очередь).
Классификация СМО.
Для облегчения процесса моделирования используют классификацию СМО по различным признакам, для которых пригодны определенные группы методов и моделей теории массового обслуживания, упрощающие подбор адекватных математических моделей к решению задач обслуживания в коммерческой деятельности. (см. рис.1)
Характеристики СМО.
Перечень характеристик систем массового обслуживания можно представить следующим образом:
среднее время обслуживания;
среднее время ожидания в очереди;
среднее время пребывания в СМО;
средняя длина очереди;
среднее число заявок в СМО;
количество каналов обслуживания;
интенсивность входного потока заявок;
интенсивность обслуживания;
интенсивность нагрузки;
коэффициент нагрузки;
относительная пропускная способность;
абсолютная пропускная способность;
доля времени простоя СМО;
доля обслуженных заявок;
доля потерянных заявок;
среднее число занятых каналов;
среднее число свободных каналов;
коэффициент загрузки каналов;
среднее время простоя каналов.
3. Описание программного модуля
При запуске программы, для начала процесса моделирования, необходимо ввести параметры моделирования. Во всех полях введены значения по умолчанию. При нажатии на кнопку “начать моделирование" происходит инициализация всех переменных, и чтение параметров моделирования.
После того как все параметры считаны, запускается процедура Timer1Timer, в которой 0,001 с реального времени соответствует 1 с модельного времени. Эта процедура предназначена для того, чтобы каждую секунду модельного времени фиксировать состояние системы (появилась ли заявка, освободилась ли процедура или койка, просматривание очередей и постановка на обслуживание, удаление из очередей и т.д.).
Процесс моделирование можно остановить в любой удобный момент, для этого существуем соответствующая процедура, со следующим продолжением или возобновлением процесса.
В программе используются глобальные переменные которые характеризуются время, пройденным с момента появления заявки, текущее время, время обслуживания на соответствующей процедуре. На каждое выполнение таймера происходит инкрементация этих переменных. Если время пребывания заявки в системе становится равной максимальному времени ожидания в системе, она теряется (покидаем систему).
После появления заявки:
Проверяются все койки на наличие свободной, если таковой нет то заявка помешается в очередь на койку с наименьшей очередью, если все очереди заполнены, заявка теряется, иначе ставится на обслуживания
Если заявка поступила на обслуживание, для нее генерируется количество процедур, на которые она пойдет и список процедур.
Проверяется есть ли свободные процедуры из списка, если есть то заявка идет на обслуживание, иначе ставится в очередь на процедуру с наименьшей очередью, если все очереди заполнены, заявка теряется
Наращивается время пребывания заявок в системе, время простоя аппаратов обслуживания, время прошедшее с начала обслуживания, для заявок на процедурах, время простоя аппаратов обслуживания
Проверяются очереди, койки и процедуры на потерю заявок (заявка теряется, если время пребывания в системе равно максимальному времени пребывания в системе)
Проверяются процедуры, ели время обслуживания заявки закончено, она ставится на следующую из списка, или в очередь на следующую, если список ее процедур не пуст. Освобожденная процедура начинает обслуживание заявки из очереди
Проверяются койки, если список процедур обслуживаемой заявки пуст, койка освобождается, просматривается очередь и ставится на обслуживание свежующая заявка.
Наращивается текущее время моделирования.
Если текущее время равно времени моделирования, процесс останавливается, выдается сообщение "моделирование завершено", генерируется отчет, работа таймера останавливается.
Заявки поступают на обслуживание из очереди в соответствии с приоритетом (сначала на обслуживание идут приоритетные заявки). Каждую секунду состояние системы визуально отображается с помощью графиков и таблицы, которые будут описаны в руководстве пользователя.
4. Руководство
Все файлы проекта располагаются в директории с наименованием СМО. В проект входят: файл проекта DelphiSMO. dpr, файлы исходного текста:
Unit1 - основной модуль
Unit2 - модуль для заполнения параметров каналов обслуживания (процедур)
Unit3 - модуль для заполнения параметров очередей
Unit4 - модуль для заполнения параметров потоков входных заявок
Unit5 - модуль для демонстрации приветствия
Файл справки (Руководство пользователя) в формате HTML, и исполняемый файл SMO. exe.
Для программного представления заявок используется следующая запись
type
zaeavka=record
t1: real; // время появления заявки
t2: real; // время ожедания в очереди
t_obs: real; // время обслуживания
prior: boolean; // приоритет заявки
proc: string; // на какие процедуры
koyka: integer;
end;
Для программного представления потока входных заявок используется следующая запись
type
vpotok_z=record
z_ki: zaeavka;
name: string;
t1_zaevki: real;
ind: integer;
ot,do_, interval: real;
prioritet: boolean;
p1,p2: real;
kol_sgener_z: integer;
end;
Для программного представления очереди используется следующая запись
type ocher=record
mas_z: array of zaeavka;
ochered: integer; // кол-во в очериде
max_l_och: integer; // max длина очереди
name: string;
t_ozhed: real;
ind: integer;
prior: boolean;
end;
Для программного представления аппарата обслуживания - процедура используется следующая запись
type
obsluzh_p=record
mas_ochered: array of ocher;
name: string;
bul: boolean; // занят, свободен
obsl: integer; // кол-во обслуженных
poter: integer; // кол-во потерян заявок
t_obsl_min: real; // время обслуживания
t_obsl_max: real; // время обслуживания
t_prostoy: real; // время простоя
z_obsl: zaeavka;
end;
Для программного представления аппарата обслуживания -койка используется следующая запись
type
obsluzh_k=record
mas_ocher: array of ocher;
bul_k: boolean; // занят, свободен
poter_k: integer; // кол-во потерян заявок
obsl: integer; // кол-во обслуженных
t_prostoy: real; // время простоя
z_obsl: zaeavka;
n_koyki: integer;
end;
Компонент Series1, Series2 служат для построения графиков, характеризующих состояние системы на текущей момент по:
Количеству обслуженных заявок
Количеству потерянных заявок
Времени простоя
Состоянию (занят (1), свободен (0))
Эффективность работы ( (общее время - время порстоя) / общее время).
Ниже приведены глобальные переменные, используемые в программе.
vpz: array of vpotok_z;
koyki: array of obsluzh_k;
proz: array of obsluzh_p;
i,j,k,l,n,m: integer;
s,d,f: string;
p3: real;
k_p,k_o,k_k: integer;
t_1z: real;
kol_koek: integer; // количество коек
t_mod: real; // время моделирования
t_tek: real; // текущее (сколько прошло с момента начала моделирования)
t: real;
indeks: integer;
t_ozhed_v_SMO: real;
file_: file of real;
sfilename: string='';
ind_n: integer;
В программе используются процедуры и функции, которые написаны для удобства работы и понимания программы:
procedure
TForm1.
Button1
Click (
Sender:
TObject) -
процедура добавляющая в систему потоки входных заявок с соответствующими свойствами
procedure
TForm1.
Button3
Click (
Sender:
TObject) -
процедура добавляющая в систему аппарата обслуживания - процедура с соответствующими свойствами
procedure
TForm1.
SpeedButton1
Click (
Sender:
TObject) -
процедура, предназначенная для считывания всех заданных пользователем начальных параметров и запуска таймера
procedure tform1. otchet -
процедура создания отчета по результатам моделирования
procedure TForm1. Timer1Timer (Sender: TObject) -
процедура моделирования
procedure
TForm1.
N3
Click (
Sender:
TObject) -
процедура сохранения установленных параметров системы
procedure
TForm1.
N2
Click (
Sender:
TObject) -
процедура открытия ранее сохраненных параметров системы
procedure
TForm1.
N4
Click (
Sender:
TObject) -
процедура сохранения отчета с результатами моделирования
procedure
TForm1.
N15
Click (
Sender:
TObject) -
процедура временной остановки моделирования
procedure TForm1. N17Click (Sender: TObject) -
процедура очистки текстовых полей
procedure TForm1. TabSet1MouseUp (Sender: TObject; Button: TMouseButton;
Shift:
TShiftState;
X,
Y:
Integer) -
процедура перерисовки графиков для коек
procedure TForm1. TabSet2MouseUp (Sender: TObject; Button: TMouseButton;
Shift:
TShiftState;
X,
Y:
Integer) -
процедура перерисовки графиков для процедур.
Работа всех этих функций и процедур описана в приложении курсового проекта.
5. Руководство пользователя
Исполняемый файл программы, SMO. exe, рекомендуется скопировать в директорию c: SMO, и создать ярлык программы на рабочем столе.
При запуске программы на несколько секунд появляется окно приветствия изображенное на рисунке 1, после чего оно закрывается и открывается главное окно, состоящее из трех вкладок, первая из них представленное на рисунке 2.
Рисунок 1. Окно приветствия.
Рисунок 2. Главное окно программы, вкладка "начальные параметры СМО".
В верхней половине окна расположены панели для ввода основных параметров работы системы:
Потоков входных заявок
Обслуживающих устройств - процедур
Очередей
После добавления необходимого количества потоков входных заявок, можно произвести настройку параметров каждого из них. При щелчке мышью на соответствующем имени потока появляется окно свойств представленное на рисунке 3.
Рисунок 3. Окно установки свойств потока входных заявок
В данном окне можно установить наименование потока, количество заявок, поступивших за какой - либо промежуток времени, указанный в минутах или часах, и статус заявки, т е простые или приоритетные заявки будет генерировать данный поток.
После добавления необходимого количества обслуживающих устройств - процедур, можно произвести настройку параметров каждого из них. При щелчке мышью на соответствующем имени устройства появляется окно свойств представленное на рисунке 4.
Рисунок 4. Окно установки свойств обслуживающего устройства
В данном окне можно установить наименование, максимальную и минимальную длительность обслуживания заявки в минутах.
При добавлении количества входных потоков заявок автоматически генерируется количество очередей (максимальное их количество 2, для приоритетных и обычных заявок). Для каждой очереди можно произвести настройку параметров. При щелчке мышью на соответствующем имени потока появляется окно свойств представленное на рисунке 5.
Рисунок 5. Окно установки свойств очереди
В данном окне можно установить наименование и максимальную длину очереди.
В нижней половине окна можно настроить:
время моделирования (в годах, неделя, часах или минутах)
время пребывания заявки в системе (в минутах или часах), по истеканию которого заявка покидает систему, не зависимо от того, где она в данный момент находилась
количество койко-мест
рабочие часу (установка которых требуется, когда время моделирования измеряется в неделях или годах), если данные параметры не были установлены, то при необходимости программа их запросит
Также в нижнем левом углу представлено текстовое поле в котором отображается текущее время моделирования.
По нажатию на кнопку "начать моделирование", из текстовых полей считываются все введенные параметра и процесс моделирования начинается.
По нажатию на кнопку "остановить", процесс моделирования временно останавливается.
После начала моделирования на вкладке "Статистика" (Рисунок 6), отображаются данные по текущему состоянию системы.
Рисунок 6. Вкладка "Статистика"
В нижней части окна находится область, характеризующая в процентах время, прошедшее с момента начала моделирования. Графики по койкам и процедурам соответственно отражают информацию по:
количеству обслуженных заявок на каждой койке и процедуре
количеству потерянных заявок на каждой койке и процедуре
время простоя
состояние (свободна 1, занята 0)
эффективность работы
После окончания моделирования выдается сообщение "моделирование закончено" и генерируется отчет, который отображается на вкладке "отчет", который представлен на рисунке 7.
Рисунок 7. Вкладка "Отчет"
В результате расчета коэффициента эффективности 100* (время моделирование - время простоя) /время моделирования по окончанию работы программы, все койки, у которых он меньше 50 рекомендуется удалить для более эффективной работы системы.
В верхней части окна имеется строка меню состоящая из:
Меню файл
открытие ранее сохраненного проекта
сохранение текущего проекта в файл
сохранение отчета по результатам моделирования
выход из программы
Меню правка
очищение таблиц с данными по моделированию
очищение текстовых полей вкладки 1
Меню моделирование
инициирование начала моделирования
остановка моделирования
продолжение моделирования
Меню результаты
вывод результатов в виде таблицы
вывод результатов в виде графика
вывод результатов в смешенном виде (1 и 2)
Меню помощь
вызов справки. Открывается файл SO.html, в котором представлена справка по данной программе
Заключение
В результате работы была разработана упрощенная модель медицинского учреждения - стационар. В модель можно ввести реальные данные, такие как количество мест в стационаре, максимальное время обслуживания в отделении стационара и так далее.
По результатам многократного моделирования с различным числом койко-мест, можно провести статистическое исследование, с целью выявления наиболее оптимальных параметров построения и функционирования стационара
Моделирование предоставляет большие возможности для анализа и проигрывания различных ситуаций в системах массового обслуживания.