Добавлен: 03.07.2023
Просмотров: 50
Скачиваний: 2
Существуют следующие типы узлов:
- Узел AG - постоянный генератор транзактов
- Узел SERV - обслуживающий многоканальный прибор с абсолютными приоритетами.
- Узел QUEUE - очередь с относительными приоритетами.
- Узел TERM - безусловный терминатор транзактов.
- Узел KEY - клапан на пути транзактов.
- Узел DELET - управляемый терминатор транзактов (демультипликатор).
- Узлы SEND и DIRECT - операции с бухгалтерскими счетами.
Для данной задачи получен следующий граф (рис.1).
Рис.1. Граф модели
Описание модели
В модели имеются транзакты двух типов:
- бухгалтерские документы;
- неполадки в работе компьютера.
Транзакты-документы создаются генератором 5. Они попадают в очередь 1 (имитация документов, лежащих на столе в ожидании обработки) и далее в сервер 2, имитирующий компьютер бухгалтера. Из сервера транзакты - документы переходят в терминатор 3, имитирующий папку, куда подшиваются документы. Транзакты-неполадки создаются генератором 6. Они также проходят по узлам 1 и 2 и попадают в терминатор 4, имитирующий журнал учета неполадок.
Обслуживание транзакта-документа состоит во вводе информации в компьютер и требует времени “t ввода”. Обслуживание транзакта-неполадки состоит в ее устранении и требует времени “t ремонта”. Таким образом, сервер, моделирующий компьютер, будет менять время обслуживания транзакта в зависимости от типа пришедшего транзакта.
Различать транзакты будем по их приоритетам, которые зададим при описании соответствующих генераторов. Транзакты-неполадки будут иметь более высокий приоритет - 1, а транзакты-документы - 0. Приоритет будет использоваться также для того, чтобы заблокировать обработку документов на время ремонта компьютера. Для этого зададим в параметрах сервера и очереди к нему флажки учитывания приоритетов транзактов (значения “abs” и ”prty”). Тогда очередь будет ставить транзакты-неполадки впереди транзактов-документов, а сервер будет работать в режиме прерывания обслуживания менее приоритетных транзактов.
Если в сервере находится транзакт-документ (то есть происходит ввод информации), и в это время появляется транзакт-неполадка, она автоматически становится первой в очереди. Сервер “видит” в начале очереди более приоритетный транзакт и вытесняет транзакт-документ в специальный стек (ввод информации прекращается по причине сбоя в работе компьютера). Транзакт-неполадка занимает сервер (начинается процесс устранения неполадки) и находится там до истечения заданного времени ремонта. После этого продолжается обслуживание вытесненного транзакта-документа (ввод оставшейся информации по прерванному документу).
Если мы зададим учет приоритетов транзактов только для очереди, то сервер не будет работать в режиме прерывания обслуживания транзактов, что соответствует условию “компьютер никогда не ломается во время обработки документа”. Такая конфигурация узлов подходит, например, для моделирования работы продавца, который обслуживает некоторую категорию покупателей вне очереди, но не бросает обслуживание текущего покупателя при появлении “ более приоритетного”.
Разберем выбор законов распределения случайных параметров модели - интервалов работы генераторов и времен обслуживания сервера. В таблице заданы средние значения этих параметров, а реальные значения для каждого нового транзакта будут иметь некоторый разброс около этих средних.
Интервал работы генератора транзактов-документов имеет нормальный закон распределения (norm). Мы исходим из того, что случайные значения промежутка времени между приходами курьера группируются около известного среднего. Если бы в условии было сказано, что бухгалтерию обслуживают несколько курьеров, то каждый из них имел бы свой собственный график посещений бухгалтерии со случайными (совершенно неизвестными нам) промежутками между приходами. В этом случае, на основании теоремы о суперпозиции случайных потоков событий (в нашем случае - приходов курьера), интервал генератора транзактов-документов имел бы экспоненциальный закон распределения (expo). Время обслуживания сервером транзакта-документа (время ввода информации в компьютер) имеет нормальный закон распределения. Мы исходим из того, что поступающие на обработку документы имеют один и тот же тип, и отклонение во времени ввода информации связано только с тем, что бухгалтер-оператор не может работать так же точно, как автомат.
Интервал генератора транзактов - неполадок имеет экспоненциальный закон распределения. Компьютер имеет очень большое число деталей, каждая из которых имеет свой срок наработки на отказ (интервал между выходами из строя). Время обслуживания транзакта-неполадки распределено по равномерному закону (unif) в пределах от 0.5 часа до 1.5 часа. Мы считаем, что устранение неисправности может с равной вероятностью занять любой промежуток времени от получаса до полутора часов.
Перед тем, как очередной транзакт войдет в сервер, должны быть соответствующим образом настроены параметры сервера. Это делается с помощью условного оператора “if” и операторов присваивания. В описании сервера его меняющие значение параметры заданы с помощью переменных пользователя. Вид закона распределения времени обслуживания (Dist) и номер терминатора, в который должен перейти транзакт после выхода из сервера (Forw) имеют целый тип (int). Математическое ожидание (среднее) времени обслуживания (Tobs) и среднеквадратическое отклонение (Pogr) являются переменными с плавающей точкой (float). Для равномерного закона вместо матожидания задается середина допустимого интервала значений, а вместо отклонения - ширина этого интервала. Для нормального закона среднеквадратическое отклонение можно всегда задавать как одну треть от матожидания. Для экспоненциального закона отклонение всегда равно матожиданию, поэтому в моделях можно писать вместо него константу “zero”, а ПИЛИГРИМ сам подставит нужное значение.
Условие, проверяемое при настройке параметров, есть равенство приоритета транзакта (t->pr) единице, что соответствует приходу транзакта-неполадки. По первой ветке параметры сервера настраиваются на обработку транзакта-неполадки, а по второй - документа.
Исходный текст программной модели
#include <pilgrim.h>
int Forw; /* Номер следующего узла */
int Dist; /* Закон распределения времени обслуживания */
float Tobs; /* Среднее время обслуживания */
float Pogr; /* Среднеквадратическое отклонение */
/* Время измеряется в часах */
forward
{
modbeg(“Компьютер”, 6, 1200.0, (long)time(NULL), none, 1, none, 3, 2);
ag(“Бухгалтерия”, 5, none, expo, 0.1, 0.1/3, zero, 1);
ag(“Неисправности”, 6, 1, expo, 24.0, zero, zero, 1);
network(dummy, dummy)
{
top(1): queue(“Столик-очередь”, prty, 2);
place;
top(2): if (t->pr == 1) /* Неполадка */
{
Forw=4;
Dist=unif;
Tobs=1.0;
Pogr=0.5;
}
else /* Документ */
{
Forw=3;
Dist=norm;
Tobs=0.08;
Pogr=0.08/3;
}
serv(“АРМ бухгалтерии”, 1, abs, norm, Tobs, Pogr, zero, Forw);
place;
top(3): term(“Архивные папки”);
place;
top(4): term(“Неиспр. устр-на”);
place;
fault(123);
}
modend(“pilgrim.rep”, 1, 12, page);
return 0;
}
4. Анализ полученных результатов
На рисунке 2 приведены результаты моделирования.
Рис.2. Результаты моделирования
В таблице результатов прогона модели мы видим статистические данные о работе бухгалтера за период, равный 1200 часов. За это время средняя загрузка бухгалтера составила почти 90 % (загрузка узла 2), что довольно много. Среднее время ожидания документом обработки составило примерно 0.4 часа (М [t] узла 1), что также довольно много. Это происходит потому, что интервал поступления документов почти совпадает с временем их обработки. При этом из-за отклонений в значениях времен образуются очереди. По значению квадрата коэффициента вариации (вариация узла 1) можно сказать, что это время имело разброс значений, чуть больший, чем матожидание (корень из к-та вариации чуть больше 1).
При анализе состояния очередей особое внимание следует обратить на значение квадрата коэффициента вариации времени задержки. Если оно близко к нулю, время задержки не имело существенного разброса, то есть длина очереди была практически постоянной. Если же значение квадрата коэффициента вариации велико, это значит, что транзакты приходили в очередь группами. Средний размер группы равен корню из квадрата коэффициента вариации. В этом случае нужно установить причину образования групп транзактов на входе очереди. Это может быть, например, ключ или многоканальный сервер, стоящий перед очередью.
Всего было обработано 12044 документа (счетчик входов узла 3) и устранено 49 неполадок (счетчик входов узла 4). Один документ остался необработанным (остаток транзактов узла 1). Все возникшие неполадки устранены. Оставшийся в очереди транзакт есть именно документ, а не неполадка, так как всего было сгенерировано 49 транзактов-неполадок (последний, оставшийся в генераторе, не считается), и все они добрались до своего терминатора.
Заключение
Одной из наиболее крупных отраслей развития технологий с применением ЭВМ, является математическое моделирование, которое достаточно просто (в отличие от аналогового моделирования) может быть реализовано на ЭВМ разных модификаций и возможностей. Математическое моделирование тесно связано с имитационным моделированием. Одним из разделов математического моделирования являются модели систем массового обслуживания и их изучение.
В данном курсовом проекте была построена имитационная модель работы бухгалтерии предприятия с использованием программы Piligrim. Результатом данного курсового проекта является имитационная модель работы бухгалтерии. Модель реализована на языке программирования высокого уровня Си++.
Программа является рабочей. Выдает на экран вероятностные и статистические характеристики работы процесса обслуживания посетителей предприятия.
На основании проделанной работы, можно сделать следующие выводы:
1. Математическая модель системы массового обслуживания, созданная нами, адекватна реальному объекту;
2. Проведенные исследования показали эффективность нашей модели и способов «приведения её в действие» при определении необходимых нам параметров по сравнению с ручным способом моделирования и расчетов параметров;
3. Созданная модель имеет достаточную, для таких моделей, степень универсальности, т.к. диапазон входных параметров системы можно легко и быстро изменить.
Список использованной литературы
- Варфоломеев В.И. «Алгоритмическое моделирование элементов экономических систем». - М.: Финансы и статистика, 2000г.
- Емельянов А.А., Власова Е.А. Имитационное моделирование экономических процессов. - М. Московский международный институт эконометрики, информатики, финансов и права. 2002. – 92 с.
- Кеольтон В., Лод А. «Имитационное моделирование. Классика CS» издание 3-е, 2004г.;
- Прицкер А. «Введение в имитационное моделирование»-М.: Мир,1987.-644с.
- Шеннон Р. Имитационное моделирование систем: искусство и наука.«Мир», М.:1978.418 с.