Опубликован: 15.02.2013 | Доступ: свободный | Студентов: 255 / 0 | Длительность: 16:52:00
ISBN: 978-5-9556-0146-5
Лекция 7:

Модель функционирования предприятия

Программа модели

При разработке программы модели следует исходить из того, что отдельные элементы модели и модель в целом имеют достаточно различимое подобие со структурой предприятия (рис. 6.1).

Это подобие может быть также усилено разработчиком за счет продуманного на этапе разработки разделения исследуемого объекта на элементы, на процессы, протекающие в них, а модели - на сегменты.

Однако возможно и другое. В данном примере можно было бы иметь сегменты имитации работы цехов по их количеству, т. е. четыре сегмента. С целью придания универсальности в модели имеется один сегмент имитации работы цехов. При увеличении (уменьшении) количества цехов необходимо только изменить значение переменной пользователя TipBl - число типов блоков (по числу цехов).

Также в примере в каждом цехе имеются свои посты контроля блоков. Поэтому, казалось, в модели должны были бы быть сегменты, имитирующие работу цеха и его постов контроля. По предложенному же составу модели видно, что в неё входит сегмент, имитирующий работу каждого из цехов без постов контроля, и сегмент имитации работы всех постов контроля. Т. е. как бы все посты контроля блоков объединены в отдельное подразделение предприятия, но функциональное предназначение соответствующих постов контроля осталось прежним.

Объединение сделано также в интересах универсальности модели. Предположим, количество цехов увеличилось. Нужно было бы добавлять сегменты имитации работы цехов и постов контроля, т. е. количество блоков в модели увеличилось бы. В предлагаемом варианте сегмент имитации функционирования постов контроля блоков остаётся неизменным. Необходимо только командами STORAGE задать ёмкости добавляемых пунктов контроля, заменить их имена номерами и добавить данные: среднее время контроля блоков, доля браков и стоимость контроля блоков в функции TKontr, BrBl и CProv соответственно.

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

Для розыгрыша выхода в брак блоков и изделий используется блок TRANSFER в статистическом режиме.

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

Замечание. Не путайте блоки изделий с блоками GPSS World в программе модели.

В программе использование МКУ и списков пользователя демонстрируется применением номеров МКУ вместо их имен. Этот метод дает возможность иметь в модели один сегмент имитации работы постов контроля блоков вместо подобного сегмента для каждого цеха, т. е. сократить число блоков в модели.

Обратите внимание, что в программе присвоение номеров именам МКУ указывается в самом начале и только потом, не обязательно следом, определение МКУ командой 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 изделия, а среднее время подготовки одного изделия \approx 20 мин (19,732 мин). Минимальная стоимость готовых изделий 70787,496, стоимость брака 3091,787, стоимость готовых изделий 74410,065. Минимальная стоимость одного изделия - 582. Коэффициент увеличения стоимости одного изделия составил 1,095.

Другие эксперименты будут проведены в п. 6.3. Данные этого же эксперимента внесены в табл. 6.10.

Алексей Гроссман
Алексей Гроссман

Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио.

Елена Блинаева
Елена Блинаева