Опубликован: 07.11.2014 | Доступ: свободный | Студентов: 442 / 37 | Длительность: 15:17:00
ISBN: 978-5-9556-0161-8
Тема: САПР
Лекция 3:

Модель процесса изготовления в цехе деталей

< Лекция 2 || Лекция 3: 12345 || Лекция 4 >

Модель в GPSS World

Решение прямой задачи

Постановка задачи

Изготовление в цехе детали начинается через случайное время T_n. Выполнению операций предшествует подготовка. Длительность подготовки зависит от качества заготовки, из которой будет сделана деталь. Всего различных видов заготовок n_1. Время подготовки подчинено экспоненциальному закону. Частота появления различных заготовок и средние значения времени их подготовки заданы Табл. 2.1 дискретного распределения:

Таблица 2.1.
Частота 0,05 0,13 0,16 0,22 0,29 0,15
Среднее время 10 14 21 22 28 25

Для изготовления детали последовательно выполняются n операций со средними временами T_1, T_2,…,T_n соответственно. После каждой операции в течение времени T_{k1}, T_{k2},…,T_{kn} следует контроль. Время выполнения операций и контроля - случайное. Контроль не проходят q_1, q_2,…,q_n% деталей соответственно.

Забракованные детали поступают на пункт окончательного контроля и проходят на нем проверку в течение времени, распределённого по экспоненциальному закону со средним значением T_k. В результате из общего количества не прошедших контроль деталей q_{n+1}% идут в брак, а оставшиеся (1-q_{n+1})% деталей подлежат повторному выполнению операций, после которых они не прошли контроль. Если деталь во второй раз не проходит контроль, она окончательно бракуется.

Исходные данные
n_1=6; Exponential(T_n)=Exponential(30); q_1=12\%, q_2=15\%;
n=3; Exponential(T_1)=Exponential(30); q_3=10\%, q_4=80\%;
Exponential(T_2)=Exponential(25); Exponential(T_3)=Exponential(35);
Exponential(T_{k1})=Exponential(4); Exponential(T_{k2})=Exponential(5);
Exponential(T_{k3})=Exponential(15); Exponential(T_k)=Exponential(8);
Задание на исследование

Разработать имитационную модель для определения оценки математического ожидания количества деталей, изготовленных цехом в течение 8 часов.

Модель должна также позволять определять относительное количество готовых и забракованных деталей, среднее время изготовления одной детали.

Результаты моделирования необходимо получить с точностью \varepsilon = 0,01 и доверительной вероятностью \alpha = 0,99.

Уяснение задачи на исследование

Процесс изготовления в цехе деталей представляет собой процесс, протекающий в многофазной разомкнутой системе массового обслуживания с ожиданием (Рис. 2.1). Есть также признаки замкнутой системы - потоки брака для повторной обработки.

Цех как система массового обслуживания

увеличить изображение
Рис. 2.1. Цех как система массового обслуживания

Представим, что подготовка заготовки и операции 1, 2 и 3 производятся на станках - одноканальных устройствах (ОКУ) 1, 2, 3 и 4 соответственно. Пункт окончательного контроля можно также представить ОКУ. Необходимые для их имитации средства GPSS приведены на Рис. 2.1.

Время подготовки заготовки и время выполнения операций даны в мин. Возьмём 1 ед. мод. вр. = 1мин.

Рассчитаем количество прогонов, которые нужно выполнить в каждом наблюдении. При этом примем относительное количество готовых деталей как ожидаемую вероятность. Поскольку она заранее не известна, то расчёт проведём для худшего случая:

N=t^2_\alpha \cdot \frac{\sigma ^2}{\varepsilon ^2}=2,58^2\cdot \frac{0,5(1-0,5)}{0,01^2}=6,656\frac{0,25}{0,0001}\approx 66641.

Программа модели прямой задачи приведена ниже.

Программа модели
;Модель процесса изготовления деталей. Прямая задача
;	Задание исходных данных
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    ; Число основных прогонов
Замечание. В программе при обращении несколько раз к встроенному генератору экспоненциально распределённых случайных чисел взято одно и тоже начальное число 23, хотя рекомендуется брать различные начальные числа. Сделано это для чистоты эксперимента - сравнения в последующем результатов моделирования GPSS World с результатами AnyLogic.

Программа модели имеет достаточно подробный комментарий. Поэтому остановимся лишь на некоторых её особенностях.

Для задания исходных данных - времени подготовки заготовок - использована дискретная функция Pod. Это позволяет сократить программу по сравнению с тем, если применять команду EQU. Кроме того, упрощается событийная часть модели, так как в блоке имитации подготовки заготовок достаточно указать только ссылку FN$Pod на функцию.

ADVANCE		(Exponential(23,0,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)	; Среднее время изготовления одной детали, мин
< Лекция 2 || Лекция 3: 12345 || Лекция 4 >
Игорь Маникин
Игорь Маникин

Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю?

Еще раз спасибо за прекрасный курс!

Артём Нагайцев
Артём Нагайцев

Выдает ошибку "entity cannot be resolved to a variable" при попытке запуска. В чем может быть причина? Ошибка в строках

entity.time_vxod=time(); 

time_obrabotki.add(time()-entity.time_vxod);