Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

мод сис / V.Boev-GPSSvsAnyLogic

.pdf
Скачиваний:
88
Добавлен:
11.04.2015
Размер:
9.01 Mб
Скачать

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

Для задания исходных данных — времени подготовки заготовок — использована дискретная функция 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) ; Сред-

нее время изготовления одной детали, мин

81

2.1.1.6. Проведение исследований

Полагаем, что вы ввели программу модели, исправили ошибки и выполнили указанное количество прогонов модели. Фрагмент отчѐта приведен ниже.

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 также не изменится.

Замечание. Если вы вместо 1000 укажите 100 предварительных прогонов и запустите модель, то получите тот же результат.

2.1.2. Решение обратной задачи

Целью обратной задачи является определение среднего времени на изготовление какого-то количества деталей. Для проверки рабо-

82

тоспособности модели возьмѐм количество деталей, полученных в результате решения прямой задачи, т.е. Det = 9.

2.1.2.1. Особенности построения программы модели

Модель для решения обратной задачи приведена ниже.

; Модель процесса изготовления деталей. Обратная задача

;Имитация выполнения 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

; Брак на пункт контроля

TRANSFER

,Met2

; Готовые детали

; Сегмент имитации работы пункта контроля

Sboi QUEUE

Kont

 

; В очередь на пункт контроля

SEIZE

Kontr

; Занять пункт контроля

DEPART

Kont

 

; Покинуть очередь на пункт

контроля

 

 

 

ADVANCE

(Exponential(23,0,Tk)); Окончательный

контроль

 

 

 

RELEASE

Kontr

; Освободить пункт контроля

TRANSFER

q4_,,EndOper ; В окончательный брак

TEST E

P1,1,EndOper ; Если второй раз, то в

окончательный брак

 

 

ASSIGN

1,2

; Код 2 в Р1-деталь пойдѐт второй

раз

 

 

 

Met1 TRANSFER

,(Met1+P2)

TRANSFER

,Oper1

; Повторно на 1-ю операцию

TRANSFER

,Oper2

; Повторно на 2-ю операцию

TRANSFER

,Oper3

; Повторно на 3-ю операцию

EndOperTERMINATE

; Счет брака

; Сегмент завершения моделирования и расчета результатов

Met2 TEST L X$Prog,TG1,Met3 ; Если условие выполня-

ется, то

83

SAVEVALUE Prog,TG1 ; X$Prog=TG1 счетчику за-

вершений

 

 

Met3 SAVEVALUE NDet+,1

; Счет количества готовых

деталей

 

 

TEST E

X$NDet,Det,Ter1 ; Если готово Det дета-

лей, зафиксировать один прогон

TEST E

TG1,1,Met4 ; Если в счетчике завершений

1, то расчет результатов моделирования

SAVEVALUE Brak,(N$EndOper/X$Prog) ; Количество забракованных деталей, шт.

SAVEVALUE DoljaBrak,(X$Brak/(X$Brak+Det); Общая доля брака

SAVEVALUE DoljaDet,(Det/(X$Brak+Det)) ; Доля готовых деталей

SAVEVALUE Brak,(INT(X$Brak)) ; Количество забра-

кованных деталей (целое), шт.

SAVEVALUE TDet,(((AC1-X$AC2)/X$Prog)/60); Сред-

нее время изготовления Det деталей, час

SAVEVALUE SDet,((X$TDet/Det)#60); Среднее время изготовления одной детали, мин

SAVEVALUE AC2,AC1; Время предварительных прого-

нов

SAVEVALUE X$Prog,0 ; Обнуление ячейки X$Prog

Met4 SAVEVALUE NDet,0

; Обнуление X$NDet

TERMINATE 1

;

Из счѐтчика завершений минус 1

Ter1 TERMINATE

;

Вывод вспомогательных транзактов

START

1000,NP;

Число предварительных прогонов

модели

 

 

 

RESET

 

;

Сброс статистики

START

16641

;

Число основных прогонов модели

В приведенной программе модели для решения обратной задачи в целях сокращения исключѐн текст до части, имитирующей выполнение 3-й операции, так как он такой же, как и в программе модели для решения прямой задачи. Единственное отличие состоит в том, что в исходные данные следует добавить команду для задания количества деталей, которые нужно изготовить:

Det EQU

9

; Количество деталей, которые нужно

изготовить

 

 

Округление до целого количества забракованных деталей производится после расчѐта доли готовых и забракованных деталей. Если иначе, то расчѐт долей будет некорректным.

84

В программе модели прямой задачи годные детали после выполнения 3-й операции подсчитывались. Имитирующие их транзакты уничтожались:

EndOper1

TERMINATE

; Счѐт готовых деталей

В программе модели обратной задачи годные детали нужно отправить в сегмент организации завершения моделирования. Для этого приведенный только что блок счѐта готовых деталей заменѐн следующим (в тексте программы выше он выделен жирным):

TRANSFER ,Met2

; Готовые детали

Сегмент имитации работы пункта контроля остаѐтся неизменным. Остановимся на сегменте завершения моделирования и расчета результатов.

Сохраняемая ячейка NDet служит для счѐта текущего количества изготовленных деталей. Как только выполняется условие X$NDet = Det, фиксируется один прогон модели. Det — переменная пользователя, которой задаѐтся количество деталей, время подготовки которых нужно определить.

Вам уже известно, что модельное время предварительных прогонов не должно учитываться при расчѐте среднего времени изготовления 9 деталей. Поэтому оно запоминается в сохраняемой ячейке X$AC2, а при расчте вычитается из AC1:

SAVEVALUE TDet,(((AC1-X$AC2)/X$Prog)/60) ; Среднее время изготовления Det деталей, час

2.1.2.2. Проведение исследований

Фрагмент отчѐта приведен ниже:

SAVEVALUE

RETRY

VALUE

PROG

0

16641.000

BRAK

0

3.000

DOLJABRAK

0

0.279

DOLJADET

0

0.721

TDET

0

7.266

SDET

0

48.443

В результате решения обратной задачи получим, что Det 9 деталей будут изготовлены цехом за TDet = 7,266 часа, относительная доля которых составит DoljaDet = 0,721, а среднее время изготовления одной детали SDet = 48,443 мин. При этом будет за-

85

браковано Brak = 3 детали, относительная доля которых составит

DoljaBrak = 0,279.

Замечание. Если вы замените 1000 предварительных прогонов на 100 и запустите модель, то получите:

SAVEVALUE

RETRY

VALUE

PROG

0

16641.000

BRAK

0

3.000

DOLJABRAK

0

0.278

DOLJADET

0

0.722

TDET

0

7.256

SDET

0

48.374

Видно, что результаты моделирования изменились незначительно. Но если эти изменения для вас несущественны, можно оставить указанное число предварительных прогонов модели в дальнейших исследованиях.

2.1.2.3.Проведение экспериментов

Вглаве 1 был проведен дисперсионный анализ с имитационной моделью, предназначенной для решения прямой задачи. Здесь же мы проведѐм дисперсионный анализ с моделью, решающей обратную задачу.

Исследовать влияние качества q1, q2 , q3 , q4 выполнения опера-

ций на время изготовления D деталей. Значения уровней факторов приведены в табл. 2.2.

 

 

 

 

 

Таблица 2.2

 

 

 

 

 

 

Уровни

 

 

Факторы

 

факторов

q1

q2

 

q3

q4

Нижний

0,1

0,15

 

0,1

0,2

Верхний

0,25

0,35

 

0,2

0,9

Результаты моделирования необходимо получить с точностью ε = 1 мин и доверительной вероятностью α = 0,99. Но поскольку остаѐтся условие определения относительного числа подготовленных деталей, то количество прогонов остаѐтся равным 16641, что и в модели для решения прямой задачи.

Некоторые особенности построения для такого случая модели были изложены в п. 2.1.2.1. Однако показатели, которые там определялись в дисперсионном анализе, не были временными. А это является существенным в построении сегмента организации завершения моделирования.

86

Поскольку результатом моделирования является оценка математического ожидания времени TDet изготовления Det деталей, то в ее вычислении используется абсолютное модельное время АС1 (системный числовой атрибут). При проведении дисперсионного анализа встроенный генератор эксперимента имеет две команды START, а между ними — команда RESET. Команда RESET не влияет на абсолютное модельное время. Поэтому АС1 будет суммой абсолютного модельного времени предварительных прогонов до установившегося режима, обозначим его АС2, и абсолютного модельного времени, пусть АС3, основных прогонов, в ходе которых собирается интересующая нас статистика. Нам для расчетов нужно АС3. Для его получения в программу введены строки:

SAVEVALUE AC3,(AC1-X$AC2)

SAVEVALUE AC2,AC1

После предварительных прогонов в ячейке X$Prog сохранится указанное в первой команде START количество прогонов. Эта ячейка используется в первой строке рассматриваемого сегмента и еѐ содержимое должно быть равным нулю. В противном случае модель будет работать неверно. Для предотвращения ошибки введена строка:

SAVEVALUE X$Prog,0

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

Проведите эксперимент. Как проводится дисперсионный анализ, вы уже знаете. Теме не менее, установите необходимые данные эксперимента согласно рис. 2.2. Укажите число предварительных прогонов 1000 вместо 100, установленных по умолчанию.

Результаты эксперимента показаны на рис. 2.3. Видно, что все четыре фактора существенные. Наибольшее влияние на функцию отклика оказывает фактор В, что вполне логично, так как из первых трѐх он имеет наибольший верхний уровень, т. е. наибольшую долю брака. Наименьшую значимость имеет фактор С, что также объясняется более низким значением доли брака.

Измените непосредственно в процедуре запуска сгенерированного Plus-эксперимента количество предварительных прогонов с 1000 на 100 и запустите модель. Вы получите практически те же самые результаты, например, Grand Mean = 9,006 вместо 9,017.

87

Рис. 2.2. Диалоговое окно (заполненное) Screening Experiment

Generator (Генератор отсеивающего эксперимента)

Рис. 2.3. Результаты отсеивающего эксперимента

88

2.2. Модель в AnyLogic

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

исходные данные; подготовка заготовки; операция 1; операция 2; операция 3;

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

2.2.1. Исходные данные. Использование массивов

Для ввода исходных данных используем элементы Параметр. Идентификаторы возьмѐм те же (кроме времени моделирования и количества прогонов модели), что и в GPSS-модели, только без знака подчѐркивания.

1.Выполните команду Файл/Создать/Модель на панели инструментов.

2.В поле Имя модели диалогового окна Новая модель вве-

дите Изготовление_в_цехе_деталей. Выберите каталог, в

котором будут сохранены файлы вашей модели. Щелкните кнопку

Далее.

3.На открывшейся второй странице Мастера создания мо-

дели выберите Начать создание модели «с нуля». Щелкните кнопку Далее.

4.В Палитре выделите Презентация.

5.Перетащите элемент Скруглѐнный прямоугольник в

нужное место.

6.Перетащите элемент text и на странице Основные панели

Свойства в поле Текст: введите Исходные данные.

7. В Палитре выделите Основная. Перетащите элементы Параметр на элемент с именем Исходные данные. Разместите их так, как показано на рис. 2.4. Значения свойств установите согласно табл. 2.3. На рис. 2.4, как вы, наверное, уже заметили, два элемента Параметр отличаются от остальных. Они используются для ввода данных табл. 2.1 как одномерных массивов.

89

Рис. 2.4. Размещение элементов Параметр для ввода исходных данных

 

 

 

 

 

Таблица 2.3

 

 

 

 

 

 

 

 

Элементы и их свойства

 

 

Параметр

 

Параметр

Имя

Тип

Значение

Имя

Тип

Значение

по умолчанию

по умолчанию

 

 

 

 

Tn

double

35

Tk1

double

4

T1

double

30

Tk2

double

5

T2

double

25

Tk3

double

15

T3

double

35

Tk

double

8

q1

double

0.12

врМод

double

480

q2

double

0.15

колПрог

double

16641

q3

double

0.10

 

 

 

q4

double

0.80

 

 

 

Создайте размерности массивов. В данном случае они одинаковые. Элементов в одной строке табл. 2.1 шесть. Предположим, что число видов заготовок может увеличиться до 10. Значит размерность одного массива 10 элементов.

1. Щѐлкните правой кнопкой мышки в панели Проекты и в контекстном меню выберите Размерность.

90