Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель функционирования предприятия
Программа модели
При разработке программы модели следует исходить из того, что отдельные элементы модели и модель в целом имеют достаточно различимое подобие со структурой предприятия (рис. 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.