Опишем создание имитационной модели примера

advertisement
Опишем создание имитационной модели примера "Автоматизированная
бухгалтерия" с помощью графического конструктора моделей GEM в
системе Pilgrim.
Создадим граф модели.
При запуске gem.exe на выполнение перед пользователем появляется
основное окно, содержащее меню, панель "горячих кнопок", панель
инструментов, информационную строку (рис. 2.5).
Рис. 2.5. Основное окно конструктора моделей
Создание графа модели потребует добавления новых узлов, их
перемещение в области построения, удаление существующих, определение
маршрутов переходов транзактов, или ссылок. В конструкторе все
перечисленные
действия
выполняются
"перетягиванием"
объекта,
обозначающего тип требуемого узла или действия, из панели инструментов в
область построения графа. Панель инструментов в левой части окна
редактора содержит значки, обозначающие узлы системы.
В панели инструментов находится набор значков всех типов узлов
системы. Следует заметить, что для нескольких различных типов узлов
может существовать одно и то же обозначение. Поэтому под каждым
значком с изображением узла находится кнопка с текущим типом
создаваемых узлов данного обозначения. Для изменения типа достаточно
щелкать мышью по кнопке с именем типа до появления необходимого.
Местоположение узла в плоскости построения графа не несет никакой
смысловой нагрузки с точки зрения логики модели. Поэтому конструктор
позволяет свободно перемещать узлы так, чтобы граф модели был удобен для
восприятия. При перемещении узлов также используется технология
перетягивания объектов.
Аналогичным образом выполняется удаление узла: в панели
инструментов необходимо захватить значок удаления узла и перетащить его
на узел, который требуется удалить. Узел будет удален вместе со всеми
входящими и исходящими ссылками.
Создание ссылок, или путей переходов транзактов, происходит
следующим образом: в панели инструментов захватывается значок
направленный в экран стрелки (перекрестие, заключенное в круг) и
перемещается на узел-источник транзакта. При отпускании кнопки мыши за
курсором потянется стрелка, обозначающая ссылку с невыбранным узломприемником транзакта. Для выбора узла-приемника необходимо щелкнуть по
нему мышью, в результате чего создается новая ссылка. Созданные ссылки
отображаются на экране в виде направленных стрелок, имеющих три звена.
Звенья не несут никакой смысловой нагрузки и служат для удобства
отображения графа на плоскости. Две промежуточные точки между звеньями
выделены небольшими кругами, захватывая и перемещая которые можно
придать стрелке нужную форму.
Следует помнить, что некоторые типы узлов не могут иметь входящие
или исходящие ссылки. Конструктором постоянно выполняется проверка
корректности действий пользователя, запрещая заведомо недопустимые
преобразования графа модели.
Используя приведенные выше инструкции, взятые из [3], построим граф
модели (рис. 2.6).
Рис. 2.6. Граф модели "Автоматизированная бухгалтерия"
Определим переменные модели.
По графу модели циркулируют два вида транзактов: транзакт-документ
и транзакт-неисправность. При прохождении ими узла serv необходимо будет
определить их дальнейший путь продвижения, закон распределения
длительности обслуживания и параметры этого распределения (см. рис. 2.4).
На левой панели щелкнем по кнопке "Переменные". Появится
соответствующее диалоговое окно, в котором необходимо ввести: имя и тип
переменной.
Введем в рассмотрение три переменные (рис. 2.7):
 zr – для изменения закона распределения длительности обслуживания в
узле serv в зависимости от вида транзакта;
 param1 и param2 – для изменения параметров распределения.
Рис. 2.7. Определение переменных модели
Определим параметры узлов.
Каждый узел модели характеризуется несколькими параметрами (см.
рис. 2.4). Для просмотра или редактирования параметров узла необходимо
дважды щелкнуть по нему левой кнопкой мыши либо один раз щелкнуть по
узлу правой кнопкой, в результате чего отобразится всплывающее меню, и
выбрать в нем пункт "параметры узла". Появится диалоговое окно,
определяющее параметры.
Для примера определим параметры узла serv "АРМ бухгалтерии" (см.
рис. 2.6), уточнив задачу следующим образом.
В рабочей комнате бухгалтерии готовятся документы. Они
поступают на столик-очередь со случайным интервалом времени между
ними, распределенным по экспоненциальному закону (expo) и имеющим
математическое ожидание длительности этого интервала 0,1 часа.
Со столика-очереди документы берут в порядке их поступления и
вводят на одном персональном компьютере в электронный архив.
Случайный интервал времени ввода документа распределяется по
нормальному закону (norm) с математическим ожиданием длительности
этого интервала 0,08 часа и со среднеквадратичным отклонением 0,027
часа.
Возникают неисправности компьютера со случайным интервалом
времени между ними, распределенным по экспоненциальному закону (expo) с
математическим ожиданием длительности этого интервала 24 часа.
Неисправность прерывает ввод очередного документа до ее
устранения.
Случайный
интервал
времени
устранения
неисправности
распределяется по нормальному закону (norm) с математическим
ожиданием этого интервала 1,0 час и со среднеквадратичным отклонением
0,334 часа.
Модельное время выберем 1200 часов (30 недель), исходя из того, что
продолжительность одного рабочего дня 8 часов, число рабочих часов в одну
неделю – 40 часов.
Требуется определить среднее время ожидания (задержки) документа
на столике-очереди своего ввода для оценивания достаточности установки
одного компьютера в бухгалтерии.
При такой постановке задачи параметры транзакта-документа и
транзакта-неисправности в соответствующих узлах их генерации ag
определяются, как показано на рис. 2.8.
Рис. 2.8. Определение параметров транзактов
Тогда параметры узла serv "АРМ бухгалтерии" определяются, как
показано на рис. 2.9.
Рис. 2.9. Определение параметров узла serv
Этот узел имеет два выхода. Поэтому нужно определить условия
обслуживания (см. рис. 2.7) и дальнейшего движения транзактов (см. рис.
2.6), в зависимости от того, документ это или неисправность (рис. 2.10).
Рис. 2.10. Определение условий обслуживания различных транзактов
Определим параметры инициализации / завершения модели.
Модель имеет параметры инициализации и завершения, задаваемые
функциями modbeg и modend (см. рис. 2.4). Определение этих параметров
производится через диалоговые окна, вызываемые нажатием кнопок
"Modbeg" и "Modend" в основном окне редактора (см. рис. 2.5) либо выбором
подпунктов основного меню в разделе "Модель".
В окне "Modbeg" (рис. 2.11) вводятся параметры в соответствии с
рис. 2.4.
Рис. 2.11. Ввод параметров modbeg
Окно "Modend" обычно не используется, в нем остаются предлагаемые
редактором параметры.
Сгенерируем текст имитационной модели в операторах Pilgrim.
Модель готова, если для нее сформирован граф, заданы переменные,
определены параметры узлов и функций. Для генерации программного файла
необходимо в основном меню выбрать "Выполнить", а затем – "Генерировать
С++ файл". После нажатия кнопки ОК будет выведено стандартное
диалоговое окно, предлагающее сохранить файл с расширением "срр".
Сохраненный конструктором файл можно далее компилировать в среде
Visual C++.
Для рассматриваемого примера конструктор автоматически сгенерирует
программную модель (рис. 2.12) и поместит ее в сср-файл. При этом в тексте
модели нет ни одной строчки, написанной вручную, без использования
графического конструктора.
Рис. 2.12. Программная модель "Автоматизированная бухгалтерия"
Аналогично создается имитационная модель примера "Ремонтная
мастерская". Для этого постановку задачи конкретизируем следующим
образом.
Создается мастерская по ремонту компьютеров. С помощью
имитационного моделирования оценивается загруженность такой
мастерской и время обслуживания для того, чтобы принять решение о
целесообразной структуре этой мастерской, в частности, о числе
ремонтных бригад. Модельное время выберем 3 года, исходя из того, что
продолжительность одного рабочего дня 8 часов, число рабочих часов в одну
неделю – 40 часов, а число рабочих недель в одном году – 52 недели.
Компьютер рассматривается как сложное устройство, состоящее из
большого числа деталей и узлов, которые могут выйти из строя.
Считается, что время ремонта определяется многими последовательными
элементарными операциями.
Поступающие в ремонт компьютеры могут быть двух видов.
Первый вид относится к прошлым годам выпуска с просроченным
гарантийным периодом, поступающий на ремонт в среднем каждые 5 часов
и требующий среднее время на ремонт, равное 9 часам, со
среднеквадратичным разбросом, равным трети среднего времени на
ремонт.
Второй вид компьютеров является современным с сохраняющейся
гарантией – в среднем поступает на ремонт каждые 10 часов, среднее
время ремонта – 3 часа, со среднеквадратичным разбросом, равным трети
среднего времени на ремонт.
Ремонт компьютеров, имеющих гарантию, производится в первую
очередь, а без гарантии – в порядке поступления.
Требуется проведением экспериментов определить среднее время
ожидания ремонта в очереди для 3-х и 4-х ремонтных бригад. (Примечание.
Для настройки датчика псевдослучайных величин (long) необходимо
использовать постоянную комбинацию цифр: (long)1234567890.)
Граф модели (рис. 2.13) по структуре полностью совпадает с графом
предыдущей модели "Автоматизированная бухгалтерия".
Рис. 2.13. Граф модели "Ремонтная мастерская"
Программная модель также аналогична (рис. 2.14).
Рис. 2.14. Программная модель "Ремонтная мастерская"
Рассмотренные выше примеры "Автоматизированная бухгалтерия" и
"Ремонтная мастерская" относятся к разомкнутым моделям. В них
сгенерированный транзакт производит одноразовое прохождение, а затем
уничтожается. Поэтому в примере "Автоматизированная бухгалтерия"
результаты имитационного моделирования характеризуют зависимость
показателей эффективности (время ожидания в очереди ввода) механизма
ввода бухгалтерских документов в электронное хранилище от параметров
потоков этих документов и неисправностей используемых компьютеров, а в
примере "Ремонтная мастерская" – показателей механизма ремонта от
параметров потоков неисправных компьютеров.
Приведем
еще
один
пример
под
условным
названием
"Документооборот".
Рассмотрим фирму, использующую систему документооборота. Пять
сотрудников этой фирмы обращаются к этой системе для того, чтобы
получить хранящиеся в ней документы и затем на их основе и новых
потребностей сформировать новые документы.
Запросы на получение хранящихся документов возникают в среднем
каждые 3 минут. Приоритетность запросов не устанавливается.
(Примечание. Для настройки датчика псевдослучайных величин (long)
необходимо использовать постоянную комбинацию цифр: (long)2013456789.)
Система обслуживает каждый запрос на получение хранящихся
документов последовательно, в порядке их поступления с минимальным
интервалом в 0.5 минут, с наиболее вероятным интервалом в 3 минуты и с
максимальным интервалом в 5 минут.
Полученный пользователем документ служит для создания нового
документа, на что в среднем требуется 14 минут со среднеквадратичным
отклонением (СКО) в 4 минут.
Новые документы также поступают в систему документооборота на
хранение.
Требуется установить среднее время задержки в очереди полученного
пользователем хранящегося в системе документа перед тем, как он сможет
создать на его основе новый документ.
Модельное время составляет 499200 минут.
Граф этой модели представлен на рис. 4.1.
Рис. 4.1. Граф модели "Документооборот"
Как видим, модель является разомкнутой и служащей для выяснения
среднего времени ожидания в очереди документов на их обработку (см. рис.
4.1), характеризующего зависимость от потока запросов. Особенностью
такой модели является лишь то, что сгенерированный транзакт, имеющий
одноразовое прохождение до своего уничтожения, выступает вначале как
запрос на поиск, а затем как найденный документ.
Теперь рассмотрим пример "Швейная мастерская", для которого уже
потребуется построить замкнутую имитационную модель.
Открывается швейная фабрика. На этой фабрике есть швейный цех,
где имеются k=50 рабочих мест во швейными машинами. Машины выходят
из строя и требуют ремонта. Поэтому на фабрике есть ремонтный цех, в
котором работают специалисты-наладчики машин.
Среднее время безотказной работы одной машины 157 часов.
Естественно допустить, что это время – случайная величина,
распределенная по экспоненциальному закону в соответствии с предельной
теоремой о суперпозиции потоков. Допущение основано на том, что машина
– сложное устройство, состоящее из сотен деталей и узлов, которые
могут выйти из строя.
Среднее время ремонта машины равно 7 часам; среднеквадратичное
отклонение времени ремонта – 3 часа. В соответствии с центральной
предельной теоремой считаем, что время ремонта, состоящего из многих
последовательных элементарных операций, распределено по нормальному
закону.
Для обеспечения производства предполагается арендовать резервные
машины и нанимать наладчиков. При этом известны статьи ежедневных
расходов на производство (табл. 4.1).
Табл. 4.1. Статьи ежедневных расходов на производство
Вид ежедневных расходов
Стоимость (у.е.)
Дневная заработная плата одного наладчика
30
Дневная аренда одной машины
30
Убыток из-за простоя одного рабочего места
160
Требуется определить, сколько нужно арендовать резервных машин m
дополнительно к 50 собственных и сколько необходимо нанять наладчиков
n , чтобы сделать минимальными затраты на производство, связанные с
простоем рабочих мест, с ремонтом и арендой машин.
Следует также учитывать крайние случаи, позволяющие судить о
последствиях аренды машин и наема наладчиков. Если число наладчиков
будет мало или равно нулю, то затраты на их заработную плату будут
минимальны, но машины постепенно выйдут из строя и затраты из-за
простоя рабочих мест будут велики. Если же число наладчиков очень велико,
то будут большими затраты на их заработную плату. Если число резервных
машин мало или равно нулю, то затраты на производство будут велики из-за
простоя рабочих мест. Если же число арендуемых машин очень велико, то
будут большими затраты на их аренду.
Попробуем решить поставленную задачу без применения имитационной
модели.
Будем считать, что каждая машина находится в двух состояниях:
1) находится в швейном цехе и работает;
2) находится в ремонтном цехе, неисправна и ремонтируется
наладчиками.
Тогда средняя длительность такого цикла складывается из среднего
времени безотказной работы одной машины и среднего времени ремонта
машины: 157+7=164 (час).
Поэтому полезная загрузка одной машины, а следовательно, одного
рабочего места:
  157
 0 ,957.
164
Составим простое уравнение, показывающее, сколько нужно иметь
дополнительных машин, чтобы все 50 рабочих мест не простаивали:
50   (50  m ).
Отсюда требуемое число арендуемых резервных машин:
50(1   ) 50  0 ,043
m

 2,25.

0 ,957
Однако решение должно быть целочисленным, поэтому округляем в
большую сторону: m  3.
Учитывая, что постоянно будут неисправны 3 машины, время ремонта в
среднем составляет 7 часов, а рабочий день – 8 часов, можно определить
необходимое число наладчиков: n  3.
Практика показала, что полученное решение ( m  3 , n  3 ) неверное.
Основная ошибка заключается в гипотезе о том, что машины находятся в
двух состояниях: исправная работа и ремонт. На самом деле таких состояний
четыре: машины в резерве, машины в работе, машины в ожидании ремонта,
машины в ремонте.
Построим имитационную модель. Наиболее рациональным решением
является выбор машин в качестве транзактов. Тогда структурную схему
модели можно представить в следующем виде (рис. 4.2).
Число каналов: 50
50 + m
Число каналов: n
Рис. 4.2. Схема модели
Общая схема состоит из двух частей: схемы зарядки и схемы замкнутой
части модели.
Схема зарядки нужна для того, чтобы сформировать необходимое число
транзактов-машин перед тем, как они будут циркулировать по замкнутой
части, представляющей собой последовательную смену указанных выше
четырех состояний машин. Генерация необходимого числа транзактов
производится путем попадания первого сгенерированного узлом ag
транзакта в узел управляемого генератора (размножителя) транзактов creat .
Из последнего узла выходит заданное устанавливаемым параметром число
порожденных транзактов, направляемых в замкнутую часть модели. А
порождающий транзакт проходит этот узел и уничтожается в узле term .
Одновременно срабатывает установленная в этом терминаторе сигнальная
функция cheg , которая перенастраивает генератор транзактов ag таким
образом, чтобы из него не выходили больше транзакты. Такого положения
можно добиться, если изменить параметр ag в описании закона
распределения случайной величины интервала времени между выходящими
из него транзактами, указав длительность указанного интервала не меньше,
чем все модельное время, а закон распределения – детерминированный.
На построенной модели проведены эксперименты с разным количеством
машин m и наладчиков n . Предварительные расчеты дают основание
установить m  3, 4 , 5 и n  3, 4 , 5 , т.е. осуществить девять
экспериментов. По их результатам можно определить оптимальное число m
арендуемых машин и оптимальное число n нанимаемых наладчиков, при
которых затраты на производство, связанные с простоем рабочих мест, с
арендой и ремонтом машин, будут минимальными.
Сначала рассчитаем затраты C nm на оплату труда наладчиков и аренду
машин для установленных вариантов (табл. 4.2):
C nm  30  n  30  m .
Табл.4.2. Затраты на оплату труда наладчиков и аренду машин ( C nm )
Число
Число арендуемых резервных машин
наладчиков
3
4
5
3
180
210
240
4
210
240
270
5
240
270
300
Циркуляция транзактов-машин по замкнутой части модели позволяет
экспериментально установить, прежде всего, загрузку рабочих мест (табл.
4.3).
Табл. 4.3. Загрузка рабочих мест ( Bnm ) – результаты моделирования
Число
Число арендуемых резервных машин
наладчиков
3
4
5
3
0,951
0,974
0,964
4
0,986
0,979
0,978
5
0,978
0,984
0,979
Исходя из этого рассчитываются потери из-за снижения объемов
производства вследствие простоя рабочих мест (табл. 4.4):
Dnm  50  1  Bnm   160 .
Табл. 4.4. Потери из-за снижения объемов производства ( Dnm )
Число
Число арендуемых резервных машин
наладчиков
3
4
5
3
392
208
288
4
112
168
176
5
176
128
168
Наконец, можно определить искомые суммарные ежедневные затраты
на производство (табл. 4.5):
E nm  C nm  Dnm .
Табл. 4.5. Суммарные ежедневные затраты на производство ( E nm )
Число
Число арендуемых резервных машин
наладчиков
3
4
5
3
572
418
528
4
322
408
446
5
416
398
468
Анализ таких затрат показывает, что наиболее рациональным является
арендовать дополнительно три машины и иметь четырех наладчиков.
Download