Министерство образования и науки Республики Казахстан
Карагандинский Государственный Технический Университет
Кафедра ____САПР______
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту
По дисциплине: ”Прикладная теория систем”
Тема: "Разработка иммитационной модели системы
массового обслуживания"
Руководители
(подпись)
(дата)
Студент
(подпись)
(дата)
2009
Содержание
Введение
1. Техническое задание
2. Теоретическая часть
2.1 Предмет и задачи теории массового обслуживания
2.2 Классификация СМО
2.3 Характеристики СМО
2.4 Концептуальная модель СМО
2.5 Актуальность работы
2.6 Существующие алгоритмы решения
2.7 Технические требования
2.7.1 Общие требования
2.7.2 Центральный процессор
2.7.3 Материнская плата
2.7.4 Оперативная память
2.7.5 Видеоадаптер
2.7.6 Монитор
2.7.7 Жесткий диск
2.7.8 Клавиатура
2.7.9 Мышь
3. Практическая часть
3.1 Выбор среды разработки программирования
3.2 Выбор алгоритма решения
3.3 Структура программы
3.4 Результаты экспериментов
3.5 Руководство пользователю
Заключение
Список используемой литературы
Введение
Система массового обслуживания (СМО) - математическая
модель, разработанная для описания класса многочисленных и широко
распространенных сложных систем, назначением которых является очень широко
понимаемое обслуживание, причем обслуживание массовое.
В задачи курсового проекта входит:
получение знаний в области прикладной теории систем;
выработка способности системного рассмотрения проблем и
задач;
развитие навыков программирования, полученных на предыдущих
курсах;
написание программы, соответственно варианту задания.
Целью выполнения данного курсового проекта является
приобретение практических навыков системного исследования реальной динамической
сложной системы на основе построения ее имитационной модели. В проекте производилось
моделирование работы "Поликлиники" - многоканальной СМО с ожиданием.
Медицинское учреждение - это такая организация, в которой
требуется грамотное управление, так как от эффективности работы этой
организации зависит то, насколько квалифицировано и своевременно будут
обслужены клиенты. Поэтому была поставлена задача создания наиболее совершенной
системы моделирования для получения более точных результатов работы.
Разработанный проект демонстрирует имитационную модель СМО,
работа с которой очень удобна для пользователя. Программа является очень
актуальной на сегодняшний день, она автоматизирует работу по расчету
эффективности системы массового обслуживания и предоставляет пользователю (оператору)
понятный и дружественный интерфейс. Программа позволяет пользователю вводить
свои параметры, менять настройки, производить анализ работы системы.
1. Техническое задание
По заданию к курсовому проекту необходимо разработать
программу реализации алгоритма имитационного моделирования СМО "Поликлиника".
Для разработки использовать любую визуальную среду программирования.
В интерфейсе программы предусмотреть возможность ввода
параметров:
время моделирования;
число потоков заявок и параметры каждого потока (приоритет,
min и max интервал генерирования);
число аппаратов обслуживания;
число очередей и max время пребывания заявки в очереди;
время обслуживания одной заявки (для каждого аппарата
определяются min и max значения и время подготовки к обслуживанию).
Результаты работы программы должны включать:
на каждом шаге отображать модельное время;
статистика по поступившим, находящимся в системе на
обслуживании и обработанным заявкам;
статистика по потокам заявок, очередям и аппаратам
обслуживания.
Интерфейс программы должен включать описание СМО в
соответствии с вариантом, сведения о разработчике, краткую справку (руководство
пользователю).
По заданию аппаратами выступают процедуры (всего в
поликлинике может быть от 3 до 9 процедур). Каждому больному могут назначать
несколько процедур из списка возможных. Устанавливается время ожидания заявки в
очереди, периодичность прихода клиентов, время обслуживания каждой процедуры (от
5 до 60 минут), максимальная длина очереди, количество процедур для пациента. Определить
оптимальное число процедур для более эффективного обслуживания всех пациентов.
По результатам моделирования пользователь может производить
анализ о количестве необходимых аппаратов, которые обслуживают клиентов, и об
эффективности их работы.
2. Теоретическая часть
2.1 Предмет и задачи теории массового обслуживания
Теория массового обслуживания - область прикладной
математики, занимающаяся анализом процессов в системах производства,
обслуживания, управления, в которых однородные события повторяются многократно,
например, на предприятиях бытового обслуживания; в системах приема, переработки
и передачи информации; автоматических линиях производства и др.
Предметом теории массового обслуживания является
установление зависимостей между характером потока заявок, числом каналов
обслуживан6ия, производительностью отдельного канала и эффективным
обслуживанием с целью нахождения наилучших путей управления этими процессами.
Задача теории массового обслуживания - установить
зависимость результирующих показателей работы системы массового обслуживания (вероятности
того, что заявка будет обслужена; математического ожидания числа обслуженных
заявок и т.д.) от входных показателей (количества каналов в системе, параметров
входящего потока заявок и т.д.). Результирующими показателями или интересующими
нас характеристиками СМО являются - показатели эффективности СМО, которые
описывают способна ли данная система справляться с потоком заявок.
Задачи теории массового обслуживания носят оптимизационный
характер и в конечном итоге включают экономический аспект по определению такого
варианта системы, при котором будет обеспечен минимум суммарных затрат от
ожидания обслуживания, потерь времени и ресурсов на обслуживание и простоев
каналов обслуживания.
Система обслуживания считается заданной, если известны:
1) поток требований, его характер;
2) множество обслуживающих приборов;
3) дисциплина обслуживания (совокупность правил, задающих
процесс обслуживания).
Процесс работы СМО представляет собой случайный процесс с
дискретными состояниями и непрерывным временем; состояние СМО меняется скачком
в моменты появления каких-то событий (или прихода новой заявки, или окончания
обслуживания, или момента, когда заявка, которой надоело ждать, покидает
очередь).
2.2 Классификация СМО
Существует большое количество различных моделей СМО и
методов их классификации.
Рисунок 2.1 - Классификация СМО
На рисунке 2.1 представлены основные классы моделей
массового обслуживания.
Прежде всего они разделяются на марковские и немарковские (рисунок
2.1, а), что связано с определенными классами марковских процессов, с помощью
которых описывается их динамика. Эти два класса систем массового обслуживания
аналогичны соответственно линейным и нелинейным системам автоматического
регулирования, динамика которых описывается линейными и нелинейными
дифференциальными уравнениями. Так же как и в теории автоматического
регулирования, не существует общих методов расчета нелинейных СМО.
Аналитическому исследованию поддаются только частные случаи
нелинейных СМО, которые выделяются в отдельные классы полумарковских,
линейчатых и других СМО. Далее СМО классифицируют на одноканальные и
многоканальные (рисунок 2.1, б) в зависимости от числа приборов обслуживания,
которые могут одновременно обслуживать входные заявки. При этом входной поток
может быть один или их может быть несколько.
В обоих случаях может быть большое разнообразие в режимах
подключения каналов к обслуживанию.
Различают СМО без потерь и с потерями (как в одноканальном,
так и в многоканальном вариантах) в зависимости от того, разрешается входной
заявке ждать в очереди или нет, пока все каналы заняты обслуживанием (рисунок 2.1,
в).
Система массового обслуживания без потерь имеет большое
количество разновидностей, определяемых различными законами ожидания в очереди,
дисциплиной очереди. Для исследования последовательного процесса обслуживания
несколькими приборами введена модель многофазной СМО, в которой заявка после
обслуживания одним прибором поступает на следующий (рисунок 2.1, г). Далее
можно ввести понятия разомкнутой и замкнутой СМО, в которой обслуженная заявка
снова поступает на обслуживание (рисунок 2.1, д). В современных системах
управления встречаются такие сложные комбинации всех рассмотренных выше СМО,
что они образуют целую сеть СМО (рисунок 2.1, е).
2.3 Характеристики СМО
Перечень характеристик систем массового обслуживания можно
представить следующим образом:
•среднее время обслуживания;
•среднее время ожидания в очереди;
•среднее время пребывания в СМО;
•средняя длина очереди;
•среднее число заявок в СМО;
•количество каналов обслуживания;
•интенсивность входного потока заявок;
•интенсивность обслуживания;
•интенсивность нагрузки;
•коэффициент нагрузки;
•относительная пропускная способность;
•абсолютная пропускная способность;
•доля времени простоя СМО;
•доля обслуженных заявок;
•доля потерянных заявок;
•среднее число занятых каналов;
•среднее число свободных каналов;
•коэффициент загрузки каналов;
•среднее время простоя каналов.
2.4 Концептуальная модель СМО
Декомпозиция СМО как сложной системы и представление ее в
виде иерархии подсистем с позиции концепции имитационного моделирования
показана на рисунке 2.2 на схеме показаны основные параметры каждого элемента,
которые были учтены при выполнении данного проекта.
Рисунок 2.2 – Концептуальная модель СМО
2.5 Актуальность работы
Актуальной задачей на сегодняшний день является создание
моделей систем массового обслуживания (СМО), так как такие системы окружают
повсюду. Примерами СМО могут служить телефонные станции, билетные кассы,
магазины, парикмахерские, поликлиники и т.п. Каждая из этих систем состоит из
определенного числа обслуживающих единиц (аппаратов обслуживания). Такими
аппаратами могут быть кассы, продавцы, врачи и другие. Любая СМО предназначена
для обслуживания некоторого количества заявок, поступающие в какие-то случайные
моменты времени. Обслуживание заявки продолжается некоторое время, после чего
канал освобождается и готов к приему следующей заявки.
Таким образом, моделируя реальные процессы, которые могут
происходить в жизни, мы можем прогнозировать качество работы системы. Изменяя параметры
системы, пользователь может проследить, как изменяется эффективность работы. А
затем, можно принять решение о том, при каких установках система будет работать
максимально производительно; сколько следует установить аппаратов, чтобы время
простоя аппарата было минимально, а время занятости максимальным. Изучив
результаты данного моделирования, пользователь может применить их и в своей
жизни. Например, открывая свое дело, каким-то образом касающееся массового
обслуживания населения.
Значит, можно сказать, что данные имитационные модели систем
массового обслуживания имеют большое практическое применение, как для больших
систем, так и систем частного характера.
Конечно, абсолютно идеального варианта эффективной работы
системы гарантировать нельзя, но результаты данного моделирования будут
максимально приближенными к реальным показателям.
2.6 Существующие алгоритмы решения
Все возможности, которые могут представиться при
обслуживании требования (от момента его поступления в систему массового
обслуживания до момента прекращения обслуживания) приведены в данном разделе, а
также описываются правила, определяющие поведение требования во всех этих
случаях.
а) Выбор свободного прибора. Если при поступлении требования
имеется несколько свободных приборов, должно быть задано специальное правило,
согласно которому из их числа выбирается какой-то один. Это может быть прибор с
наименьшим номером или прибор, освободившийся раньше (или позже) других. Часто
выбор осуществляется случайным образом (например, с равной вероятностью).
б) Если же при поступлении требования свободных приборов
нет, возможны два варианта:
требование тут же покидает систему, получает "отказ"
- система с отказами;
требование остается ожидать освобождения прибора - система
с ожиданием.
в) Очередь. Для системы с ожиданием к моменту
освобождения прибора может скопиться несколько ожидающих обслуживания требований,
образующих очередь. Как правило, очередь бывает общей. Однако к каждому из
стоящих рядом телефонов-автоматов выстраивается обычно отдельная очередь (так
называемые "параллельные очереди"). Аналогичную картину можно
наблюдать и в портах, если причалы находятся друг от друга достаточно далеко.
Важно отметить, что в этих примерах параллельные очереди
имеют место в пределах одной и той же системы массового обслуживания, даже при
запрещении переходов из одной очереди в другую, ибо входящий поток является общим.
Если же несколько различных систем массового обслуживания (каждую со своим
потоком и множеством приборов) объединить в одну систему с параллельными
очередями, считая, что входящие потоки образуют общий входящий поток (уже
неоднородный), а совокупность множеств приборов - общее множество приборов (естественно,
не обладающее свойством полнодоступности), такую систему массового обслуживания
принято называть распадающейся.
г) Время обслуживания задается своей функцией
распределения. Естественно, что она может быть различной для различных приборов.
д) Дисциплина очереди. Для систем с ожиданием
наиболее простой является, очевидно, следующая дисциплина: требование ожидает
до тех пор, пока его не начнут обслуживать - система с неограниченным ожиданием.
В общем случае дисциплина задается некоторой системой ограничений,
накладываемых на основные характеристики системы массового обслуживания (с
ожиданием). Наиболее часто встречаются следующие ограничения:
1) На время ожидания - требование может ожидать начала обслуживания
какое-то время, не превосходящее некоторой случайной величины. Если за это
время обслуживание данного требования не начнется, оно теряется. Начав
обслуживаться, требование не покидает систему до конца обслуживания.
2) На время пребывания (так называют сумму времени ожидания
и длительности обслуживания) - требование может находиться в системе время, не
превосходящее некоторой (случайной) величины t, причем, если за это время обслуживание не будет закончено,
требование теряется независимо от того, началось его обслуживание или нет. Таким
образом, могут представиться следующие случаи:
a) за время t требование начало обслуживаться, но
обслуживание еще не закончено - потеря "недообслуженного" требования;
б) за время t
требование начало обслуживаться, обслужилось. Все эти возможности часто
встречаются, например, в задачах военного характера, где какая-либо цель
бывает, доступна для обстрела (или наблюдения) лишь некоторое время.
3) На длину очереди - требование, застав очередь длины k,
остается в ней с вероятностью Pk и не
присоединяется к очереди с вероятностью gk=1
- Pk,'. именно так обычно ведут себя люди в
очередях.
В системах массового обслуживания, являющихся
математическими моделями производственных процессов, возможная длина очереди
ограничена постоянной величиной (емкость бункера, например). Очевидно, это
частный случай общей постановки.
Некоторые возможные и встречающиеся на практике правила:
4) Время обслуживания требования зависит от того, сколько
ему пришлось ожидать.
5) Среднее время обслуживания уменьшается с ростом очереди.
6) Число приборов возрастает с ростом очереди.
е) Назначение очередного требования. Если к моменту
освобождения одного из приборов имеется очередь ожидающих требований, одно из
них (какое?) занимает этот прибор и приступает к обслуживанию.
В силу однородности потока различают требования либо по
длительности фактического ожидания (т.е. по моментам их поступления), либо по
продолжительности остающегося в их распоряжении времени ожидания (или
пребывания). Некоторые частные случаи:
неупорядоченность - с равными вероятностями на обслуживание
поступает любое из ожидающих требований;
строгая очередность - требования назначаются к обслуживанию
в порядке их поступления;
обратная очередность - первым начинает обслуживаться то из
требований, которое поступает последним (разбор груды ящиков, складываемых друг
на друга).
Таким образом, основными шагами процесса обслуживания
однородного потока являются:
выбор свободного прибора;
задание времени обслуживания.
Для системы с отказом 1) и 2) исчерпывают весь процесс
обслуживания. Если рассматриваются системы массового обслуживания с ожиданием,
то должны быть дополнительно заданы правила:
образования очереди;
назначения очередного требования.
2.7 Технические требования
2.7.1 Общие требования
Выбор технического обеспечения обуславливается следующими
основными параметрами:
производительность. Комплекс технических средств должен
удовлетворять требованиям, предъявляемым программным обеспечением;
стоимость. Выбор компьютерной техники осуществляется из
расчета экономической эффективности и уменьшения затрат на техническое
обеспечение для разработанного проекта;
качество. Данный параметр является связующим звеном между
производительностью и стоимостью и должен обеспечивать комфортную и
бесперебойную работу комплекса технических средств.
Комплекс технических средств должен быть построен на базе
ПЭВМ IBM PC или совместимых с ней.
В качестве средств программной обработки данных следует
использовать ПЭВМ с процессором типа Intel Celeron (либо Intel Pentium) с тактовой частотой не
менее 500 МГц.
В качестве запоминающего устройства, в котором реализуются
преобразования данных и программное управление процессами, должна
использоваться оперативная память. Ее объем должен позволять использовать
базовую операционную систему, допускающую реализацию прикладных программ, и
составлять, как минимум, 64 Мбайт.
В качестве устройства для подготовки и ввода данных
необходима клавиатура (клавишное устройство). С ее помощью осуществляется ввод
команд пользователя, обеспечивающих доступ к ресурсам ПЭВМ; ввод и
корректировка данных; ввод команд в процессе диалога человека с ПЭВМ. Для
облегчения общения с машиной рекомендуется наличие манипулятора - мыши.
Для отображения информации, выводимой во время работы,
необходим монитор с разрешающей способностью не менее 1024x768 и поддержкой
отображения 16,5 млн. цветовых оттенков.
2.7.2 Центральный процессор
Центральный процессор должен обеспечивать удовлетворительную
работу операционной системы Windows 98/2000/XP, среды разработки проекта (AutoCAD)
и самого проекта. В связи с этим для разрабатываемой системы рекомендуется
использовать процессор Pentium IV, обладающий достаточной производительностью, надежностью,
низкой стоимостью и низким энергопотреблением. В сравнении с процессором CeleronTM1.7 ГГц обладает большей кэш-памятью.
Надежность процессора Intel Pentium
обеспечивается более чем многолетним опытом корпорации Intel по созданию
микропроцессоров высочайшего качества и надежности.
2.7.3 Материнская плата
Материнская плата должна поддерживать выбранный процессор и
иметь слот S-478 под процессор. Исходя из этого, сравним две материнские платы.
Первая из них: MSI S-6580 845PE Neo Socket
478 i845PE AGP 2DDR Audio ATA100 USB2.0 ATX Retail. Вторая: Asus P4P800 VM, чипсет Intel 865G, Socket
478, FSB 800MHz (HT), ATA133 + SATA, 4xDDR3200, SVGA, AGP 8x, 6ch. AC'97, LAN,
ATX.
Основой материнской платы MS-6580 845PE Neo послужил набор
системной логики Intel 845PE. Вследствие наличия
процессорного разъема Socket 478 эта модель материнской платы позволяет
использовать процессоры Intel Celeron и Intel Pentium 4. Слот AGP 4x,
оборудованный удобным фиксатором, дает возможность устанавливать 1,5-вольтовые
графические платы расширения с интерфейсом AGP 4x. Плата MSI S-6580 поддерживает работу
четырёх портов USB 2.0, для чего используются возможности интегрированного в
микросхеме контроллера-концентратора ввода-вывода USB-контроллера. В качестве
звукового кодека использована микросхема Realtek ALC650, поддерживающая два
выходных стереоканала. Для установки плат расширения предусмотрено шесть
32-битных слотов PCI 2.2 и один CNR-слот.
После всего оговоренного
остановимся в своем выборе на материнской плате Asus P4P800 VM. Она организована на
базе чипсета Intel 845E. В этом чипсете использован новый
контроллер-концентратор ввода-вывода (I/O Controller Hub) 82801DB (ICH 4),
который, помимо всех функциональных возможностей своего предшественника ICH 2,
поддерживает новые спецификации популярных интерфейсов (главное новшество - поддержка
шести портов USB 2.0).
Все ведущие
производители материнских плат поспешили представить новые модели своих
продуктов, построенные на базе чипсетов, поддерживающих высокоскоростную
системную шину процессора Intel Pentium 4.
2.7.4 Оперативная память
Оперативное запоминающее устройство (ОЗУ). Для
общесистемного программного обеспечения необходимо ОЗУ с размером 64 Мбайт. Учитывая
то, что данный вид памяти уже не производится, и то, что при увеличении объема
ОЗУ в два раза, почти на столько же увеличивается производительность
персонального компьютера, выбираем Kingston Technology 128MB Module (DDR DIMM 128 Mb;
168 pin; PC 2700МHz), согласно
техническим характеристикам материнской платы Asus P4P800 VM.
Можно сравнить выбранную с подобной ей - Viking Components 128MB Module. Однако последняя, согласно
рейтингу, менее популярна и менее надежна. В технологии фирмы Kingston
традиционно используется позолота ножек микросхем. Это значительно повышает
надежность работы изделий данной фирмы, так как отсутствует окисление и
пропадание контакта.
DDR - Double Data Rate SDRAM - память с удвоенной скоростью
обмена данными. Другое обозначение этого типа памяти - SDRAM II (т.е. SDRAM
второго поколения). По принципам работы она похожа на SDRAM, но, в отличие от
нее, может принимать и передавать данные на обоих фронтах тактовых импульсов. Это
удваивает скорость передачи данных. Кроме того, в DDR RAM используется протокол
DLL (Delay Locked Loop), позволяющий сдвинуть во времени интервал
действительного значения выходных данных. Таким образом, сокращаются простои
системной шины при считывании данных на нее из нескольких модулей памяти.
2.7.5 Видеоадаптер
Типовой размер видеопамяти для современных компьютеров
зависит от назначения компьютера.
По современным параметрам видеокарта должна обеспечивать
частоту обновления экрана не менее 75 МГц.
Для более эффективной работы всего программного обеспечения
выбираем видеокарту A97 Radeon
9500 Pro, обладающую большой надежностью и большим объемом памяти.
2.7.6 Монитор
Если на других компонентах компьютера мы можем как-то
сэкономить, то на мониторе экономить не следует. Он по-прежнему самый дорогой
компонент компьютерной системы, его нельзя модернизировать в процессе
эксплуатации, и "время жизни" у него наибольшее по сравнению со всеми
другими компонентами.
Именно посредством монитора мы воспринимаем всю визуальную
информацию от компьютера. Неважно, работаем ли мы с офисной программой, рисуем,
играем, пишем письма или находимся в Интернете - монитор нам необходим всегда. Кроме
того, от качества и безопасности монитора напрямую зависит наше здоровье.
Для работы рекомендуется использовать мониторы ЭЛТ (электронно-лучевая
трубка) с диагональю не менее 17".
На сегодняшний день мониторы ЭЛТ имеют следующие
преимущества:
текст выглядит лучше (особенно при малом размере точек);
цвета натуральнее и точнее;
отлаженная технология обеспечивает лучшее соотношение
стоимости и эксплуатационных качеств.
Следовательно, такие мониторы можно рекомендовать для
универсального применения и домашнего использования.
Рассмотрим два типа мониторов фирмы LG
и фирмы Samsung.
Монитор Samsung имеет большее максимальное
разрешение экрана и большую полосу пропускания видео сигнала.
Окончательно для вывода алфавитно-цифровой и графической
информации на экран выбираем монитор Samsung 757DFX, с разрешающей способностью 1024х768, точкой растра 0,20 мкм,
диагональю 17” и поддерживающий стандарт безопасности ТСО’99.
2.7.7 Жесткий диск
В настоящее время минимальным объемом памяти на жестком
диске считается 20 Гб.
Рассмотрим для примера два жестких диска: IC35L036UCD210 (фирма IBM)
и IC25N020ATMR04
(фирма Hitachi из серии Travelstar
80 GN).
Объем диска. Первым и главным параметром любого винчестера
является, конечно же, количество информации, который способен хранить ваш
винчестер. Еще недавно эта емкость измерялась в мегабайтах, однако реальная
величина сегодня составляет до сотни гигабайт! Надо сказать, что разница в цене
между винчестерами на порядок меньше их разницы в объеме - переплатив всего
лишь 30%, вы можете приобрести винчестер вдвое большей емкости. Тем не менее,
для нашего проекта большая емкость будет излишняя. Поэтому делаем выбор в
пользу накопителя IC25N020ATMR04.
Скорость чтения данных и спецификация. Как ни странно, на
этот параметр редко обращают внимание при покупке - считая, что скорости у
любого современного винчестера большой емкости практически одинаковы. Однако на
деле разница доходит до 20%, что, согласитесь, не так уж и мало. Средний
сегодняшний показатель - около 10-15 Мбайт/с. В нашем выбранном варианте это
будет составлять - 32,5 Мбайт/с.
Среднее время доступа. Тоже достаточно важный показатель. Измеряется
в миллисекундах и обозначает то время, которое необходимо диску для доступа к
любому выбранному вами участку. Средний показатель - 7-9 мс. В нашем выбранном
варианте это будет составлять - 12 мс.
Скорость вращения диска. Показатель, напрямую связанный со
скоростью доступа и скоростью чтения данных. Принято считать, что покупать
сегодня винчестеры со скоростью вращения меньше 5400 об/мин просто не имеет
смысла, 7200 об/мин - сегодняшний стандарт, ну а 10 000 об/мин (планка, впервые
взятая IBM) - это просто идеал! Существует, правда, и
другая точка зрения. Некоторые специалисты утверждают, что чрезмерные скорости
вращения диска на самом деле не сли
надежность хранения информации и срок службы винчестера влияют куда более
ощутимо...
Иными словами, чем выше скорость вращения шпинделя
дисковода, тем больше его производительность (скорость записи и считывания
данных), но выше цена и сильней нагрев.
Выбранный нами НЖМД имеет скорость вращения шпинделя 4200
оборотов в минуту, что будет вполне достаточно для разработки и использования
нашего проекта.
Размер кэш-памяти. Кэш-память - быстрая "буферная"
память небольшого объема, в которую компьютер помещает наиболее часто
используемые данные. Она есть у процессоров, она есть у материнских плат. Но
ведь собственной кэш-памятью оборудован и жесткий диск! Ее размер у современных
моделей винчестеров колеблется в диапазоне от 2 Мбайт до 8 Мбайт (у большинства
современных винчестеров размер кэш-памяти составляет 2 Мбайт). Нетрудно понять,
что чем кэш больше, тем быстрее и стабильнее работает жесткий диск...
Принимаем жесткий диск IC25N020ATMR04 емкостью 20 Гб, с частотой
вращения 4200об/мин, средним временем поиска 12 мс. Эти значения являются
следствием разумного компромисса между производительностью и стоимостью.
2.7.8 Клавиатура
Особых требований к клавиатуре нет, выбираем стандартную
клавиатуру со 101 клавишей с разъёмом PS/2 (Genius Comfy KB-10X).
2.7.9 Мышь
Мышь - это манипулятор для компьютера. Выбираем мышь по
параметрам цены и качества, которым соответствуют мыши Genius NetScroll+PS/2.
3. Практическая часть
3.1 Выбор среды разработки программирования
В качестве внутреннего языка для данной работы был выбран
ObjectPascal, который используется в среде программирования Delphi. Этот язык
использует принципы объектно-ориентированного и визуального программирования.
Язык ObjectPascal
является одним из высокоразвитых языков объектно-ориентированного
программирования. И среди других, например, таких как Visual Basic или Visual C++, отличается простотой
программного кода, достаточным количеством литературы по этому языку.
Объектно-ориентированное программирование (ООП) - это
методика разработки программ, в основе которой лежит понятие объект. Объект - это
некоторая структура, соответствующая объекту реального мира, его поведению. Задача,
решаемая с использованием методики ООП, описывается в терминах объектов и
операций над ними, а программа при таком подходе представляет собой набор
объектов и связей между ними.
По сравнению с традиционными способами программирования ООП
обладает рядом преимуществ. Главное из них заключается в том, что эта концепция
в наибольшей степени соответствует внутренней логике функционирования
операционной системы (ОС) Windows. Программа, состоящая из отдельных объектов,
отлично приспособлена к реагированию на события, происходящие в ОС. К другим
преимуществам ООП можно отнести большую надежность кода и возможность
повторного использования отработанных объектов.
Delphi - это комбинация нескольких важнейших технологий:
Высокопроизводительный компилятор в машинный код
Объектно-ориентированная модель компонент
Визуальное (а, следовательно, и скоростное) построение
приложений из программных прототипов
Масштабируемые средства для построения баз данных
Программирование в Delphi строится на тесном взаимодействии
двух процессов:
•процесса конструирования визуального проявления программы
(т.е. ее Windows-окна),
•процесса написания кода, придающего элементам этого окна и
программе в целом необходимую функциональность.
Основные преимущества среды программирования Delphi:
Простота языка позволяет быстро его освоить и создавать
сложные программы;
Развитые средства представления структур данных обеспечивают
удобство работы, как с числовой, так и с символьной и битовой информацией;
Объектно-ориентированное программирование (ООП) в визуальной
среде.
В процессе построения приложения разработчик выбирает из
палитры компонент готовые компоненты как художник, делающий крупные мазки
кистью. Еще до компиляции он видит результаты своей работы - после подключения
к источнику данных их можно видеть отображенными на форме, можно перемещаться
по данным, представлять их в том или ином виде. В этом смысле проектирование в
Delphi мало чем отличается от проектирования в интерпретирующей среде, однако
после выполнения компиляции мы получаем код, который исполняется в 10-20 раз
быстрее, чем то же самое, сделанное при помощи интерпретатора. Кроме того,
компилятор компилятору рознь, в Delphi компиляция производится непосредственно
в родной машинный код, в то время как существуют компиляторы, превращающие
программу в так называемый p-код, который затем интерпретируется виртуальной
p-машиной. Это не может не сказаться на фактическом быстродействии готового
приложения.
Основной упор этой модели в Delphi делается на максимальном
реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро
из заранее подготовленных объектов, а также дает им возможность создавать свои
собственные объекты для среды Delphi. Никаких ограничений по типам объектов,
которые могут создавать разработчики, не существует.
3.2 Выбор алгоритма решения
Алгоритм моделирования выглядит так:
Устанавливаем начальное время моделирования равное нулю. Счетчики
очереди, количества обслуженных, необслуженных и неполностью обслуженных
клиентов, равными нулю.
Формируем динамический массив с процедурами, где имеется
состояние каждой процедуры, время обслуживания каждой процедуры (выбирается
случайно из промежутка времени процедуры), количество обслуженных клиентов по
каждой процедуре, время занятости, время простоя. Все данные, кроме времени
обслуживания устанавливаются равными нулю.
Формируем время появления первого клиента, для этого
случайным образом выбираем момент времени из интервала периодичности клиента и
прибавляем к времени начала работы. И формируем динамический массив, куда
заносим информацию по всем клиентам (время появления, количество процедур,
время по каждой процедуре, номер выполнения текущей процедуры, количество
прошедших процедур, состояние, время ожидания в очереди, конечное состояние). Заносим
в этот массив первого клиента.
Проверяем, не закончилось ли время моделирования (можно
предусмотреть остановку в любой момент по нажатии кнопки "стоп"). Если
текущее время становится больше заданного времени моделирования, то закончить
работу и вывести отчет по результатам моделирования.
Проверяем, не наступило ли время появления первого клиента. Если
нет, значит увеличиваем время простоя всех процедур на единицу, если же клиент
не первый смотрится по состоянию процедур и клиентов.
Если наступило время появления последнего клиента, значит,
выполняем начало работы.
Смотрим по номеру первой процедуры клиента, свободна она или
нет. Если нет, значит смотрим следующую процедуру клиента. Если все процедуры
заняты, значит увеличиваем счетчик очереди на единицу, в массив клиентов ко
времени ожидания клиента прибавляем единицу.
При этом формируем массив с клиентами, поступившими в
очередь. Там содержится информация: время попадания в очередь, номер клиента в
массиве с клиентами, информация по процедурам.
Если какая-то процедура клиента свободна, состояние ее
приравниваем 1 (означает, что процедура занята). В массив у клиента заносим
номер текущей процедуры.
Затем проверяем по массиву клиентов информацию по каждому
клиенту. Если у клиента стоит номер текущей процедуры, значит в ячейке, где
стоит время данной процедуры у клиента, отнимаем единицу. А у процедуры
прибавляем единицу к времени занятости. Смотрим, если у клиента время
прохождения процедуры закончилось, состояние процедуры приравниваем к нулю
("Свободна"). К числу обслуженных клиентов в массиве процедуры
прибавляем единицу. А у клиента прибавляем количество прошедших процедур и
переходим к пункту 6, т.е. опять начало работы. Если все процедуры пройдены,
конечное состояние приравниваем 1 (полностью обслужился).
Если у клиента нет номера текущей процедуры и все остальные
процедуры заняты, увеличиваем счетчик длины очереди на единицу, а у клиента
прибавляем время ожидания на единицу. Смотрим, не превысило ли время ожидания
максимального. Если да, смотрим, если ни одной процедуры не пройдено, конечное
состояние приравниваем 3 (полностью необслуженные); если хоть одна процедура
пройдена, конечное состояние приравниваем 2 (не полностью обслуженные).
Затем проверяем по процедурам, если какая-то освободилась,
смотрим, нет ли клиентов для данной процедуры в массиве процедур. Если есть,
выбираем всех клиентов по данной процедуре, и выбираем того, у кого меньшее
время попадания, т.е. тот, кто раньше попал в очередь; у процедуры состояние
приравниваем 1.
Смотрим массив процедур. Те процедуры, у которых состояние равно
нулю, время простоя увеличиваем на единицу.
Увеличиваем время на 1 и переходим к п.3. Только если длина
очереди равна максимальной длине очереди, значит клиента сразу заносим в число
полностью не обслуженных.
3.3 Структура программы
Модуль "Unit2" проекта служит показательной формой
при загрузке имитационной модели СМО. Модуль "Unit1" является главным
в работе всей программы. Модуль "Unit3" предназначен для вывода
справки об авторе.
В программе используются процедуры и функции, которые
написаны для удобства работы и понимания программы.
procedure Klientov - Формирование новых клиентов;
procedure FormCreate (Sender: TObject) - Начальные установки
при открытии формы;
procedure Timer1Timer (Sender: TObject) - Процедура
моделирования;
procedure Button1Click (Sender: TObject) - Кнопка "Пуск";
procedure FormCanResize (Sender: TObject; var
NewWidth, NewHeight: Integer; var Resize: Boolean) - Процедура изменения
размеров формы;
procedure FormClose (Sender: TObject; var
Action: TCloseAction) -Закрытие формы;
procedure BitBtn1Click (Sender: TObject) - Кнопка "Выход";
procedure Button2Click (Sender: TObject) - Кнопка "Остановить";
procedure Edit3Change (Sender: TObject) - Проверка
на ошибки основных параметров;
procedure Edit3KeyUp (Sender: TObject; var
Key: Word;
Shift: TShiftState) - Проверка на ошибки основных параметров;
procedure Edit8Change (Sender:
TObject) - Проверка на ошибки основных параметров;
procedure Edit8KeyPress (Sender:
TObject; var Key: Char) - Проверка на ошибки основных
параметров;
procedure Edit2KeyPress (Sender: TObject; var
Key: Char) - Проверка на ошибки основных параметров;
procedure Edit3KeyPress (Sender: TObject; var
Key: Char) - Проверка на ошибки основных параметров;
procedure Edit4KeyPress (Sender: TObject; var
Key: Char) - Проверка на ошибки основных параметров;
procedure Edit9KeyPress (Sender: TObject; var
Key: Char) - Проверка на ошибки основных параметров;
procedure Edit5KeyPress (Sender: TObject; var
Key: Char) - Проверка на ошибки основных параметров;
procedure Edit1KeyPress (Sender: TObject; var
Key: Char) - Проверка на ошибки основных параметров;
procedure SpinEdit1Change (Sender: TObject)
- Проверка на ошибки основных параметров;
procedure Edit2Change (Sender: TObject) - Проверка
на ошибки основных параметров;
procedure Edit4Change (Sender: TObject) - Проверка
на ошибки основных параметров;
procedure Edit9Change (Sender: TObject) - Проверка
на ошибки основных параметров;
procedure Edit5Change (Sender: TObject) - Проверка
на ошибки основных параметров;
procedure N10Click (Sender: TObject) - Выбор
вкладки главного меню "Запуск";
procedure N11Click (Sender: TObject- Выбор
вкладки главного меню "Остановить";
procedure r1KeyPress (Sender: TObject; var
Key: Char) - Проверка на ошибки основных параметров;
procedure N2Click (Sender: TObject) - Выбор
вкладки главного меню "Сохранить отчет";
procedure N1Click (Sender: TObject) - Выбор
вкладки главного меню "Файл";
procedure N3Click (Sender: TObject) - Выбор
вкладки главного меню "Начальные параметры";
procedure N4Click (Sender:
TObject) - Выбор вкладки главного меню "Результаты";
procedure N5Click (Sender: TObject) - Выбор
вкладки главного меню "Выход";
procedure N12Click (Sender:
TObject) - Выбор вкладки главного меню "Очистить
параметры";
procedure N13Click (Sender: TObject) - Выбор
вкладки главного меню "Показать отчет";
procedure ToolButton1Click (Sender:
TObject) - Нажатие на панели инструментов кнопки "Сохранить
отчет";
procedure ToolButton2Click (Sender:
TObject) - Нажатие на панели инструментов кнопки "Запуск
";
procedureToolButton4Click (Sender: TObject)
- Нажатие на панели инструментов кнопки "Очистить параметры ";
procedure ToolButton3Click (Sender:
TObject) - Нажатие на панели инструментов кнопки "Справка
";
procedure ToolButton5Click (Sender:
TObject) - Нажатие на панели инструментов кнопки "Остановить
";
procedure N6Click (Sender: TObject) - Выбор
вкладки главного меню "Моделирование";
procedure BitBtn1Click (Sender: TObject);
procedure N8Click (Sender: TObject) - Выбор
вкладки главного меню "О программе";
procedure N9Click (Sender:
TObject) - Выбор вкладки главного меню "Помощь";
Ниже приведены глобальные переменные, используемые в
программе.
i: integer; // минуты {общее время}
min: integer; // минуты {время моделирования}
chas: integer; // часы
vr_mod: integer; // время моделирования
klienty: array of array of integer; // массив
с клиентами
proced: array of array of integer; // массив
процедур
nom_pr: array of integer;
klient: integer;
// кол-во клиентов
kol_proced: integer; // кол-во процедур
vremya: integer; // время появления каждого клиента
dlina: integer; // длина очереди
obsl: integer; // число обслуженных клиентов
nepol_obsl: integer; // число не полностью обслуженных
клиентов
neobsl: integer; // число необслуженных клиентов
proced_kl: integer; // кол-во процедур у каждого клиента
f,j,h,k: integer;
vr_pr: integer;
dopol_och, ochered: array of array of
integer; // массив очереди
och_pr: array of array of integer;
maxim, max: integer; // максимальная длина очереди
stop,pusk, dl,x: integer; // счетчики
y,dlina_och2, est,c,q, t,l,null: integer;
// счетчики
сlient, minim,pr, b: integer;
s_r, s: string;
na_obsl: integer; // клиенты на обслуживании
dlina_och: integer; // длина очереди
eff_rab: real; // эффективность работы процедуры
proiz_rab: real; // Производительность работы
obch_eff: real; // эффективность работы системы
3.4 Результаты экспериментов
В данном проекте были проведены статистические исследования,
чтобы проверить, как работает данная система при разных настройках. Результаты
данного исследования приведены в таблице 3.1
Таблица 3.1 - Результаты статистического исследования
№
Экс-пери-мента
Число необслу-женных
клиентов
Общая эффекти-вность
работы системы,%
По полученным данным можно сказать, что при увеличении числа
аппаратов общая эффективность работы возрастает, а производительность системы
при этом падает. Из всех экспериментов лучшим результатом по эффективности
работы был при времени моделирования 3 часа, с количеством аппаратов - 3 (т.е. минимальное
число аппаратов). Эффективность при этом была равна 71, 66%.
А по производительности лучший результат при времени
моделирования 9 часов, с количеством аппаратов 6 (т. е максимальное число
аппаратов).
3.5 Руководство пользователю
Для запуска программы необходимо открыть исполняемый файл
"SMO. exe". При этом
появится заставка программы (Рисунок 3.1). Если вы желаете начать работу
необходимо нажать кнопку "Старт", если вы желаете выйти выберите
"Выход".
Рисунок 3.1 - Заставка программы
При нажатии на кнопке "Старт" появляется главное
окно программы.
В начале работы активизируется вкладка "Начальные
параметры". Здесь пользователь может задать свои параметры системы, такие
как время моделирования, время ожидания в очереди, количество процедур,
периодичность прихода клиентов, время процедуры, максимальная длина очереди,
количество процедур для клиента (Рисунок 3.2). На вкладке также имеются кнопки
"Пуск", "Остановить", "Выход", которые
соответственно позволяют начать процесс моделирования, остановить его и
завершить работу.
Рисунок 3.2 - Вкладка "Начальные параметры"
При запуске процесса моделирования на вкладке "Результаты"
отображаются данные по текущему состоянию каждой процедуры, а также в виде
диаграммы представляется эффективность работы каждой из них (Рисунок 3.3).
Рисунок 3.3 - Вкладка "Результаты"
При остановке работы или после окончания процесса
моделирования появляется отчет о проделанной работе. Его можно увидеть, если
выбрать вкладку "Отчет" в главном окне программы (Рисунок 3.4). В нем
указывается вся общая информация, информация по всем процедурам (Число
обслуженных клиентов, время занятости, время простоя, эффективность работы). Если
есть необходимость отчет можно сохранить в текстовом файле.
Рисунок 3.4 - Вкладка "Отчет"
Разработка меню. Меню проекта располагается в верхней строке
экрана. Своим присутствием оно создает значительные удобства пользователям для
работы с программой. После открытия проекта пользователь может выбирать нужные
команды.
В меню программы имеются вкладки: "Файл", "Моделирование",
"Справка".
В вкладке меню "Файл" находятся команды: "Сохранить
отчет", "Начальные параметры", "Результаты", "Показать
отчет", "Выход" (Рисунок 3.5).
Рисунок 3.5 - Вкладка главного меню "Файл"
Команда "Сохранить" необходима для сохранения
отчета о проделанной работе после окончания процесса моделирования.
Команда "Начальные параметры" позволяет открывать
вкладку "Начальные параметры" для изменения настроек системы.
Команда "Результат" позволяет открывать вкладку
"Результаты" для наблюдения текущего состояния каждой процедуры.
Команда "Показать отчет" позволяет открывать
вкладку "Отчет".
В вкладке меню "Моделирование" находятся команды:
"Запустить", "Остановить", "Очистить параметры" (Рисунок
3.6).
Рисунок 3.6 - Вкладка "Моделирование" главного
меню
Команда "Запустить" необходима для запуска
процесса моделирования.
Команда "Остановить" позволяет остановить процесс
моделирования.
Команда "Очистить параметры" позволяет очистить
все начальные параметры системы и удаляет результаты предыдущего моделирования.
Во вкладке меню "Справка" находятся команды:
"О программе", "Помощь" (Рисунок 3.7).
Рисунок 3.7 - Вкладка "Справка" главного меню
Команда "О программе" позволяет посмотреть
информацию о программе и авторе программы (Рисунок 3.8).
Рисунок 3.8 - Вызов справки о программе
Команда "Помощь" позволяет ознакомиться с общим
руководством по работе данной системы (Рисунок 3.9).
Рисунок 3.9 - Вызов общей справки по системе
Панель инструментов. С помощью панели инструментов можно
быстро сохранить отчет, начать процесс моделирования, остановить процесс
моделирования, очистить начальные параметры, а также посмотреть общую справку
по системе (Рисунок 3.10).
Рисунок 3.10 - Панель инструментов
Заключение
Разработанная в ходе выполнения курсового проекта
имитационная модель системы массового обслуживания "Поликлиника" является
актуальной на сегодняшний день, так как предоставляет большие возможности для
анализа работы системы и принятия решений в различных ситуациях на практике.
Моделируя реальные процессы, пользователь может проследить,
как изменяется эффективность работы системы. А затем, может сделать выводы о
том, при каких установках система будет работать максимально производительно, сколько
следует установить аппаратов, чтобы время простоя аппарата было минимально, а
время занятости максимальным.
В ходе разработки данного проекта были приобретены
практические навыки системного исследования реальной динамической сложной
системы на основе построения ее имитационной модели.
Также были решены задачи, поставленные в начале работы. Мной
были разработаны собственные алгоритмы для решения этих задач. Разработанная
программа устойчиво выполняет все свои функции, но теперь стоит задача сделать
ее более совершенной и более расширенной.
Список используемой литературы
1.
Лифшиц А.Л. Статистическое моделирование СМО, М., 1978.
2.
Советов Б.А., Яковлев С.А. Моделирование систем, М: Высшая школа, 1985.
3.
Пригодин Н.В. Системный подход в моделировании М., 1986.
4.
А.Я. Архангельский. Программирование в Delphi 7.
5.
Электронный учебник по курсу "Прикладная теория систем"
6.
Методическое обеспечение по курсу "Прикладная теория систем"