Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель процесса изготовления в цехе деталей
Модель в GPSS World
Решение прямой задачи
Постановка задачи
Изготовление в цехе детали начинается через случайное время . Выполнению операций предшествует подготовка. Длительность подготовки зависит от качества заготовки, из которой будет сделана деталь. Всего различных видов заготовок . Время подготовки подчинено экспоненциальному закону. Частота появления различных заготовок и средние значения времени их подготовки заданы табл. 2.1 дискретного распределения:
Для изготовления детали последовательно выполняются n операций со средними временами соответственно. После каждой операции в течение времени следует контроль. Время выполнения операций и контроля - случайное. Контроль не проходят деталей соответственно.
Забракованные детали поступают на пункт окончательного контроля и проходят на нем проверку в течение времени, распределённого по экспоненциальному закону со средним значением. В результате из общего количества не прошедших контроль деталей идут в брак, а оставшиеся деталей подлежат повторному выполнению операций, после которых они не прошли контроль. Если деталь во второй раз не проходит контроль, она окончательно бракуется.
Исходные данные
Задание на исследование
Разработать имитационную модель для определения оценки математического ожидания количества деталей, изготовленных цехом в течение 8 часов.
Модель должна также позволять определять относительное количество готовых и забракованных деталей, среднее время изготовления одной детали.
Результаты моделирования необходимо получить с точностью и доверительной вероятностью .
Уяснение задачи на исследование
Процесс изготовления в цехе деталей представляет собой процесс, протекающий в многофазной разомкнутой системе массового обслуживания с ожиданием (Рис. 2.1). Есть также признаки замкнутой системы - потоки брака для повторной обработки.
Представим, что подготовка заготовки и операции 1, 2 и 3 производятся на станках - одноканальных устройствах (ОКУ) 1, 2, 3 и 4 соответственно. Пункт окончательного контроля можно также представить ОКУ. Необходимые для их имитации средства GPSS приведены на рис. 2.1.
Время подготовки заготовки и время выполнения операций даны в мин. Возьмём 1 ед. мод. вр. = 1мин.
Рассчитаем количество прогонов, которые нужно выполнить в каждом наблюдении. При этом примем относительное количество готовых деталей как ожидаемую вероятность. Поскольку она заранее не известна, то расчёт проведём для худшего случая:
Программа модели прямой задачи приведена ниже.
Программа модели
;Модель процесса изготовления деталей. Прямая задача ; Задание исходных данных TimeMod EQU 480; Время моделирования, 1 ед. мод. вр. = 1 мин ; Среднее время Tn_ EQU 35 ; между поступлениями заготовок T1 EQU 30 ; выполнения 1-й операции, мин T2 EQU 25 ; выполнения 2-й операции, мин T3 EQU 35 ; выполнения 3-й операции, мин Tk1 EQU 4 ; контроля после 1-й операции, мин Tk2 EQU 5 ; контроля после 2-й операции, мин Tk3 EQU 15 ; контроля после 3-й операции, мин Tk EQU 8 ; окончательного контроля, мин q1_ EQU .12 ; Доля брака после 1-й операции q2_ EQU .15 ; Доля брака после 2-й операции q3_ EQU .10 ; Доля брака после 3-й операции q4_ EQU .80 ; Доля окончательного брака ; Описание функции времени подготовки заготовок Pod FUNCTION RN10,D6 .05,10/.18,14/.34,21/.56,22/.85,28/1,25 ; Сегмент имитации изготовления деталей GENERATE (Exponential(23,0,Tn_)) ; Источник заготовок ; Подготовка заготовок для деталей QUEUE Pod ; Встать в очередь SEIZE Pod ; Начать подготовку заготовки DEPART Pod ; Покинуть очередь ADVANCE (Exponential(34,0,FN$Pod)); Подготовка RELEASE Pod ; Закончить подготовку заготовки ; Имитация выполнения 1-й операции DCount ASSIGN 1,1 ; Код 1 - проходит первый раз ASSIGN 2,1 ; Код 1 в Р2-признак 1-й операции Oper1 QUEUE P2 ; Встать в очередь SEIZE Konveer1 ; Начать 1-ю операцию DEPART P2 ; Покинуть очередь ADVANCE (Exponential(23,0,T1)); 1-я операция RELEASE Konveer1 ; Закончить 1-ю операцию ADVANCE (Exponential(23,0,Tk1)); Контроль 1-й операции TRANSFER q1_,,Sboi ; Брак на пункт контроля ; Имитация выполнения 2-й операции ASSIGN 2,2 ; Код 2 в Р2-признак 2-й операции Oper2 QUEUE P2 ; Встать в очередь SEIZE Konveer2 ; Начать вторую операцию DEPART P2 ; Покинуть очередь ADVANCE (Exponential(23,0,T2)) ; 2-я операция RELEASE Konveer2 ; Закончить 2-ю операцию ADVANCE (Exponential(23,0,Tk2)) ; Контроль 2-й операции TRANSFER q2_,,Sboi ; Брак на пункт контроля ; Имитация выполнения 3-й операции ASSIGN 2,3 ; Код 3 в Р2-признак 3-й операции Oper3 QUEUE P2 ; Встать в очередь SEIZE Konveer3 ; Начать третью операцию DEPART P2 ; Покинуть очередь ADVANCE (Exponential (23,0,T3)) ; 3-я операция RELEASE Konveer3 ; Закончить 3-ю операцию ADVANCE (Exponential(23,0,Tk3)); Контроль 3-й операции TRANSFER q3_,,Sboi ; Брак на пункт контроля EndOper1 TERMINATE ; Счёт готовых деталей ; Сегмент имитации работы пункта контроля Sboi TEST E P1,1,EndOper ; Если второй раз, то в окончательный брак QUEUE Kont ; В очередь на пункт контроля SEIZE Kontr ; Занять пункт контроля DEPART Kont ; Покинуть ADVANCE (Exponential(23,0,Tk)); Окончательный контроль RELEASE Kontr ; Освободить пункт контроля TRANSFER q4_,,EndOper ; В окончательный брак ASSIGN 1,2 ; Код 2 в Р1-деталь пойдёт второй раз Met1 TRANSFER ,(Met1+P2) TRANSFER ,Oper1 ; Повторно на 1-ю операцию TRANSFER ,Oper2 ; Повторно на 2-ю операцию TRANSFER ,Oper3 ; Повторно на 3-ю операцию EndOper TERMINATE ; Счет брака ; Cегмент задания времени моделирования и расчета результатов моделирования GENERATE TimeMod ; Время моделирования TEST L X$Prog,TG1,Met11 ; Если условие выполняется, то SAVEVALUE Prog,TG1 ; X$Prog=TG1 содержимому счетчика завершений Met11 TEST E TG1,1,Met12 ; Если содержимое счетчика равно 1, то расчет результатов моделирования SAVEVALUE NDet,(N$EndOper1/X$Prog) ; Количество готовых деталей, шт. SAVEVALUE Brak,(N$EndOper/X$Prog) ; Количество забракованных деталей, шт. SAVEVALUE DoljaBrak,(X$Brak/(X$Brak+X$NDet)) ; Общая доля брака SAVEVALUE DoljaDet,(X$NDet/(X$Brak+X$NDet)) ; Доля готовых деталей SAVEVALUE NDet,(INT(X$NDet)) ; Количество готовых деталей (целое), шт. SAVEVALUE Brak,(INT(X$Brak)) ; Количество забракованных деталей (целое), шт. SAVEVALUE SDet,((AC1-X$AC2)/N$EndOper1) ; Среднее время изготовления одной детали, мин SAVEVALUE AC2,AC1 Met12 TERMINATE 1 START 1000,NP ; Число предварительных прогонов RESET ; Сброс статистики START 16641 ; Число основных прогонов
Программа модели имеет достаточно подробный комментарий. Поэтому остановимся лишь на некоторых её особенностях.
Для задания исходных данных - времени подготовки заготовок - использована дискретная функция Pod. Это позволяет сократить программу по сравнению с тем, если применять команду EQU. Кроме того, упрощается событийная часть модели, так как в блоке имитации подготовки заготовок
ADVANCE (Exponential(23,0,FN$Pod)); Имитация подготовки заготовки
достаточно указать только ссылку FN$Pod на функцию.
Коды 1 и 2, записываемые в параметр 1 транзакта, служат признаками не прохождения деталью контроля первый и второй раз соответственно. Признак 2 является основанием отправки детали в брак и исключения её из производства.
Начало сегмента задания времени моделирования и расчёта результатов моделирования построено аналогично этому же сегменту модели п. 1.1.
Для счёта количества готовых и забракованных деталей введены метки EndOper1 и EndOper соответственно. Поскольку эти количества накапливаются за все прогоны, то для получения средних значений они делятся на число прогонов X$Prog, округляются до целого процедурой INT и заносятся в сохраняемые ячейки NDet и Brak соответственно. Далее эти средние значения используются для вычисления относительных долей готовых DoljaDet и забракованных DoljaBrak деталей.
Среднее время SDet изготовления одной детали определяется как отношение абсолютного модельного времени AC1 к количеству подготовленных деталей за все прогоны, т.е. к N$EndOper1.
Это было бы правильно, если бы не было предварительных прогонов модели. Модельное время этих прогонов не должно учитываться при определении среднего времени изготовления детали. Его нужно запомнить по завершении предварительных прогонов. Для этого введена команда
SAVEVALUE AC2,AC1 ; Время предварительных прогонов
После окончания основных прогонов производится расчёт:
SAVEVALUE SDet,((AC1-X$AC2)/N$EndOper1) ; Среднее время изготовления одной детали, мин
Проведение исследований
Полагаем, что вы ввели программу модели, исправили ошибки и выполнили указанное количество прогонов модели. Фрагмент отчёта приведен ниже.
SAVEVALUE RETRY VALUE PROG 0 16641.000 NDET 0 9.000 BRAK 0 3.000 DOLJABRAK 0 0.279 DOLJADET 0 0.721 SDET 0 48.559
В результате решения прямой задачи получим, что за 8 часов цехом будет изготовлено NDet = 9 деталей, относительная доля готовых деталей составит DoljaDet = 0,721, а среднее время изготовления одной детали SDet = 48,559 мин. При этом будет забраковано Brak = 3 детали, относительная доля которых составит DoljaBrak = 0,2279.
Фрагмент отчёта, если не использовать процедуру INT, т.е. не округлять до целого количество изготовленных и количество забракованных деталей:
SAVEVALUE RETRY VALUE PROG 0 16641.000 NDET 0 9.885 BRAK 0 3.821 DOLJABRAK 0 0.279 DOLJADET 0 0.721 SDET 0 48.559
За 8 часов цехом будет изготовлено Ndet = 9,885 деталей, относительная доля готовых деталей DoljaDet = 0,721 и среднее время изготовления одной детали SDet = 48,559 мин останутся такими же. При этом будет забраковано Brak = 3,821 деталей, относительная доля которых от общего количества готовых и забракованных DoljaBrak = 0,279 также не изменится.