
- •Введение
- •Постановка задачи
- •Исходные данные
- •Формализованное описание модели предприятия
- •Параметры модели
- •Данные модели
- •Ввод исходных данных
- •Вывод результатов моделирования
- •Имитация работы цехов предприятия
- •Имитация работы цехов
- •Класс Product
- •Элементы модели
- •Имитация работы постов контроля блоков
- •Элементы модели
- •Имитация работы пунктов сборки изделия
- •Элементы модели
- •Имитация работы стендов контроля изделий
- •Элементы модели
- •Имитация работы пунктов приема изделий
- •Элементы модели
- •Имитация склада готовых изделий
- •Имя: ГотИзделия
- •Имитация склада бракованных блоков
- •Элементы модели
- •Работа модели
- •Исследование
- •Заключение
Элементы модели
На пунктах приема будет создаваться очередь, для имитации которой использован элемент queue.
Для имитации непосредственно процесса приема изделий использован элемент delay.
По результатам контроля некоторые изделия будут признаны браком. Для отбраковки используется элемент selectOutPut.
Свойства каждого из элементов представлены в таблице 8.
Таблица 8 – Элементы пунктов приема и их свойства.
Элемент |
Свойства |
Значения свойств |
|
Класс заявки: Вместимость: |
Product Максимальная |
|
Класс заявки: Время задержки: Вместимость: Действие при выходе: |
Product exponential(1/timePriemIzd) kolPunPriem kolPriemIzd++; |
|
Выход true выбирается: Вероятность [0..1]: Действие при выходе (false):
|
С заданной вероятностью. 1- procBrackPriem entity.sign1 = 2; brakPriemIzd++; |
Код свойства «Действие при выходе» элемента delay введен для подсчета количества kolPriemIzd принятых всего изделий.
Код свойства Действие при выходе (false) элемента selectOutPut считает количество brakPriemIzd забракованных изделий и полю entity.sign1 присваивает 2 – признак брака в изделии.
Имитация склада готовых изделий
Для имитации склада готовых изделий использован элемент sink со следующими свойствами:
Имя: ГотИзделия
Класс заявки: Product
Действие при выходе: kolGotIzd++;
ostGotBlock1 = gotBlock1 - kolGotIzd - zamBlock1;
ostGotBlock2 = gotBlock2 - kolGotIzd - zamBlock2;
ostGotBlock3 = gotBlock3 - kolGotIzd – zamBlock3.
Код свойства Действие при выходе введен для счета количества kolGotIzd готовых изделий, Кроме того, ведется счет готовых для сборки блоков, то есть изготовленных цехами и проверенных на постах контроля, но не использованных для сборки изделий блоков п отипам ostGotBlock1…ostGotBlock3 на текущее модельное время.
Имитация склада бракованных блоков
Для того, чтобы вести раздельный учет забракованных блоков на постах контроля цехов и забракованных на стендах контроля и пунктах приема изделий полю entity.sign1 присваиваются признаки 1 и 2.
Если брак блока был выявлен сразу, то есть на посту контроля блоков, то пускать такой блок на перепроверку не имеет смысла. Но если блок был забракован уже в собранном изделии, то, возможно, дело не в блоке, а в особенности изделия или других блоков. Для другого изделия такой блок может подойти. Такие блоки отмечаются как однажды забракованные с помощью entity.isBraked==true и снова отправляются на пост контртроля блоков.
Если блок забракован дважды, то он отправляется на склад бракованных блоков.
Элементы модели
Для разделения бракованных блоков используется элемент selectOutPut. Свойства элементов представлены в таблице 9.
Таблица 9 – Элементы склада бракованных блоков и их свойства.
Элемент |
Свойства |
Значения свойств |
|
Выход true выбирается: Условие:
|
При выполнении условия. entity.sign1 == 1
|
|
Выход true выбирается: Условие:
|
При выполнении условия. entity.isBraked==true |
|
Использовать: Условие 0: Действие при выходе 0: Условие 1: Действие при выходе 1: Условие 2: Действие при выходе 2: |
Условия. entity.numBLBrak1 == 1 entity.isBraked=true entity.numBLBrak2 == 1 entity.isBraked=true entity.numBLBrak3 == 1 entity.isBraked=true |
|
Класс заявки: Действие при входе: |
Product if (entity.numBLBrak1 == 1) {allBrakBlock1++;} if (entity.numBLBrak2 == 1) {allBrakBlock2++;} if (entity.numBLBrak3 ==1 ) {allBrakBlock3++;} |
|
Класс заявки: Действие при входе: |
Product if (entity.numBLBrak1 == 1) {allBrakBlock1++;} if (entity.numBLBrak2 == 1) {allBrakBlock2++;} if (entity.numBLBrak3 == 1) {allBrakBlock3++;} |