Тема: Создание имитационной модели «Минимизация производственных затрат»
Цель: на примере имитационной модели «Минимизация производственных затрат» рассмотреть замкнутую информационную систему и возможности её реализации
1. Постановка задачи
Рассмотрим модель, которая относится к замкнутым имитационным моделям. Предположим, что мы открыли собственную швейную фабрику «Мануфактура Ко». На этой фабрике есть швейный цех, где имеются 50 рабочих мест со швейными машинами. Машины выходят из строя и требуют ремонта. Поэтому на фабрике есть ремонтный цех, в котором работают специалисты — наладчики машин (впервые эту задачу в упрощенной постановке Шрайбер решил с помощью имитационного моделирования на GPSS).
Среднее время безотказной работы одной машины 157,0 ч. Естественно допустить, что это время — случайная величина, распределенная по экспоненциальному закону в соответствии с предельной теоремой о суперпозиции потоков. Допущение основано на том, что машина — сложное устройство, состоящее из сотен деталей и узлов, которые могут выйти из строя. Среднее время ремонта машины равно 7,0 ч; среднеквадратичное отклонение времени ремонта — 3,0 ч. В соответствии с центральной предельной теоремой считаем, что время ремонта, состоящего из многих последовательных элементарных операций, распределено по нормальному закону.
Сформулируем следующую задачу: сколько нужно арендовать резервных машин j (дополнительно к 50 собственным) и сколько необходимо нанять наладчиков /’, чтобы сделать минимальными затраты на производство, связанные с ремонтом и наладкой машин?
Все исходные данные для решения поставленной задачи сведены в таблице 1.
Сначала попытаемся решить эту задачу без применения имитационной модели. Допустим, что необходимо j дополнительных машин, которые будем арендовать на каком-либо складе.
Нетрудно представить, что каждая машина находится в двух состояниях:
1) находится в швейном цехе и работает;
2) находится в ремонтном цехе, неисправна и ремонтируется наладчиками.
Таблица 1
Параметры швейной фабрики
Средняя длительность такого цикла равна 157 + 7 = 164. Поэтому введем в рассмотрение полезную загрузку одной машины:
р = 157/164 = 0,957
Составим простое уравнение, показывающее, сколько нужно иметь дополнительных машин, чтобы все 50 мест не простаивали:
50=p(50+j).
Решение этого уравнения элементарно:
j=50(1-p)=2.15 (машины)
Однако решение должно быть целочисленным. Поэтому округляем в большую сторону и получаем целое число J=3. Время ремонта составляет 7 ч. Учитывая, что постоянно будут неисправны 3 машины, а рабочий день составляет 8 ч, наймем трех наладчиков, которые будут хорошо загружены в течение дня (два наладчика могут не справиться с потоком машин, поступающих в ремонт). Получим искомую величину I=3.
Если поступим в соответствии с полученным решением и, будем проводить натурное моделирование, собирая в течение длительного периода времени (не менее года) хронометрическую и финансовую информацию, то увидим, что решение, полученное выше, неверное.
Основная ошибка заключается в гипотезе о том, что машины находятся в двух состояниях, на самом деле таких состояний четыре (рисунок 1).
Рисунок 1- Иллюстрация к задаче оптимизации
производственных затрат
Выбранные выше состояния (исправная работа и ремонт) осуществляются в двух цехах: швейном и ремонтном. В начальный момент, при организации производства, все машины были исправны. Введем в рассмотрение следующие переменные, которые далее будут использоваться в модели:
· Nowon – количество рабочих мест в швейном цехе и соответственно количество собственных швейных машин;
· Arend – число арендуемых дополнительных машин для замены вышедших из строя;
· Men – количество наладчиков, производящих ремонт (наладку) швеных машин.
Отметим все значимые для задержек состояния в таблице 2. Таблица 2.
Состояния машин
В начальный момент решено арендовать Arend машин. Эти машины должны некоторое время находиться в каком-то помещении и «ждать», пока не выйдет из строя машина в цехе. Далее в процессе выхода из строя и восстановления машин в этом помещении будут находиться машины, число которых — случайная величина. Пребывание машин в этом помещении является состоянием 1. Пребывание машин в швейном цехе в исправности — состояние 2.
Если какая-либо машина выходит из строя, то она поступит в ремонт только в том случае, если хотя бы один наладчик свободен (не занят ремонтом другой машины). Вероятность такого события, естественно, не равна единице. Поэтому неисправные машины в ожидании ремонта направляются в другое помещение. Пребывание в этом помещении является состоянием 3.
И, наконец, если подходит очередь ремонта неисправной машины, она поступает в ремонтный цех. Ремонт — состояние 4 каждой машины.
Далее начнем строить имитационную модель. Наиболее рациональное решение заключается в том, чтобы выбрать машины в качестве транзактов. В таблице 2 приведены типы узлов, имитирующих соответствующие состояния. Количество каналов узла serv в состоянии 2 равно Nowon, а число каналов узла serv в состоянии 4 — это значение Men.
Единственная проблема, с которой мы немедленно столкнемся, заключается в том, что в данной замкнутой схеме нет генераторов транзактов. В связи с этим непонятно, откуда транзакты попадут в модель. Решение этой проблемы довольно простое: необходимо ввести в имитационную модель специальную часть, которая называется схемой зарядки. Рассмотрим эту схему и всю модель на рисунке 2.
Узлы с номерами 1 (queue), 2 (serv), 3 (queue) и 4 (serv) имитируют пребывание машин в состояниях с соответствующими номерами. Эта замкнутая схема не требует дальнейших комментариев.
Далее рассмотрим схему зарядки, которая состоит из трех узлов: узел 5 (генератор ag), узел 6 (транзактно-управляемый генератор creat) и узел 7 (терминатор term со вспомогательным оператором cheg). Модельное время, в течение которого будем осуществлять эксперимент, задается переменной Protime. Если мы хотим, чтобы это время составляло 3 года, а единицей измерения установим 1 ч, то это время равно 6240,0 ч.
Узел ag генерирует первый транзакт через какой-либо заданный или случайный интервал времени tbeg. Этот интервал можно назвать временем подготовки производства. Сгенерированный первый транзакт (назовем его прародителем) войдет в узел creat. В результате из этого узла выйдут Nowon + Arend транзактов, которые поступят в узел 1.
Первые Nowon транзактов без задержки пройдут этот узел и поступят в узел 2; причем каждый транзакт-машина займет свой канал, т.е. рабочее место. Остальные Arend транзактов останутся в узле 1.
Что касается транзакта-прародителя, то он выйдет из узла creat и войдет в узел term. В этом узле перед уничтожением транзакт-прародитель выполнит операцию cheg для перенастройки генератора ag. Эта операция установит время генерации второго транзакта, равное Protime. Учитывая, что с начала запуска модели уже прошло время tbeg, момент генерации второго транзакта будет равен Protime + tbeg (т.e. после выполнения модели). Это означает, что второй транзакт не выйдет из генератора во время моделирования.
Рисунок 2- Структурная схема модели для решения задачи
минимизации производственных затрат
Далее перейдем к планированию имитационного эксперимента для определения рационального количества резервных машин и числа специалистов-наладчиков. Возможность существования оптимального решения вытекает из следующих предпосылок.
Нетрудно представить себе, что если число наладчиков мало или равно нулю, то машины в основном будут неисправны, а затраты на производство — велики из-за простоя рабочих мест. Если же число наладчиков очень велико, то будут большими затраты на заработную плату (рисунок 3,а). Но при отсутствии наладчиков машины постепенно выйдут из строя, а затраты из-за простоя рабочих мест будут велики.
Что касается резервных машин, то, если их число мало или равно нулю, затраты на производство будут велики из-за простоя рабочих мест. Если же число арендуемых машин очень велико, то будут большими затраты на их аренду (рисунок 3,6).
Поэтому можно допустить гипотезу о наличии какой-то поверхности оптимизации затрат (рисунок 3,в). Однако, учитывая, что число наладчиков и количество машин — целые величины, эта поверхность включает в себя только точки с целочисленными координатами Men и Arend.
Рисунок 3- Интерпретация возможности минимизации затрат:
а — зависимость затрат от числа арендуемых машин Arend при фиксированном числе наладчиков; б — зависимость затрат от числа наладчиков Men при фиксированном числе арендуемых машин;
Рисунок 3- Интерпретация возможности минимизации затрат:
в — предполагаемая поверхность оптимизации
Необходимо найти минимальное значение на поверхности затрат Еij и соответственно значения координат iopt (переменная Men) и jopt (переменная Arend). He будем применять сложные методы поиска экстремальных значений на поверхности оптимизации затрат. Задача решается методом перебора, так как число возможных вариантов, которые необходимо сравнить, невелико. Однако в более сложных случаях требуется применять регрессионный анализ и строить поверхность отклика 2-го порядка.
Первое, что нужно сделать при проведении имитационного эксперимента, — это привести все времена и темпы затрат к одним единицам измерения. С помощью таблицы 1 получим таблицу 3 со статьями ежедневных расходов на производство. В ней три строки. Обозначим значение, указанное в каждой строке, как Ak, k= 1,2,3.
Таблица 3
Статьи ежедневных расходов Ak, (k= 1,2,3)
Далее потребуется имитационная модель, схема которой была приведена на рисунке2. С ее помощью необходимо получить значения загрузки рабочих мест, например, с экрана.
Приведем текст модели.
#include <Pilgrim.h>
int Nowon = 50; // Число собственных машин
int Men =3; // Число наладчиков
int Arend =3; // Число арендуемых машин
float Protime = 6240.0; // Время прогноза 3 года
forward
{
modbeg("Мануфактура Ко",7,Protime,
(long)1234567890,none,1,none,none,1);
ag("Подг. произв.",5,none,none,1.0,zero,zero,6);
network (dummy, dummy)
{
top(l): queue("Резерв машин", none, 2);
place;
top(2): serv("Maiiiины в работе", Nowon, none, expo,157.0, zero,zero,3);
place;
top(3): queue("0жид. ремонта", none, 4);
place;
top(4): зегv("Машины в рем.",Men, none, norm,
7. 0,3.0,zero,1 );
place;
top(6): creat("Подгот. машин",none,
Nowon+Arend, copy,1,7);
place;
top(7): term("IIp-во готово");
cheg(5,none,none,Protime, zero, zero,7);
place;
fault (123);
}
modend ("Factory.doc",1,24,page);
return 0;
}
Построим матрицу загрузок для различных значений числа наладчиков и количества швейных машин. Элементы такой матрицы обозначим Bij. Пример матрицы представлен в виде таблицы 4. Как было показано выше, в оценочном и не совсем верном расчете, поиск оптимальных значений i и j можно начать со значений i = 3 и j = 3, пропустив меньшие значения (i — число наладчиков, i = 3, 4, 5; j — число арендуемых швейных машин: j = 3,4, 5).
Таблица 4
Загрузка рабочих мест Bij (получается с помощью имитационной
модели)
Далее определим ежедневные затраты на оплату труда наладчиков и аренду резервных машин. Для этого создадим еще одну матрицу (таблица 5) элементов Сij с той же размерностью, какая существует в таблице 4. Элементы этой матрицы определяются с помощью таблицы 3 из соотношения
Cij=A1i+A2j, I=3,4,5, j=3,4,5.
Таблица 5.
Затраты на оплату труда наладчиков и аренду резервных машин Сij
Перейдем к определению потерь из-за снижения объемов производства по причине простоя рабочих мест. Для этого построим матрицу (таблицу 6) элементов Dij с той же размерностью. Элементы этой матрицы определяются с помощью таблиц 3 и 4. Элементы Bij, таблицы 4 — это загрузка оборудования р при конкретных значениях i и j. Поэтому справедливо следующее соотношение:
Dj=Nowon(1-Bij)A3, i =3,4, 5, j = 3,4, 5.
Таблица 6
Потери из-за снижения объемов производства Dti
Последнее, что нужно сделать, — это определить суммарные ежедневные затраты на производство. Для этого построим матрицу с той же размерностью (таблица 7). Элементы матрицы обозначаются Еij и определяются поэлементным суммированием данных таблиц 5 и 6:
Еij=Сij + Dij, i = 3,4,5,j = 3,4,5.
Из таблицы 7 следуют оптимальные значения:
1) количество нанимаемых наладчиков iopt=4;
2) число арендуемых резервных швейных машин jopt = 3.
Таблица 7
Суммарные ежедневные затраты на производство Eg
Если бы мы выбрали ранее ошибочно рассчитанные значения iopt= 3 и jopt= 3, то затраты ежедневно составляли бы не 322, а 571 долл. Различие в результатах в данном случае весьма значительно.
В таблице 8 представлен стандартный набор выходных данных, автоматически полученных во время прогона варианта имитационной модели с конкретными значениями исходных данных.
Таблица8.
Результаты моделирования
Контрольные вопросы:
1. Какие модели называются замкнутыми имитационными моделями?
2. Почему решение поставленной задачи без применения имитационного моделирования привело к получению ошибочных результатов?
3. Объясните, в каких состояниях могут находится швейные машины и почему?
4. При помощи приведённых таблиц объясните результаты моделирования.
5. К какому виду имитационных моделей относится данная модель?
К сдаче лабораторной работы №6 необходимо:
1. Смоделировать с помощью графического конструктора Pilgrim замкнутую имитационную модель «Минимизация производственных затрат».
2. Подготовить отчёт о проделанной работе.
3. Ответить на контрольные вопросы.
