Министерство образования и науки Республики Казахстан
Карагандинский государственный технический университет
Кафедра
ПОЯСНИТЕЛЬНАЯ
ЗАПИСКА
к курсовому проекту
по дисциплине «Прикладная теория систем»
Тема: «Моделирование системы массового обслуживания»
Руководитель
Студент
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. Руководство программиста
Все файлы проекта располагаются в директории с наименованиемСМО. В проект входят: файл проекта Delphi SMO. 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. Button1Click (Sender: TObject) — процедура добавляющая в систему потоки входныхзаявок с соответствующими свойствами
procedure TForm1. Button3Click (Sender: TObject) — процедура добавляющая в систему аппаратаобслуживания — процедура с соответствующими свойствами
procedure TForm1. SpeedButton1Click (Sender: TObject) — процедура, предназначенная для считывания всехзаданных пользователем начальных параметров и запуска таймера
procedure tform1. otchet — процедура создания отчетапо результатам моделирования
procedure TForm1. Timer1Timer (Sender: TObject)- процедура моделирования
procedure TForm1. N3Click (Sender: TObject) — процедура сохранения установленных параметровсистемы
procedure TForm1. N2Click (Sender: TObject) — процедура открытия ранее сохраненных параметровсистемы
procedure TForm1. N4Click (Sender: TObject) — процедура сохранения отчета с результатамимоделирования
procedure TForm1. N15Click (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,в котором представлена справка по данной программе
Заключение
В результате работы была разработана упрощенная модельмедицинского учреждения — стационар. В модель можно ввести реальные данные, такиекак количество мест в стационаре, максимальное время обслуживания в отделениистационара и так далее.
По результатам многократного моделирования с различнымчислом койко-мест, можно провести статистическое исследование, с цельювыявления наиболее оптимальных параметров построения и функционированиястационара
Моделирование предоставляет большие возможности для анализаи проигрывания различных ситуаций в системах массового обслуживания.