Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Аннотация к работе «Разработка и исследование имитационной



Аннотация к работе «Разработка и исследование имитационной

Модели разветвленной СМО (системы массового обслуживания)

В среде VB5»

Работа посвящена созданию программы, позволяющей моделировать процесс прохождения потока заявок (закон распределения времени между поступлением заявок экспоненциальный или нормальный) по рабочим станциям (одноканальным СМО с неограниченной очередью; закон распределения времен обслуживания экспоненциальный или нормальный; максимальное число рабочих станций 10), с возможностью ветвления, объединения потоков и отбраковки заявок. Программа позволяет на основании результатов моделирования рассчитывать основные характеристики СМО, а также рассчитывать некоторые средние показатели СМО по формулам. Для создания программы выбрана среда программирования Visual Basic 5.

Исследование модели включает проведение с помощью программы ряда экспериментов для различных систем и сравнение результатов, полученных на основании имитационного моделирования, с результатами расчета по формулам. Цель исследования — сделать выводы о возможности применения приближенных формул расчета средних показателей для различных вариантов систем.

 


Содержание.

 

Глава 1 Введение........................................... 6

 

Глава 2 Математическое описание модели................. 11

 

Глава 3 Создание программы............................. 27

 

Глава 4 Исследование модели............................. 46

 

Глава 5 Экономическая часть.............................. 63

 

Глава 6 Охрана труда..................................... 81

 

Глава 7 Заключение........................................ 87

 

Список литературы........................................ 89

 

Приложение


Глава 1

Введение

 

Актуальность разработки и перспективы применения программы

 

В современном мире существенно повысилась доступность компьютерной техники, которая стала применяться в самых различных научных и производственных областях. В связи с этим выросла аудитория потенциальных потребителей компьютерных программ и следовательно увеличилась целесообразность их создания.

Каждому из нас часто приходится сталкиваться с работой своеобразных систем, называемых системами массового обслуживания (СМО). Примерами таких систем могут служить: телефонные станции, ремонтные мастерские, билетные кассы, справочные бюро, банки, магазины, парикмахерские и т. п. Каждая из этих систем состоит из какого-то числа обслуживающих единиц (каналов обслуживания) Такими каналами могут быть: линии связи, рабочие точки, кассиры, продавцы, лифты, автомашины и др.

Всякая СМО предназначена для обслуживания некоторого потока заявок (или «требований»), поступающих в какие-то случайные моменты времени. Обслуживание заявки продолжается некоторое время, после чего канал освобождается и готов к приему следующей заявки. Случайный характер потока заявок и времен обслуживания приводит к тому, что в какие-то периоды времени на входе СМО скапливается излишне большое число заявок (они либо становятся в очередь, либо покидают СМО необслуженными); в другие же периоды СМО будет работать с недогрузкой или вообще простаивать.

Последовательная линейная структура СМО характерна, например, для поточных (автоматических и неавтоматических) линий конвейерного типа. Различие во времени обработки деталей на таких линиях связано, в основном, с процессами «отказа» и «восстановления».

Гибкая производственная система (ГПС) — это система с высокой степенью автоматизации, предназначенная для изготовления деталей различных видов, выпускаемых малыми и средними партиями. Она включает группу станков с числовым программным управлением для автоматической механической обработки, систему загрузки и разгрузки заготовок и конвейерную систему транспортирования заготовок от одной операции до следующей, электронно-вычислительную машину, систему программного обеспечения для руководства и управления всем объемом работ, составляющую математическое обеспечение автоматизированного комплекса.

Если рассматривать структуру гибких производственных систем, то для них время обработки деталей будет существенно различаться, так как в гибких производственных системах появляется возможность обрабатывать разные детали и использовать различные маршруты обработки. ГПС, в отличие от поточных линий, необходимо рассматривать уже не как линейную и последовательную, а как сложную разветвленную структуру. Как в ГПС, так и в поточных линиях необходимо также предусмотреть возможность отбраковки обрабатываемых деталей на различных стадиях обработки.

Данная программа дает возможность смоделировать как линейную, так и разветвленную структуру. Программа может использоваться для оптимизации процесса обслуживания. Смоделировав структуру автоматической линии, гибкой производственной системы или структуру системы обслуживания какого-либо предприятия (или производственного участка), пользователь может с помощью данной программы исследовать эту структуру. Проведя анализ, можно выявить «слабые» места в системе или осознать необходимость введения в нее каких-либо дополнительных элементов. Далее можно, меняя различные параметры в программе, достигать оптимального соотношения простоев и очередей.

Оптимизация процесса обслуживания способна существенно повысить эффективность работы предприятия.

Все вышеперечисленное подтверждает актуальность создания разрабатываемой программы.

 

Постановка задачи (обобщенное описание модели).

 

На вход системы из N станций поступает поток заявок с заданным законом распределения времени прихода (экспоненциальным или нормальным). Задаются параметры распределения, количество станций и связи между ними и число заявок. Также задаются закон распределения времени обслуживания заявок на станциях (экспоненциальный или нормальный), параметры распределения и вероятности отбраковки заявок по станциям. Предусмотрены два варианта расчета показателей — с помощью имитационной модели и по формулам.

1. При имитационном моделировании для каждой станции рассчитываются:

1.1 Среднее время ожидания обслуживания;

1.2 Среднее время простоя станции;

1.3 Максимальная длина очереди;

1.4 Число снятых заявок;

1.5 Коэффициент использования;

1.6 Среднее время нахождения заявки на станции;

1.7 Максимальное время нахождения заявки на станции.

Также выводятся общие показатели системы:

1.8 Общее время прихода N заявок;

1.9 Время выхода последней заявки;

1.10 Общий коэффициент использования системы по времени;

1.11 Общий коэффициент использования системы по числу заявок.

2. При расчете по формулам для каждой станции рассчитываются:

2.1 Среднее время ожидания обслуживания;

2.2 Среднее время простоя станции;

2.3 Средняя число заявок в очереди;

2.4 Среднее время нахождения заявки на станции;

В некоторых случаях расчет по формулам не способен предоставить корректные результаты и интересующие показатели можно рассчитывать только с помощью имитационной модели.

 

Глава 2

Математическое описание модели.

Данный раздел описания базируется на работах Е. С. Вентцель.

 

Схема гибели и размножения

 

         l 01               l 12             l 23        l k-1, k          l k, k+1                           l n-1, n

                             
 


S0

    S1     S2    ...  ... ю     Sk    ...  ...     Sn-1     Sn

         l 10               l 21             l 32        l k, k-1           l k+1, k                           l n, n-1

 

                           

 

l — интенсивность потока; p 0, pk — финальные вероятности состояний

Формулы Литтла

 

            L сист — среднее число заявок в системе;

 

W сист — среднее время пребывания заявки в системе;

 

Wоч L оч                                   L оч — среднее число заявок в очереди;

 

W оч — среднее время пребывания заявки в очереди

m — интенсивность потока обслуживаний; l — интенсивность потока заявок

l / m = r (приведенная интенсивность потока заявок)

r — среднее число заявок, приходящее за среднее время обслуживания одной заявки

рис. 1

Варианты систем массового обслуживания

 

N-канальная СМО с отказами

A — абсолютная пропускная способность (среднее число заявок, обслуживаемых в единицу времени);

Q — относительная пропускная способность (средняя доля пришедших заявок, обслуживаемых системой);

P отк — вероятность того, что заявка покинет СМО необслуженной;

 — среднее число занятых каналов; ;

 

;     ;

 

 ;                       ;

 

;          

 

W оч

 

Глава 3

 

Создание программы

Структура программы

 

Выделим основные составные части проекта: Form1 («Задание связей между рабочими станциями») — форма для создания связей между станциями, FormTabl («Создание матрицы связей») — форма для задания коэффициентов связей, FormMultiMass («Модель многофазной многопоточной системы обслуживания») — форма для ввода входных параметров, FormRes («Результаты моделирования многофазной системы обслуживания») — форма для вывода результатов моделирования, ModStation1 — основной вычислительный модуль.

На Form1 помещены следующие компоненты: Frame — для разделения формы на несколько областей, Line и Shape — для графического отображения связей между станциями, CommandButton — для обозначения станций, реализации процедуры задания связей между станциями и перехода к другим формам.

На FormTabl помещены компоненты: Label — для обозначения названий строк и столбцов матрицы связей, TextBox — для обозначения матрицы связей и ввода коэффициентов, CommandButton — для запуска проверки правильности задания коэффициентов связей и перехода к другим формам.

На FormMultiMass помещены компоненты: Frame — для разделения формы на несколько областей, TextBox — для ввода параметров, Label — для обозначения названия вводимого параметра, OptionButton — для организации выбора типа распределения, ProgressBar — для обозначения прохождения процесса моделирования, CommandButton — для начала ввода параметров, запуска процесса моделирования, перехода к другим формам и выхода из программы.

На FormRes помещены компоненты: SSTab — для разделения формы на две страницы (графиков и числовых результатов), Frame — для разделения страницы числовых результатов на несколько областей, Label — обозначения названия выводимого показателя, PictureBox — для вывода графических результатов моделирования, TextBox — для вывода числовых результатов моделирования, CommandButton — для возвращения к формам, используемым для ввода входных параметров.

 

Алгоритм работы программы

 

Рассмотрим обобщенный алгоритм работы программы, представленный укрупненными блоками, затем более детально рассмотрим реализацию каждого из блоков и приведем описание используемых переменных и функций.

Обобщенный алгоритм работы программы показан на рис. 2:

     


Начало

 


Ввод исходных  данных

             
 


Н              Ввод           Д

                                                                         корректен?

     
 


                                                                                                                                       

              Создание массива переходов                                                Н    Расчет по

                                                                                                                       формулам?

              Переход к первой станции                                                                        Д

         
 


    Создание входного массива на текущей станции

                                                                                                                     Расчет по имита-                    Расчет по

                                                                                                                     ционной модели                      формулам

                                 Нужна  Д

                       сортировка?

     
 


                                          Сортировка                                             Вывод рассчитанных

              Н                                                                                                  показателей

         


Создание выходного массива на текущей станции

                                                                                                                               Н     Продолжать

                                                                                                                                            работу?

                         Н     Последняя                                                      Конец

                                          станция?

        Переход к                                                                                                                      Д

        следующей               Д

          станции                                                      рис. 2


 

Программу можно поделить на две части: имитационная модель системы и расчетно-формульная модель. Для начала функционирования любой модели необходимо задать ряд входных параметров. Пользователь должен выбрать тип распределения времени прихода заявок на первую станцию (экспоненциальное — DistIndex = 0 или нормальное — DistIndex = 1) и тип распределения времени обслуживания заявок по станциям (экспоненциальное — DistIndex1 = 0 или нормальное — DistIndex1 = 1). Выбор осуществляется с помощью связанных пар компонентов OptionButton. Также пользователь задает количество рабочих станций — m (m = 1 — 10), число заявок на входе — n, среднее время между заявками во входном потоке — Ta и, при нормальном распределении на входе, стандартное отклонение (в % от среднего) — DTa (перечисленные параметры вводятся с помощью компонентов TextBox). Затем, при помощи компонентов CommandButton на форме «Задание связей между рабочими станциями», задаются связи между станциями, каждая из которых обозначаются линией, соединяющей две станции с кружком на том конце, куда связь приходит, далее, с помощью матрицы связей на форме «Создание матрицы связей», задаются весовые коэффициенты связей — pi(i). Матрица составлена из компонентов TextBox. Далее, для каждой станции, также при помощи компонентов TextBox, задается среднее время обслуживания — Ts(k), вероятность снятия заявки на выходе i-ой станции — Pr(k) и, при нормальном распределении времени обслуживания, стандартное отклонение (в % от среднего) — DTs(k).

После ввода весовых коэффициентов связей предусмотрена процедура проверки на корректность ввода. В случае некорректного задания коэффициентов, пользователю выдается сообщение об этом — MsgBox, и строка матрицы связей, в которой были заданы некорректные значения, очистится. Корректность проверяется через суммарные коэффициенты перехода: суммарный коэффициент перехода в конце каждой строки должен равняться единице. Так как коэффициенты определены типом Single, то для избежания ошибок, которые могут возникнуть в результате погрешности вычислений, производимых с переменными этого типа, проверка на равенство 1 заменяется проверкой на принадлежность интервалу (0.9999; 1.0001).

Далее, рассмотрим отдельно структуру каждой части.

 

Расчетно-формульная модель.

 

При расчете показателей по формулам, после задания пользователем всех необходимых входных параметров, производится расчет выходных параметров. Вначале рассчитываются доля заявок (от исходного количества заявок, пришедшего на первую станцию), пришедшая на последующие станции — kz(k) и среднее время между заявками на входе каждой станции (величина, обратная интенсивности входного потока) — kf(k).

Далее, происходит расчет показателей по формулам, соответствующим типам распределения входного потока и потоков обслуживания, и вывод результатов расчета (см. главу 2).

 

Имитационная модель

 

При расчете показателей с помощью имитационного моделирования вначале создается двумерный массив переходов — a1(i, k), где k — номер станции, а i — номер заявки. При создании данного массива с использованием случайных чисел, имитируются процесс прохождения заявок по станциям (на основании заданных коэффициентов переходов) и процесс отбраковки заявок (на основании заданных вероятностей снятия заявок на выходе станций). Если заявка пришла на станцию, то массиву в этой позиции присваивается значение 1; если же заявка не пришла на станцию, то массиву в данной позиции присваивается нулевое значение. Одновременно с созданием массива переходов производится расчет количества снятых заявок по станциям — NumRef(k).

Далее, для каждой станции формируется входной массив (времен прихода заявок на станцию) — a2(i, k) и выходной массив (времен выхода заявок со станции) — a3(i, k), где k — номер станции, а i — номер заявки. Входной массив первой станции образуется с использованием вспомогательной функции Rexp(T As Single) — для экспоненциального распределения (или функции Rnorm(MT As Single, DT As Single) — для нормального распределения). Выходной массив первой станции образуется из входного массива, с использованием тех же функций и функции Gener(nst As Integer). Входные массивы последующих станций образуются в соответствии с массивом переходов из выходных массивов предыдущих станций. В случае, когда заявки попадают на вход данной станции с нескольких станций (sort > 1), производится сортировка времен прихода заявок по возрастанию, с использованием вспомогательной функции Sort1(nst As Integer). После создания входного массива, на каждой последующей станции, создается выходной массив, с использованием входного массива и вспомогательных функций: Gener(nst As Integer), Rexp(T As Single) и Rnorm(MT As Single, DT As Single).

Функции Rnorm(MT As Single, DT As Single) и Rexp(T As Single) преобразуют случайную величину X, равномерно распределенную на интервале (0; 1) — Rnd, в случайную величину Y, распределенную, соответственно, по нормальному или экспоненциальному закону и предназначены для генерации нормального и экспоненциального распределения с заданными параметрами.

Функция Sort1(nst As Integer) — реализует алгоритм пирамидальной сортировки. Этот алгоритм требует операций. В нашем случае, сортируются не элементы, а индексный массив, причем таким образом, чтобы нулевые элементы исключались из сортировки (см. рис. 3).

                                         Начало

 


                                     l1 = nr(nst)/2 + 1

                                          t1=nr(nst)

     


                                                              Н                                                                                                   Н

                                                   l1 > 1?                                                                     j1 < t1?

         R1 = a2(Ind(t1), nst)         Д                                                                     Д

         
 
   


    a2(Ind(t1), nst) = a2(Ind(1), nst)                  l1 = l1 - 1       Н                 Н     a2(Ind(j1)<

                                                                                                                         j1 = t1?            a2(Ind(j1+1)?

                       t1 = t1-1                            R1 = a2(Ind(l1), nst)

                                                                                                                               Д                         Д

    Н                                                                                                                             j1 = j1 +1

                        t1 = 1?                                        j1 = l1                a2(Ind(i1), nst)=R1

 


                                 Д                                        i1 = j1                                Н     R1 > =

        a2(Ind(1), nst) = R1                                                                                     a2(Ind(j1), nst)?

                                                                                j1 = 2j1

                       Конец                                                                                                     Д

                         
 


                                                                                                            a2(Ind(i1), nst) = a2(Ind(j1), nst)

 


рис. 3

Функция Gener(nst As Integer) предназначена для генерации, с учетом нахождения заявок в очереди и простоев станции, выходного массива из входного. Она позволяет, учитывая тип распределения времени обслуживания и отбрасывая не пришедшие на станцию элементы, получить времена выхода заявок со станции(см. стр П2 приложения)

Далее, происходит расчет всех необходимых показателей, с использованием созданных массивов времен поступления и выхода заявок со станций и вывод результатов расчета (см. стр П30 приложения).

Результаты расчета выводятся, как численные показатели — с помощью компонентов TextBox и в виде гистограмм, с использованием компонентов PictureBox.

 

Сценарий работы программы

 

Сразу после старта программы на экране появляется форма «Модель многофазной многопоточной системы обслуживания» Эта форма предназначена для ввода исходных данных. В правом верхнем углу на данной форме расположена надпись «Исходные данные». Ниже помещаются общие параметры, которые пользователь должен ввести для исследования работы системы. Общие параметры включают:

Количество рабочих станций — K;

Распределение времени между заявками (экспоненциальное или нормальное);

Число заявок на входе в систему — N;

Среднее время между заявками;

Стандартное отклонение [в % от среднего] —для нормального распределения.

Общие параметры представлены в виде окон для ввода значений, с пояснением, какой параметр пользователь будет вводить в данное окно. Пользователь выбирает, как распределено время между заявками и, в зависимости от выбора, при указании нормального распределения появляется, а при выборе экспоненциального распределения исчезает окно для ввода значения стандартного отклонения.

Для ввода параметров пользователь должен щелчком мыши нажать на помещенную внизу формы кнопку «Ввод». После нажатия все окна для ввода общих параметров высветятся голубым цветом и станут активными. Пользователь должен ввести значения во все активные окна, перемещая курсор с помощью мыши, щелкая ею в том окне, куда он собирается ввести следующий параметр.

После ввода всех необходимых параметров необходимо повторно нажать на кнопку «Ввод» для задания связей между рабочими станциями. В случае ввода количества станций превышающего предусмотренные работой программы 10, после нажатия на кнопку «Ввод» пользователю выдается сообщение об ошибке: «Количество станций не более 10 [десяти]! » и для дальнейшей работы необходимо изменить значение на корректное.


Поделиться:



Последнее изменение этой страницы: 2019-10-03; Просмотров: 177; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.082 с.)
Главная | Случайная страница | Обратная связь