Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю? Еще раз спасибо за прекрасный курс! |
Модель функционирования предприятия
Модель в GPSS World
Постановка задачи
Предприятие имеет цехов, производящих типов блоков, т. е. каждый цех производит блоки одного типа. Себестоимости комплектующих блоков . Стоимости изготовления блоков . Интервалы выпуска блоков - случайные. Из блоков собирается одно изделие.
Перед сборкой каждый тип блоков проверяется на соответствующих постах контроля. Длительности контроля одного блока случайные. Стоимости проверки блоков . На каждом посту бракуется блоков соответственно. Забракованные блоки в дальнейшем процессе сборки не участвуют, и удаляются с постов контроля в брак.
Прошедшие контроль, т. е. не забракованные блоки поступают на один из пунктов сборки. На пункте сборки одновременно собирается только одно изделие. Сборка начинается только тогда, когда имеются все необходимые блоков различных типов. Время сборки случайное. Стоимость сборки одного изделия .
После сборки изделие поступает на один из стендов выходного контроля. На одном стенде одновременно проверяется только одно изделие. Время проверки случайное. Стоимость проверки одного изделия . По результатам проверки бракуется % изделий. В таком изделии с вероятностью % могут быть забракованы m блоков. Вероятности порядковых номеров из соответственно.
Забракованное изделие направляется в цех сборки, где неработоспособные блоки заменяются новыми. Время замены случайное. Стоимость замены i-го блока . После замены блоков изделие вновь поступает на один из стендов выходного контроля.
Прошедшее стенд выходного контроля изделие поступает в отдел приёмки. Время приемки одного изделия случайное. Стоимость приемки одного изделия . По результатам приёмки бракуется % изделий, которые направляются вновь на стенд выходного контроля. Принятые приёмкой изделия направляются на склад предприятия.
Исходные данные
Интервалы времени между выпусками блоков, время контроля блоков и изделий, сборки и приема изделий подчинены экспоненциальному закону.
Задание на исследование
Разработать имитационную модель функционирования предприятия при изготовлении изделий из блоков.
Исследовать влияние качества изготовления блоков и других параметров (интервалов выпуска блоков из цехов, себестоимости комплектующих, стоимости изготовления блоков, проверки, сборки и др.) на себестоимость изделий.
Сделать выводы о загруженности подразделений предприятия и необходимых мерах по снижению себестоимости продукции.
Уяснение задачи на исследование
Предприятие при изготовлении блоков и сборки из них изделий может быть представлено как многофазная многоканальная разомкнутая система массового обслуживания с ожиданием, так как оно имеет все ее элементы (Рис. 6.1):
- поток изготовленных цехами блоков;
- очереди блоков на посты контроля и пункты сборки;
- очереди изделий на стенды контроля и пункт приемки;
- многоканальные устройства обслуживания (посты контроля, стенды выходного контроля, пункты сборки, пункты приёмки);
- потоки забракованных блоков;
- выходные потоки готовых изделий.
Для имитации МКУ следует использовать блоки ENTER и LEAVE.
Для исходных данных в программе модели возьмем те же идентификаторы, что и в постановке задачи, но для предотвращения случаев совпадения с зарезервированными символами GPSS World добавим символ подчеркивания.
Например, q11_, n1_. Сделаем это для отличия от зарезервированных символов GPSS World: q - системный числовой атрибут, означающий очередь, n - используется в качестве ссылки при определении количества транзактов, вошедших в какой-либо блок программы. Добавление символа подчеркивания предотвратит ошибку, которая в противном случае будет выявлена на этапе создания объекта "Процесс моделирования". Другие идентификаторы будем вводить по мере уяснения задачи, а также в ходе разработки программы модели.
Для моделирования необходимо привести в соответствие время протекания реального процесса изготовления блоков и сборки изделий на предприятии и в модели. Это осуществляется введением масштабного коэффициента, например, если для условий рассматриваемой задачи его взять равным 1, а в реальном процессе измерять время в минутах, то 1 мин будет соответствовать 1 ед. мод. вр. Тогда время моделирования VrMod = 60 # 40 = 2400 ед. мод. вр. Временные параметры изготовления и контроля блоков, сборки, контроля и приёмки изделий даны в минутах, поэтому при выбранном масштабном коэффициенте 1 они не изменятся.
В модели, как процесса, протекающего в СМО (см. Рис. 6.1), необходимо иметь:
- задание исходных данных;
- сегмент имитации работы цехов без постов контроля;
- сегмент имитации работы постов контроля блоков;
- сегмент имитации сборки изделий;
- сегмент имитации работы стендов выходного контроля;
- сегмент имитации работы приемки;
- сегмент задания времени моделирования и расчета результатов моделирования.
Для ввода исходных данных целесообразно использовать команды EQU и FUNCTION. Вторая команда позволит сократить число строк в программе за счёт ввода одномерного массива данных двумя строками.
Программа модели
При разработке программы модели следует исходить из того, что отдельные элементы модели и модель в целом имеют достаточно различимое подобие со структурой предприятия (Рис. 6.1).
Это подобие может быть также усилено разработчиком за счет продуманного на этапе разработки разделения исследуемого объекта на элементы, на процессы, протекающие в них, а модели - на сегменты.
Однако возможно и другое. В данном примере можно было бы иметь сегменты имитации работы цехов по их количеству, т. е. четыре сегмента. С целью придания универсальности в модели имеется один сегмент имитации работы цехов. При увеличении (уменьшении) количества цехов необходимо только изменить значение переменной пользователя TipBl - число типов блоков (по числу цехов).
Также в примере в каждом цехе имеются свои посты контроля блоков. Поэтому, казалось, в модели должны были бы быть сегменты, имитирующие работу цеха и его постов контроля. По предложенному же составу модели видно, что в неё входит сегмент, имитирующий работу каждого из цехов без постов контроля, и сегмент имитации работы всех постов контроля. Т. е. как бы все посты контроля блоков объединены в отдельное подразделение предприятия, но функциональное предназначение соответствующих постов контроля осталось прежним.
Объединение сделано также в интересах универсальности модели. Предположим, количество цехов увеличилось. Нужно было бы добавлять сегменты имитации работы цехов и постов контроля, т. е. количество блоков в модели увеличилось бы. В предлагаемом варианте сегмент имитации функционирования постов контроля блоков остаётся неизменным. Необходимо только командами STORAGE задать ёмкости добавляемых пунктов контроля, заменить их имена номерами и добавить данные: среднее время контроля блоков, доля браков и стоимость контроля блоков в функции TKontr, BrBl и CProv соответственно.
Списки пользователя применяются для имитации работы складов готовых блоков. Предполагается наличие такого склада у каждого цеха.
Для розыгрыша выхода в брак блоков и изделий используется блок TRANSFER в статистическом режиме.
Обратите внимание, что в сегменте имитации сборки изделий блок TEST используется в режиме, который рекомендуется избегать вследствие того, что проверяемое условие может не выполниться. Однако здесь этого не должно быть, так как в противном случае будут отсутствовать готовые блоки для сборки изделий. По мере готовности блоков условие обязательно выполняется и блоки - транзакты направляются на сборку. Первые три транзакта уничтожаются, а четвертый транзакт имитирует собранное из четырех блоков изделие. Он направляется для проверки работоспособности на пункт приема изделий.
В программе использование МКУ и списков пользователя демонстрируется применением номеров МКУ вместо их имен. Этот метод дает возможность иметь в модели один сегмент имитации работы постов контроля блоков вместо подобного сегмента для каждого цеха, т. е. сократить число блоков в модели.
Обратите внимание, что в программе присвоение номеров именам МКУ указывается в самом начале и только потом, не обязательно следом, определение МКУ командой STORAGE. Если вы построите программу так, что поменяете порядок: вначале определение МКУ командой STORAGE, а потом - присвоение командой EQU номеров именам МКУ, то на этапе выполнения программы модели возникнет ошибка: "Обращение к несуществующей памяти". На этапе создания объекта "Процесс моделирования" ошибка изменения этого порядка не обнаруживается.
Ниже приводится программа модели.
; Модель функционирования предприятия ; Замена имен МКУ номерами Kontr1 EQU 1 Kontr2 EQU 2 Kontr3 EQU 3 Kontr4 EQU 4 ; Задание исходных данных TShop FUNCTION P1,D4 ; Средние интервалы времени изготовления блоков 1,19/2,11/3,15/4,18 CKom FUNCTION P1,D4 ; Стоимости комплектующих блоков 1,35/2,32/3,43/4,48 CIzg FUNCTION P1,D4 ; Стоимости изготовления блоков 1,35/2,27/3,36/4,37 TKont FUNCTION P1,D4 ; Среднее время контроля на постах 1,12/2,16/3,21/4,17 BrBl FUNCTION P1,D4 ; Доли брака блоков на постах контроля 1,.02/2,.03/3,.04/4,.06 CProv FUNCTION P1,D4 ; Стоимости контроля блоков 1,12/2,23/3,32/4,28 TZam FUNCTION P1,D4 ; Среднее время замены блоков 1,12/2,15/3,12/4,21 CZam FUNCTION P1,D4 ; Стоимости замены блоков 1,34/2,46/3,38/4,54 VerBl FUNCTION RN339,D2 ; Вероятности брака одного или двух блоков в собранном изделии .0,2/1,1 VerBlNum FUNCTION RN339,D4; Вероятность брака блока номер ... .25,1/.5,2/.75,3/1,4 CCb EQU 67 ; Стоимость сборки изделия q2_ EQU 0.05 ; Доля забракованных изделий на пункте выходного контроля q4_ EQU 0.15 ; Доля забракованных изделий приемкой TipBl EQU 4 ; Мах количество типов блоков VrMod EQU 2400 ; Время моделирования, 1 ед. мод. вр. = 1 мин Tc_ EQU 22 ; Среднее время сборки изделия Tp EQU 26 ; Среднее время проверки изделия Tpr EQU 18 ; Среднее время приема изделия CPr EQU 53 ; Стоимость приёмки изделия CK EQU 74 ; Стоимость контроля изделия ;Задание количества пунктов сборки и постов контроля Sb STORAGE 2 ; Количество пунктов сборки Kontr1 STORAGE 2 ; Количество постов n11 Kontr2 STORAGE 2 ; Количество постов n12 Kontr3 STORAGE 2 ; Количество постов n13 Kontr4 STORAGE 2 ; Количество постов n14 KSb STORAGE 3 ; Количество стендов выходного контроля KPr STORAGE 2 ; Количество пунктов приёмки ; Описание арифметических выражений KolIzd VARIABLE (N$Term7/X$prog) ; Количество готовых изделий KolGotBl VARIABLE ((CH*1/X$Prog)) ; Количество готовых блоков всех типов, оставшихся на складах KolBrBl VARIABLE ((X*1/X$Prog)) ; Количество забракованных блоков всех типов TIzd VARIABLE (AC1/X$Prog)/X$KolIzd; Среднее время подготовки одного изделия ;Сегмент имитации работы цехов без постов контроля GENERATE ,,,TipBl ; Число транзактов по числу типов блоков SAVEVALUE Tip+,1 ; Пронумеровать типы блоков ASSIGN 1,X$Tip ; Код в параметре транзакта - тип блока Met20 ADVANCE (Exponential(27,0,FN$TShop)); Розыгрыш интервала поступления блока SPLIT 1,Met20 ; Расщепление на два ASSIGN 2,(Exponential(339,0,FN$TKont)) ; Розыгрыш времени контроля и запись в Р2 ASSIGN 9,FN$BrBl ; Запись в Р9 доли брака блоков после постов контроля ASSIGN Sbor,(Exponential(339,0,Tc_)); Запись времени сборки изделия ASSIGN Cost,(FN$CKom+FN$CIzg); Стоимость комплектующих+стоимость изготовления в P$Cost ; Сегмент имитации работы постов контроля блоков Met1 QUEUE P1 ; Встать в очередь с номером в Р1 ENTER P1 ; Занять МКУ с номером в Р1 DEPART P1 ; Покинуть очередь с номером в Р1 ADVANCE P2;Имитация контроля с временем в Р2 LEAVE P1 ; Освободить МКУ с номером в Р1 ASSIGN Cost+,FN$CProv ; Добавить стоимость проверки TRANSFER P9,,Met14 ; Отправить брак блоков к Met14 LINK P1,FIFO ; Готовые блоки на склад с номером в Р1 ; Сегмент имитации сборки изделий GENERATE ,,,1 Met3 ASSIGN 1,TipBl ; Подготовка к циклу SAVEVALUE Cost,0 ; Обнуление ячейки Cost Met13 TEST NE CH*1,0 ; Есть ли на складе готовые блоки? TEST NE P1,1,Met4 ; Если последний блок, то на Met4 UNLINK P1,Met32,1 ; Нет TRANSFER ,Met31 Met4 UNLINK P1,Met22,1 ; Отправить блоки на сборку Met31 LOOP 1,Met13 TRANSFER ,Met3 ; Вернуться для проверки наличия всех типов блоков для следующего изделия Met32 SAVEVALUE Cost+,P$Cost ; Суммарная стоимость 2-го, 3-го и 4-го блоков SAVEVALUE Cost1,X$Cost ; Суммарная стоимость 2-го, 3-го и 4-го блоков TRANSFER ,Term5 ; Отправить Met22 ASSIGN Cost+,X$Cost1 ; Суммарная стоимость 1-го...4-го блоков SAVEVALUE Cost2,P$Cost ; Суммарная стоимость 1-го...4-го блоков ASSIGN Zam,0 Met5 QUEUE Sbor ; Занять очередь на пункты сборки ENTER Sb ; Занять пункт сборки DEPART Sbor ; Освободить очередь на пункт сборки ADVANCE P$Sbor ; Имитация сборки LEAVE Sb ; Освободить пункт сборки TEST E P$Zam,0,Met9 ASSIGN Cost+,CCb ; Добавить стоимость сборки изделия ; Сегмент имитации работы стендов выходного контроля Met9 QUEUE KSbor ; Занять очередь на стенд выходного контроля ENTER KSb ; Занять стенд выходного контроля DEPART KSbor ; Освободить очередь на стенд выходного контроля ADVANCE (Exponential(339,0,Tp)); Имитация работы стенда выходного контроля LEAVE KSb ; Освободить стенд выходного контроля ASSIGN Cost+,CK ; Добавить стоимость контроля изделия TRANSFER q2_,Met34,Met33 ; Направить в приёмку, а брак-на подготовку к замене ; Подготовка к замене блоков Met33 ASSIGN KolBl,FN$VerBl ; Розыгрыш количества забракованных в изделии блоков ASSIGN Sbor,0 ; Обнуление параметра Sbor Met21 ASSIGN 1,FN$VerBlNum ; Розыгрыш номера блока TEST NE CH*1,0 ; Есть на складе готовые блоки? UNLINK P1,Met14,1 ; Да. Тогда блок на замену ASSIGN Sbor,(Exponential(339,0,FN$TZam)); Розыгрыш времени замены блоков ASSIGN Zam,1 ASSIGN Cost+,FN$CZam ; Добавить стоимость замены блока TRANSFER ,Met5 ; Отправить на пункты сборки ; Сегмент имитации работы приёмки Met34 QUEUE Opr ; Занять очередь в приёмку ENTER KPr ; Занять приемку DEPART Opr ; Освободить очередь в приёмку ADVANCE (Exponential(339,0,Tpr)) ; Имитация работы приемки LEAVE KPr ; Освободить приемку ASSIGN Cost+,CPr ; Добавить стоимость приёмки изделия TRANSFER q4_,,Met9 ; Готовые изделия - на склад ; Сегмент счёта блоков и изделий SAVEVALUE CostIzd+,P$Cost Term7 TERMINATE ; Количество готовых изделий за все прогоны модели Met14 SAVEVALUE P1+,1 ; Количество забракованных блоков по типам за все прогоны модели ASSIGN 5,(TipBl+P1) SAVEVALUE *5+,P$Cost; Стоимости забракованных блоков по типам за все прогоны модели SAVEVALUE CostBr+,P$Cost ; Стоимость забракованных блоков за все прогоны модели TERMINATE Term5 TERMINATE ; Задание времени моделирования и расчет результатов GENERATE VrMod ; Задание времени моделирования TEST L X$prog,TG1,Met10 ; Если X$Prog< содержимого счетчика завершений, то SAVEVALUE Prog,TG1 ; записать в X$Prog содержимое счетчика завершений Met10 TEST E TG1,1,Met12 ; Если содержимое счетчика завершений равно 1, то расчет результатов SAVEVALUE KolIzd,V$KolIzd ; Количество готовых изделий ASSIGN 1,0 ; Подготовка к циклу Met15 ASSIGN 1+,1 ; Начало цикла по числу типов блоков SAVEVALUE (10+P1),V$KolGotBl ; Количество готовых блоков всех типов, оставшихся на складах SAVEVALUE P1,V$KolBrBl ; Количество забракованных блоков всех типов ASSIGN 2,(TipBl+P1) SAVEVALUE P2,((X*2)/X$Prog); Стоимости забракованных блоков по типам SAVEVALUE StBl+,(FN$CKom+FN$CIzg+FN$CProv); Стоимость блоков в собранном изделии TEST GE P1,TipBl,Met15 ; Все ли типы блоков? SAVEVALUE Cmin,(X$StBl+CCb+CK+CPr) ; Минимальная стоимость одного изделия SAVEVALUE MinCGotIzd,(X$Cmin#X$KolIzd) ; Минимальная стоимость всех готовых изделий SAVEVALUE CostIzd,(X$CostIzd/X$Prog) ; Стоимость готовых изделий SAVEVALUE TIzd,V$TIzd ; Среднее время подготовки одного изделия SAVEVALUE CostBr,(X$CostBr/X$Prog) ; Стоимость забракованных блоков SAVEVALUE Koef,((X$CostIzd+X$CostBr)/X$MinCGotIzd); Коэффициент увеличения стоимости одного изделия Met12 TERMINATE 1 START 1000
Отладьте модель. Выполните моделирование. В отчете, фрагмент которого приведен ниже,
SAVEVALUE RETRY VALUE KOLIZD 0 121.628 TIZD 0 19.732 COSTBR 0 3091.787 COSTIZD 0 74410.065 CMIN 0 582.000 MINCGOTIZD 0 70787.496 KOEF 0 1.095
найдите, что за 40 часов подготовлено 121,628 изделия, а среднее время подготовки одного изделия мин (19,732 мин). Минимальная стоимость готовых изделий 70787,496, стоимость брака 3091,787, стоимость готовых изделий 74410,065. Минимальная стоимость одного изделия - 582. Коэффициент увеличения стоимости одного изделия составил 1,095.
Другие эксперименты будут проведены в п. 6.3. Данные этого же эксперимента внесены в Табл. 6.10.