|
Моделирование системы массового обслуживания
Моделирование системы массового обслуживания
25 Министерство образования и науки Республики Казахстан Карагандинский государственный технический университет Кафедра ПОЯСНИТЕЛЬНАЯ ЗАПИСКА к курсовому проекту по дисциплине "Прикладная теория систем" Тема: "Моделирование системы массового обслуживания" Руководитель Студент 2009 Содержание - Введение
- 1. Постановка задачи
- 2. Теоретическая часть
- 2.1 Предмет и задачи теории массового обслуживания
- 3. Описание программного модуля
- 4. Руководство программиста
- 5. Руководство пользователя
- Заключение
ВведениеКомпьютерное моделирование нашло практическое применение во всех сферах деятельности человека, начиная от моделей технических, технологических и организационных систем и заканчивая проблемами развития человечества и вселенной. Еще с детства человек через игрушки и игры узнает мир и таким образом моделирует действительность. Вместо того, чтобы учиться на своих ошибках или на ошибках других людей, целесообразно закреплять и проверять познание реальной действительности полученными результатами на компьютерной модели. В этом случае есть возможность проигрывать на модели любые ситуации, включая те, при которых реальная система вышла бы из строя. Это позволяет моделировать катастрофы, редкие события и так далее. Одно из преимуществ компьютерного моделирования - это также моделирование того, что не существует на самом деле, то есть моделирование виртуальной реальности.За последнее время в самых разных областях практики возникла необходимость в решении различных вероятностных задач, связанных с работой так называемых систем массового обслуживания (СМО). Примерами таких систем могут служить: телефонные станции, ремонтные мастерские, билетные кассы, стоянки такси, парикмахерские, медицинские учреждения и т.п.Темой данного курсового проекта является моделирование дневного стационара - многоканальной СМО с ожиданием. Задачами являются определение оптимального числа койко-мест для данного количества клиентов стационара. Решение данной задачи построено не на аналитическом описании системы, а на статистическом моделировании.Медицинское учреждение - это такая организация, в которой требуется грамотное управление, так как от эффективности работы этой организации зависит то, насколько квалифицировано и своевременно будут обслужены клиенты. Для того, чтобы достаточно эффективно анализировать работу этой достаточно крупной организации, применяется имитационное моделирование. Моделирование хорошо тем, что не требуется вмешиваться в работу данной организации, после создания модели с ней можно проводить любые испытания и эксперименты.Практическое решение задачи осуществлено с помощью программы, реализованной в среде Delphi 7.1. Постановка задачиФормулировка задачи:Построить модель СМО - дневной стационар и исследовать поведение характеристик её эффективности.Описание системы:Имеется многоканальная СМО с ожиданием с одним потоков заявок. Поток заявок однородный. То есть поступившая на обслуживание в стационар звонка направляется на одну из коек, если она свободна, получив койку заявка отправляется на процедуры, если свободных процедур нет, она становится в очередь на соответствующую процедуру с наименьшей очередью из списка необходимых для данной заявки, иначе она становятся в очередь на койку с наименьшей очередью. Осуществляется возможность поступления как обычных, так и приоритетных заявок.Частота поступления заявок в стационар по промежуткам времени определяется пользователем.Теоретическое представление задачи.На многоканальную СМО поступают заявки стационарных, ординарных потоков без последействия.Поток событий называется стационарным, если вероятность попадания того или иного числа событий на участок времени длиной зависит только от длины участка и не зависит от того, где именно на оси времени расположен этот участок.Поток событий называется ординарным, если вероятность попадания на элементарный участок t двух или более событий пренебрежимо мала по сравнению с вероятностью попадания одного события. Ординарность означает, что поток прореженный, т.е. между любыми двумя событиями есть временной интервал.Поток событий называется потоком без последействия, если для любых, не перекрывающихся участков времени число событий, попадающих на один из них, не зависит от числа событий, попадающих на другие. Это означает, что заявки попадают в систему не зависимо друг от друга.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.Для программного представления заявок используется следующая записьtypezaeavka=recordt1: real; // время появления заявкиt2: real; // время ожедания в очередиt_obs: real; // время обслуживанияprior: boolean; // приоритет заявкиproc: string; // на какие процедурыkoyka: integer;end;Для программного представления потока входных заявок используется следующая записьtypevpotok_z=recordz_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=recordmas_z: array of zaeavka;ochered: integer; // кол-во в очеридеmax_l_och: integer; // max длина очередиname: string;t_ozhed: real;ind: integer;prior: boolean;end;Для программного представления аппарата обслуживания - процедура используется следующая записьtypeobsluzh_p=recordmas_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;Для программного представления аппарата обслуживания -койка используется следующая записьtypeobsluzh_k=recordmas_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, в котором представлена справка по данной программеЗаключениеВ результате работы была разработана упрощенная модель медицинского учреждения - стационар. В модель можно ввести реальные данные, такие как количество мест в стационаре, максимальное время обслуживания в отделении стационара и так далее.По результатам многократного моделирования с различным числом койко-мест, можно провести статистическое исследование, с целью выявления наиболее оптимальных параметров построения и функционирования стационараМоделирование предоставляет большие возможности для анализа и проигрывания различных ситуаций в системах массового обслуживания.
|
|