Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Моделирование в GPSS World
6.4.1.6. Программа модели
Программа модели построена в соответствии с блок-диаграммой (см. рис. 6.3). В ней, кроме, как уже отмечалось, раскрытия методов использования ОКУ, МКУ и списков пользователя демонстрируется применение номеров МКУ вместо их имен.
Этот метод дает возможность иметь в модели один сегмент имитации работы постов контроля блоков вместо подобного сегмента для каждого цеха, т. е. сократить число блоков в модели.
Обратите внимание, что в программе присвоение номеров именам МКУ указывается в самом начале и только потом, не обязательно следом, определение МКУ командой STORAGE. Если вы построите программу так, что поменяете порядок: вначале определение МКУ командой STORAGE, а потом - присвоение командой EQU номеров именам МКУ, то на этапе выполнения программы модели возникнет ошибка: "Обращение к несуществующей памяти". На этапе создания объекта "Процесс моделирования" ошибка изменение этого порядка не обнаруживается.
; Модель функционирования предприятия. Прямая задача ; Замена имен МКУ номерами Kontr1 EQU 1 Kontr2 EQU 2 Kontr3 EQU 3 Kontr4 EQU 4 ; Задание исходных данных q11_ EQU 0.02 ; Доля брака блоков на постах n11 q12_ EQU 0.03 ; Доля брака блоков на постах n12 q13_ EQU 0.04 ; Доля брака блоков на постах n13 q14_ EQU 0.06 ; Доля брака блоков на постах n14 q2_ EQU 0.05 ; Доля брака изделий на пункте вых. контроля q4_ EQU 0.03 ; Доля забракованных изделий приемкой TipBl EQU 4 ; Максимальное количество типов блоков VrMod EQU 2400 ; Время моделирования, 1 ед. мод. вр. = 1 мин T1_ EQU 19 ; Средний интервал выпуска блоков типа 1 T01_ EQU 6 ; Стандартное отклонение времени выпуска блоков типа 1 T2_ EQU 11 ; Средний интервал выпуска блоков типа 2 T3_ EQU 15 ; Средний интервал выпуска блоков типа 3 T03_ EQU 8 ; Стандартное отклонение времени выпуска блоков типа 3 T4_ EQU 18 ; Средний интервал выпуска блоков типа 4 T11_ EQU 12 ; Среднее время контроля на постах n11 T011_ EQU 6 ; Стандартное отклонение времени контроля на постах n11 T12_ EQU 16 ; Среднее время контроля на постах n12 T13_ EQU 21 ; Среднее время контроля на постах n13 T14_ EQU 17 ; Среднее время контроля на постах n14 Tc_ EQU 22 ; Среднее время сборки изделия T0c_ EQU 2 ; Стандартное отклонение времени сборки изделия Tp_ EQU 15 ; Среднее время проверки изделия Tpr_ EQU 18 ; Среднее время приема изделия T0pr_ EQU 2 ; Стандартное отклонение времени приема изделия ; Коэффициенты изменения параметров законов распределения K1_ EQU 1 ; Коэффициент изменения T1_ и T01_ K2_ EQU 1 ; Коэффициент изменения T2_ и T02_ K3_ EQU 1 ; Коэффициент изменения T3_ и T03_ K4_ EQU 1 ; Коэффициент изменения T4_ и T04_ Kc_ EQU 1 ; Коэффициент изменения Tс_ и T0с_ Kp_ EQU 1 ; Коэффициент изменения Tp_ и T0p_ Kpr_ EQU 1 ; Коэффициент изменения Tpr_ и T0pr_ ; Задание количества пунктов сборки и постов контроля Sbor STORAGE 2 ; Количество пунктов сборки Kontr1 STORAGE 3 ; Количество постов n11 Kontr2 STORAGE 2 ; Количество постов n12 Kontr3 STORAGE 2 ; Количество постов n13 Kontr4 STORAGE 2 ; Количество постов n14 Kontsb STORAGE 2 ; Количество стендов выходного контроля ; Описание арифметических выражений KolIzd VARIABLE INT(N$Term7/X$prog) ; Количество готовых изделий KolGotBl VARIABLE (INT(CH*1/X$Prog)) ; Количество готовых блоков всех типов, оставшихся на складах KolBrBl VARIABLE (INT(X*1/X$Prog)) ; Количество забракованных блоков всех типов TIzd VARIABLE (AC1/X$Prog)/X$KolIzd ; Среднее время подготовки одного изделия ;Сегмент имитации работы цеха 1 без постов контроля GENERATE (T1_#K1_),(T01_#K1_) ASSIGN 1,1 ; Код 1 в параметре 1 транзакта - тип 1 блока ASSIGN 2,((T11_-T01_)+2#T011_#(RN27/1000)) ; Розыгрыш времени контроля и запись в Р2 ASSIGN 9,q11_ ; Запись в Р9 доли брака блоков после постов контроля TRANSFER ,Met1 ; Сегмент имитации работы цеха 2 без постов контроля GENERATE (Exponential(32,0,(T2_#K2_))) ASSIGN 1,2 ; Код 2 в параметре 1 транзакта - тип 2 блока ASSIGN 2,(Exponential(23,0,T12_)) ; Розыгрыш времени контроля и запись в Р2 ASSIGN 9,q12_ ; Запись в Р9 доли брака блоков после постов контроля TRANSFER ,Met1 ; Сегмент имитации работы цеха 3 без постов контроля GENERATE (T3_#K3_),(T03_#K3_) ASSIGN 1,3 ; Код 3 в параметре 1 транзакта - тип 3 блока ASSIGN 2,(Exponential(22,0,T13_)) ; Розыгрыш времени контроля и запись в Р2 ASSIGN 9,q13_ ; Запись в Р9 доли брака блоков после постов контроля TRANSFER ,Met1 ; Сегмент имитации работы цеха 4 без постов контроля GENERATE (Exponential(32,0,(T4_#K4_))) ASSIGN 1,4 ; Код 4 в параметре 1 транзакта - тип 4 блока ASSIGN 2,(Exponential(22,0,T14_)) ; Розыгрыш времени контроля и запись в Р2 ASSIGN 9,q14_ ; Запись в Р9 доли брака блоков после постов контроля ; Сегмент имитации работы постов контроля блоков Met1 QUEUE P1 ; Встать в очередь с номером в Р1 ENTER P1 ; Занять МКУ с номером в Р1 DEPART P1 ; Покинуть очередь с номером в Р1 ADVANCE P2 ; Имитация контроля с временем в Р2 LEAVE P1 ; Освободить МКУ с номером в Р1 ASSIGN 10,0 ; Подготовка к циклу Met21 ASSIGN 10+,1 ; Начало цикла по числу типов блоков TEST E P10,P1,Met21 ; Какой тип блока подготовлен? TRANSFER P9,,Met14 ; Отправить брак блоков к Met14 LINK P1,FIFO ; Готовые блоки на склад с номером в Р1 ; Сегмент имитации сборки изделий GENERATE ,,,1 Met3 ASSIGN 1,0 ; Подготовка к циклу Met13 ASSIGN 1+,1 ; Начало цикла по числу типов блоков TEST L P1,TipBl,Met4 ; Все ли типы блоков? TEST NE CH*1,0 ; Есть на складе готовые блоки? UNLINK P1,Term5,1 ; Да TEST G P1,TipBl,Met13 ; Блоки всех типов есть? Если да, Met4 UNLINK P1,Met5,1 ; то, отправить блоки на сборку TRANSFER ,Met3 ; Вернуться для проверки наличия всех типов блоков для следующего изделия Met5 QUEUE Sbor ; Занять очередь на пункты сборки ENTER Sb ; Занять пункт сборки DEPART Sbor ; Освободить очередь на пункт сборки ADVANCE (Normal(15,(Tc_#Kc_),(T0c_#Kc_))) ; Имитация сборки LEAVE Sb ; Освободить пункт сборки ; Сегмент имитации работы стендов выходного контроля Met9 QUEUE KSbor ; Занять очередь на стенд выходного контроля ENTER KSb ; Занять стенд выходного контроля DEPART KSbor ; Освободить очередь на стенд выходного контроля ADVANCE (Exponential(11,0,(Tp_#Kp_))) ; Имитация работы стенда выходного контроля LEAVE KSb ; Освободить стенд выходного контроля TRANSFER q2_,,Met5 ; Направить в приемку, а брак - для замены на пункт сборки ; Сегмент имитации работы приемки QUEUE Opr ; Занять очередь на пункт приемки SEIZE KPr ; Занять пункт приемки DEPART Opr ; Освободить очередь пункта приемки ADVANCE (Normal(11,(Tpr_#Kpr_),(T0pr_#Kpr_))) ; Имитация работы приемки RELEASE KPr ; Освободить пункт приемки TRANSFER q4_,,Met9 ; Готовые изделия - на склад ; Сегмент счета блоков и изделий Term7 TERMINATE ; Количество готовых изделий Met14 SAVEVALUE P1+,1 ; Количество брака блоков всех типов 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 11,(20+P1) ; Задание номера Х и запись его в Р11 TEST GE P1,TipBl,Met15 ; Все ли типы блоков? SAVEVALUE TIzd,V$TIzd ; Среднее время подготовки одного изделия Met12 TERMINATE 1
Отладьте модель. Выполните моделирование, указав в команде START 1000 прогонов. В отчете, фрагмент которого приведен ниже,
SAVEVALUE RETRY VALUE KOLIZD 0 122.000 TIZD 0 19.512
найдите, что за 40 часов подготовлено 122 изделия, а среднее время подготовки одного изделия ? 20 мин (19,51 мин).
После изучения материала главы 7 вернитесь к данной задаче и проведите два отсеивающих эксперимента (дисперсионных анализа). Для первого эксперимента используйте данные, приведенные в табл. 6.2, а для второго - в табл. 6.3.
При необходимости внесите в эти данные свои изменения. По результатам экспериментов сделайте выводы.
6.4.2. Модель процесса изготовления изделий на предприятии. Обратная задача
6.4.2.1. Постановка задачи
Постановка задачи аналогична постановке задачи п. 6.4.1.1 при тех же исходных данных (п. 6.4.1.2).
Отличие состоит в том, что нужно построить имитационную модель для определения оценки математического ожидания времени, за которое будет изготовлено предприятием N изделий, и оценки математического ожидания времени изготовления одного изделия. Поэтому в исходных данных нет времени моделирования, а вводится переменная пользователя N_ - количество изделий, время изготовления которых нужно оценить.
6.4.2.2. Программа модели
В программе модели те же сегменты (п. 6.4.1.6), только вместо сегмента задания времени моделирования и расчета результатов включен сегмент организации завершения моделирования и расчета результатов моделирования.
Один прогон наблюдения завершается подготовкой N_ изделий, т. е. поступлением их на склад. Поэтому соответствующие этим изделиям транзакты не выводятся сразу из модели, как в прямой задаче, а поступают в сегмент организации завершения моделирования и расчета результатов моделирования.
В блоке
Met10 SAVEVALUE NIzd+,1
подсчитывается количество подготовленных изделий. Если это количество равно N_, т. е. выполняется условие
TEST E X$NIzd,N_,Term5
фиксируется один прогон.
С целью сокращения машинного времени расчет результатов моделирования производится один раз по накопленной статистике за все прогоны. Программа, как и в п. 6.3.2.2, построена так, чтобы расчет результатов моделирования не требовал ее изменения при различном числе прогонов, задаваемом пользователем.
Ниже приведена программа обратной задачи.
; Модель функционирования предприятия. Обратная задача ; Замена имен МКУ номерами Kontr1 EQU 1 ; Замена имени МКУ Kontr1 номером Kontr2 EQU 2 ; Замена имени МКУ Kontr2 номером Kontr3 EQU 3 ; Замена имени МКУ Kontr3 номером Kontr4 EQU 4 ; Замена имени МКУ Kontr4 номером ; Задание исходных данных q11_ EQU 0.02 ; Доля забракованных блоков на постах n11 q12_ EQU 0.03 ; Доля забракованных блоков на постах n12 q13_ EQU 0.04 ; Доля забракованных блоков на постах n13 q14_ EQU 0.06 ; Доля забракованных блоков на постах n14 q2_ EQU 0.05 ; Доля брака изделий на пункте выходного контроля q4_ EQU 0.03 ; Доля забракованных изделий приемкой TipBl EQU 4 ; Максимальное количество типов блоков, изготавливаемых цехами T1_ EQU 19 ; Средний интервал выпуска блоков типа 1 T01_ EQU 6 ; Стандартное отклонение времени выпуска блоков типа 1 T2_ EQU 11 ; Средний интервал выпуска блоков типа 2 T3_ EQU 15 ; Средний интервал выпуска блоков типа 3 T03_ EQU 8 ; Стандартное отклонение времени выпуска блоков типа 3 T4_ EQU 18 ; Средний интервал выпуска блоков типа 4 T11_ EQU 12 ; Среднее время контроля на постах n11 T011_ EQU 6 ; Стандартное отклонение времени контроля на постах n11 T12_ EQU 16 ; Среднее время контроля на постах n12 T13_ EQU 21 ; Среднее время контроля на постах n13 T14_ EQU 17 ; Среднее время контроля на постах n14 Tc_ EQU 22 ; Среднее время сборки изделия T0c_ EQU 2 ; Стандартное отклонение времени сборки изделия Tp_ EQU 15 ; Среднее время проверки изделия Tpr_ EQU 18 ; Среднее время приема изделия T0pr_ EQU 2 ; Стандартное отклонение времени приема изделия N_ EQU 122 ; Количество изделий, которое необходимо подготовить ; Задание количества пунктов сборки и контроля Sbor STORAGE 2 ; Количество пунктов сборки Kontr1 STORAGE 3 ; Количество постов n11 Kontr2 STORAGE 2 ; Количество постов n12 Kontr3 STORAGE 2 ; Количество постов n13 Kontr4 STORAGE 2 ; Количество постов n14 Kontsb STORAGE 2 ; Количество пунктов сборки ; Сегмент имитации работы цеха 1 без постов контроля GENERATE T1_,T01_; Источник блоков типа 1 ASSIGN 1,1 ; Код 1 в параметре 1 транзакта - тип 1 блока ASSIGN 2,((T11_-T011_)+2#T011_#(RN27/1000)) ; Розыгрыш времени контроля и запись в Р2 ASSIGN 9,q11_ ; Запись в Р9 доли брака блоков после постов контроля TRANSFER ,Met1 ; Сегмент имитации работы цеха 2 без постов контроля GENERATE (Exponential(32,0,T2_)); Источник блоков типа 2 ASSIGN 1,2 ; Код 2 в параметре 1 транзакта - тип 2 блока ASSIGN 2,(Exponential(23,0,T12_)) ; Розыгрыш времени контроля и запись в Р2 ASSIGN 9,q12_ ; Запись в Р9 доли брака блоков после постов контроля TRANSFER ,Met1 ; Сегмент имитации работы цеха 3 без постов контроля GENERATE T3_,T03_ ; Источник блоков типа 3 ASSIGN 1,3 ; Код 3 в параметре 1 транзакта - тип 3 блока ASSIGN 2,(Exponential(22,0,T13_)) ; Розыгрыш времени контроля и запись в Р2 ASSIGN 9,q13_ ; Запись в Р9 доли брака блоков после постов контроля TRANSFER ,Met1 ; Сегмент имитации работы цеха 4 без постов контроля GENERATE (Exponential(32,0,T4_)) ; Источник блоков типа 4 ASSIGN 1,4 ; Код 4 в параметре 1 транзакта - тип 4 блока ASSIGN 2,(Exponential(22,0,T14_)) ; Розыгрыш времени контроля блока и запись в Р2 ASSIGN 9,q14_ ; Запись в Р9 доли брака блоков после постов контроля ; Сегмент имитации работы постов контроля блоков Met1 QUEUE P1 ; Встать в очередь с номером в Р1 ENTER P1 ; Занять МКУ с номером в Р1 DEPART P1 ; Покинуть очередь с номером в Р1 ADVANCE P2 ; Имитация контроля качества блока с временем контроля в Р2 LEAVE P1 ; Освободить МКУ с номером в Р1 ASSIGN 10,0 ; Подготовка к циклу Met21 ASSIGN 10+,1 ; Начало цикла по числу типов блоков TEST E P10,P1,Met21 ; Какой тип блока подготовлен? TRANSFER P9,,Met14 ; Отправить брак блоков к Met14 LINK P1,FIFO ; Готовые блоки на склад с номером в Р1 ; Сегмент имитации сборки изделий GENERATE ,,,1 Met3 ASSIGN 1,0 ; Подготовка к циклу Met13 ASSIGN 1+,1 ; Начало цикла по числу типов блоков TEST L P1,TipBl,Met4 ; Все ли типы блоков? TEST NE CH*1,0 ; Есть на складе готовые блоки? UNLINK P1,Term5,1 ; Да TEST G P1,TipBl,Met13 ; Блоки всех типов есть? Если да, Met4 UNLINK P1,Met5,1 ; то отправить блоки на сборку TRANSFER ,Met3 ; Вернуться для проверки наличия всех типов блоков для следующего изделия Met5 QUEUE Sbor ; Занять очередь на пункты сборки ENTER Sb ; Занять пункт сборки DEPART Sbor ; Освободить очередь на пункт сборки ADVANCE (Normal(15,Tc_,T0c_)) ; Имитация сборки LEAVE Sb ; Освободить пункт сборки ; Cегмент имитации работы стендов выходного контроля Met9 QUEUE KSbor ; Занять очередь на стенд выходного контроля ENTER KSb ; Занять стенд выходного контроля DEPART KSbor ; Освободить очередь на стенд выходного контроля ADVANCE (Exponential(11,0,Tp_)) ; Имитация работы стенда выходного контроля LEAVE KSb ; Освободить стенд выходного контроля TRANSFER q2_,,Met5 ; Направить изделие в приемку, а брак -на замену на пункт сборки ; Сегмент имитации работы приемки QUEUE Opr ; Занять очередь на пункт приемки SEIZE KPr ; Занять пункт приемки DEPART Opr ;Освободить очередь пункта приемки ADVANCE (Normal(11,Tpr_,T0pr_)) ; Имитация работы приемки RELEASE KPr ; Освободить пункт приемки TRANSFER q4_,,Met9 ; Готовые изделия - на склад ; Сегмент организации завершения моделирования и расчета результатов моделирования TEST L X$Prog,TG1,Met10 ; Если X$Prog< содержимого счетчика завершений, то SAVEVALUE Prog,TG1 ; записать в X$Prog содержимое счетчика завершений - количество прогонов из TG1 SAVEVALUE NIzd,0 Met10 SAVEVALUE NIzd+,1 ; Счет и сохранение в ячейке NIzd количества принятых приемкой изделий TEST E X$NIzd,N_,Term5 ; Если принято N_изделий, зафиксировать один прогон TEST E TG1,1,Met12 ; Если содержимое счетчика завершений равно 1, то расчет результатов моделирования ASSIGN 1,0 ; Подготовка к циклу Met15 ASSIGN 1+,1 ; Начало цикла по числу типов блоков SAVEVALUE (10+P1),(INT(CH*1/X$Prog)) ; Количество готовых блоков всех типов, оставшихся на складах SAVEVALUE P1,(INT(X*1/X$Prog)) ; Количество забракованных блоков всех типов ASSIGN 11,(20+P1) ; Задание номера сохраняемой ячейки и запись его в Р11 TEST GE P1,TipBl,Met15 ; Все ли типы блоков для подготовки изделия имеются на складах цехов? SAVEVALUE TIzd,((AC1/X$Prog)/60) ; Расчет и сохранение в ячейке TIzd времени подготовки N_изделий, час SAVEVALUE STIzd,((X$TIzd/N_)#60) ; Расчет и сохранение в ячейке STIzd среднего времени подготовки одного изделия, мин Met12 SAVEVALUE NIzd,0 ; Обнуление X$NIzd - подготовка к очередному прогону TERMINATE 1 Met14 SAVEVALUE P1+,1 ; Количество брака блоков всех типов TERMINATE Term5 TERMINATE ; Вывод вспомогательных транзактов
Отладьте модель. Запустите модель, указав в команде START 1000 прогонов. По окончании моделирования в отчете, фрагмент которого приведен ниже,
SAVEVALUE RETRY VALUE TIZD 0 39.438 STIZD 0 19.396
получите, что среднее время подготовки N_=122 изделий составляет 40 ч (39,438) при среднем времени подготовки одного изделия 20 мин (19,396). Как видно, эти результаты согласуются с исходными данными и результатами решения прямой задачи.
Результаты решения обратной задачи можно проверить. Найдите в самом начале отчета
START TIME END TIME BLOCKS FACILITIES STORAGES 0.000 2366280.440 74 1 6
Разделите END TIME (абсолютное модельное время АС1) на количество прогонов и минут в одном часе, т. е. на 60 000, получите ?40 ч.
Теперь в программе модели укажите командой EQU количество изделий N_=244:
N_ EQU 244
Выполните моделирование, указав, как и в предыдущем случае, в команде START 1000 прогонов. Из отчета
видно, что время подготовки, как и число изделий, увеличивается в два раза при неизменном времени изготовления одного изделия.
Сделайте выводы: влияет ли стохастичность, как и при решении прямой задачи, на результаты моделирования.