Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gpss.doc
Скачиваний:
5
Добавлен:
01.04.2025
Размер:
816 Кб
Скачать
☆

Лабораторная работа

ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ НА ЯЗЫКЕ GPSS

Порядок проведения работы

  1. Получить у преподавателя задание на имитационное моделирование.

  2. Разработать имитационную модель.

  3. Занести в отчет разработанную имитационную модель и полученные результаты моделирования.

1. Разработка модели «Моделирование работы транспортного цеха» в среде gpss World

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

Транспортный цех объединения обслуживает три филиала: А, В и С. Грузовики перевозят изделия из А в В и из В в С, возвращаясь затем в А без груза. Погрузка в А занимает 20 мин, переезд из А в В длится 30 мин, разгрузка и погрузка в В – соответственно по 20 мин, переезд в С - 30 мин, разгрузка в С - 20 мин и переезд в А - 20 мин. Если к моменту погрузки в А и В отсутствуют изделия, грузовики уходят дальше по маршруту. Погрузки и разгрузки осуществляются на отдельных терминалах, при этом разгружаться/нагружаться в одно время может только одна машина. Соответственно грузовики, пришедшие в момент, когда терминал занят, становятся в очередь. Изделия в А выпускаются партиями по 1000 шт. через 20±3 мин, в В - такими же партиями через 20±5 мин. На линии работает 12 грузовиков, каждый перевозит 1000 изделий. В начальный момент все грузовики находятся в А.

Требуется смоделировать работу транспортного цеха объединения в течение 1000 ч. Определить частоту пустых перегонов грузовиков между А и В, В и С и сравнить с характеристиками, полученными при равномерном начальном распределении грузовиков между этапами погрузки в филиалах А и В.

1.2. Уточнение условия задачи

Договоримся о ряде используемых соглашений:

  1. Будем выражать все интервалы времени в минутах. Таким образом, время моделирования будет составлять 60000 мин.

  2. Так как изделия и в А, и в В выпускаются одинаковыми партиями по 1000 штук, а грузовики перевозят ровно 1000 изделий, то будем считать, что филиалы выпускают партии изделий, а грузовик может перевезти за раз 1 партию.

1.3. Описание моделируемой системы

1.3.1. Сегменты модели

Модель транспортного цеха состоит из следующих сегментов:

1) Сегмент объявлений SAVEVALUE–сущностей и присвоений им начальных значений.

В модели используются следующие SAVEVALUE–сущности:

Таблица 1.

SAVEVALUE–сущности, используемые в модели

Наименование SAVEVALUE–сущности

Описание SAVEVALUE–сущности

AQUEUE

Содержит в себе количество партий изделий, накопленных к настоящему моменту на складе в филиале A. Если на складе нет ни одной партии, то проезжающие мимо грузовики пропускают этап погрузки в филиале A.

BQUEUE

То же, только для филиала B.

EMPTY

В данной сущности производится подсчет пустых перегонов грузовиков на дорогах из A в B и из B в C.

MOVES

В данной сущности накапливается общее число перегонов грузовиков между филиалами A и B, а также между B и C.

2) Сегмент, отвечающий за создание партий изделий в цехе А.

В данном сегменте с заданным интервалом времени 20±3 мин создаются транзакции типа А. Перед их уничтожением увеличивается на 1 значение в AQUEUE.

3) Сегмент, отвечающий за создание партий изделий цехе В.

В данном сегменте с заданным интервалом времени 20±5 мин создаются транзакции типа В. Перед их уничтожением увеличивается на 1 значение в BQUEUE.

4) Сегмент, в котором создаются и двигаются по своим маршрутам грузовики.

В данном сегменте в начальный момент времени создаются 12 грузовиков, которые сразу же начинают свое следование по бесконечному замкнутому маршруту АВСА... Этапы перемещений грузовиков см. в соответствующем разделе.

5) Таймер (отсчитывает время моделирования — 60000 мин). После сигнализирования таймера имитация модели прекращается.

1.3.2. Типы транзакций

В модели используются транзакции следующих типов:

  1. Транзакции типа А (партии изделий, создаваемые в филиале А).

  2. Транзакции типа В (партии изделий, создаваемые в филиале В).

  3. Транзакции типа T (от англ. trucks, грузовики, перевозящие партии изделий).

Каждому грузовику после его создания назначается целочисленный параметр BUSY (начальное значение 0), который показывает, загружен (1) или пуст (0) грузовик. Данные сведения используются в пунктах разгрузки в филиалах В и С.

1.3.3. Этапы перемещений грузовиков

Маршрут грузовиков (в пределах одного цикла) состоит из следующих этапов:

Таблица 2.

Этапы перемещений грузовиков

Наименование этапа

Описание этапа перемещения

ALOAD

На данном этапе производится погрузка в грузовик партии деталей, выпущенной в филиале А. Погрузка длится 20 мин. Если грузовик приходит в момент, когда терминал ATERMINAL занят, то он становится в очередь QATERMINAL. Перед началом погрузки на единицу уменьшается значение, сохраняемое в сущности AQUEUE. После окончания погрузки грузовику присваивается статус «загружен» (значение параметра BUSY становится равным 1). Если на момент прибытия грузовика на складе в филиале A нет ни одной партии деталей, грузовик переходит к этапу ABTEST.

ABTEST

На данном этапе производится определение, пуст ли грузовик. Если он пуст, то увеличивается на 1 значение сущности EMPTY. В противном случае грузовик отправляется на следующий этап.

ABMOVE

На данном этапе происходит перегон грузовика из филиала A в филиал В. Перегон занимает 30 мин. Перед началом перегона наращивается значение, сохраняемое в сущности MOVES. После окончания перегона грузовик переходит к следующему этапу.

BUNLOAD

Если грузовик загружен, на данном этапе происходит его разгрузка в филиале B. В противном случае грузовик переходит к следующему этапу. Если загруженный грузовик приходит в момент, когда терминал разгрузки BTERMINAL1 занят, то он становится в очередь QBTERMINAL1. Разгрузка длится 20 мин. После окончания разгрузки грузовику присваивается статус «пуст» (параметр BUSY становится равным 0).

BLOAD

На данном этапе производится погрузка в грузовик партии деталей, выпущенной в филиале B. Погрузка длится 20 мин. Если грузовик приходит в момент, когда терминал загрузки BTERMINAL2 занят, то он становится в очередь QBTERMINAL2. Перед началом погрузки на единицу уменьшается значение, сохраняемое в сущности BQUEUE. После окончания погрузки грузовику присваивается статус «загружен» (значение параметра BUSY становится равным 1), Если на момент прибытия грузовика на складе в филиале B нет ни одной партии деталей, грузовик переходит к следующему этапу.

BCTEST

На данном этапе производится определение, пуст ли грузовик. Если он пуст, то наращивается значение сущности EMPTY. В противном случае грузовик отправляется на следующий этап.

BCMOVE

На данном этапе происходит перегон грузовика из филиала B в филиал C. Перегон занимает 30 мин. Перед началом перегона наращивается значение, сохраняемое в сущности MOVES. После окончания перегона грузовик переходит к следующему этапу.

CUNLOAD

Если грузовик загружен, на данном этапе происходит его разгрузка в филиале C. В противном случае грузовик переходит к следующему этапу. Если загруженный грузовик приходит в момент, когда терминал CTERMINAL занят, то он становится в очередь QCTERMINAL. Разгрузка длится 20 мин. После окончания разгрузки грузовику присваивается статус «пуст» (параметр BUSY становится равным 0).

CAMOVE

На данном этапе происходит перегон грузовика из филиала C в филиал A. Перегон занимает 20 мин. После окончания перегона грузовик переходит к этапу ALOAD и начинается новый виток перемещений грузовика.

1.4. Моделирующая программа на языке GPSS

1.4.1. Блок-диаграмма модели в символике языка GPSS

В сегменте 1 происходит инициализация SAVEVALUE-сущностей со значением 0.

Рисунок 2 – Блок-диаграмма сегментов 2,3,5

Рисунок 3 – Блок-диаграмма сегмента 4

1.4.2. Описание текста моделирующей программы

В следующей таблице приводится описание определенных строк программы (* обозначает любую цифру):

Таблица 3.

Описание текста моделирующей программы

Номера строк

Описание строк

Соответствующие этапы перемещений грузовиков

100

Требование симуляции модели

—

Сегмент объявлений SAVEVALUE-сущностей

1**

Объявление и инициализация SAVEVALUE -сущностей

—

Сегмент создания изделий в цехе A

2**

Создание партий изделий в цехе A, наращивание значения AQUEUE, уничтожение партий изделий

—

Сегмент создания изделий в цехе B

3**

Создание партий изделий в цехе B, наращивание значения BQUEUE, уничтожение партий изделий

—

Сегмент создания и перемещения грузовиков

4**

Создание грузовиков, назначение им параметра BUSY, распределение их по филиалам

—

500-530

Задержка в цехе A: погрузка

ALOAD

540-570

Переезд из A в B

ABTEST, ABMOVE

600-620

Задержка в цехе B: разгрузка

BUNLOAD

630-660

Задержка в цехе B: погрузка

BLOAD

670-695

Переезд из B в C

BCTEST, BCMOVE

700-720

Задержка в цехе C: разгрузка

CUNLOAD

730

Переезд из C в A

CAMOVE

800

Возвращение в цех A (к этапу ALOAD)

—

Сегмент-таймер

9**

Осуществляет остановку процесса имитации по прошествии 60000 мин

—

1.4.3. Замечания по поводу равномерного распределения грузовиков между филиалами

Приведем различия в программах для случаев, когда все грузовики изначально находятся перед этапом погрузки в филиале A и когда они равномерно распределены между филиалами A и B (точнее, между этапами погрузки в этих филиалах). Для этого следует изменить начало кода, принадлежащего сегменту 4 (создание и перемещение грузовиков), а именно, те строки, которые нумеруются с 4:

; Создание грузовиков

400 GENERATE ,,,12

410 ASSIGN BUSY,0

Равномерное распределение грузовиков можно смоделировать следующим образом:

Отдельная генерация грузовиков для филиалов А и В (по 6 грузовиков на каждый филиал):

; Создание грузовиков

; Для филиала А

400 GENERATE ,,,6

410 ASSIGN BUSY,0

420 TRANSFER ,ALOAD

; Для филиала В

430 GENERATE ,,,6

440 ASSIGN BUSY,0

450 TRANSFER ,BLOAD

1.4.4. Текст моделирующей программы на языке GPSS

100 SIMULATE

;*****************************************************

; Объявление SAVEVALUE-сущностей

110 INITIAL X$AQUEUE,0

120 INITIAL X$BQUEUE,0

130 INITIAL X$EMPTY,0

140 INITIAL X$MOVES,0

;*****************************************************

; Создание изделий в цехе A

200 GENERATE 20,3

210 SAVEVALUE AQUEUE+,1

220 TERMINATE

;*****************************************************

; Создание изделий в цехе B

300 GENERATE 20,5

310 SAVEVALUE BQUEUE+,1

320 TERMINATE

;*****************************************************

; Создание грузовиков

400 GENERATE ,,,12

410 ASSIGN BUSY,0

; Задержка в цехе А

; Погрузка в цехе А

500 ALOAD TEST G X$AQUEUE,0,ABTEST

510 SAVEVALUE AQUEUE-,1

511 QUEUE QATERMINAL

512 SEIZE ATERMINAL

513 DEPART QATERMINAL

520 ADVANCE 20

525 RELEASE ATERMINAL

530 ASSIGN BUSY,1

; Переезд из А в B

540 ABTEST TEST E P$BUSY,0,ABMOVE

550 SAVEVALUE EMPTY+,1

560 ABMOVE SAVEVALUE MOVES+,1

570 ADVANCE 30

; Задержка в цехе B

; Разгрузка в цехе B

600 BUNLOAD TEST E P$BUSY,1,BLOAD

601 QUEUE QBTERMINAL1

602 SEIZE BTERMINAL1

603 DEPART QBTERMINAL1

610 ADVANCE 20

615 RELEASE BTERMINAL1

620 ASSIGN BUSY,0

; Погрузка в цехе B

630 BLOAD TEST G X$BQUEUE,0,BCTEST

640 SAVEVALUE BQUEUE-,1

641 QUEUE QBTERMINAL2

642 SEIZE BTERMINAL2

643 DEPART QBTERMINAL2

650 ADVANCE 20

655 RELEASE BTERMINAL2

660 ASSIGN BUSY,1

; Переезд из B в C

670 BCTEST TEST E P$BUSY,0,BCMOVE

680 SAVEVALUE EMPTY+,1

690 BCMOVE SAVEVALUE MOVES+,1

695 ADVANCE 30

; Задержка в цехе C

; Разгрузка в цехе C

700 CUNLOAD TEST E P$BUSY,1,CAMOVE

701 QUEUE QCTERMINAL

702 SEIZE CTERMINAL

703 DEPART QCTERMINAL

710 ADVANCE 20

715 RELEASE CTERMINAL

720 ASSIGN BUSY,0

; Переезд из C в A

730 CAMOVE ADVANCE 20

; Возвращение в цех А

800 TRANSFER ,ALOAD

; Таймер

900 GENERATE 60000

910 TERMINATE 1

1.4.5. Используемые операторы

SIMULATE - начальная карта программы, если разработчик намерен выполнить прогон модели. Если эта карта отсутствует, то интерпретатор проверяет правильность записи модели на языке GPSS, но прогона модели не выполняет.

INITIAL X$PER,0 – задаем начальное значение величины PER равное 1

GENERATE 30,5,,8 - генерация 8 транзактов, интервалы времени между появлениями транзактов распределены равномерно в диапазоне [30-5, 30+5].

SAVEVALUE PER+,1 - увеличение текущего значения сохраняемой величины PER на 1.

TERMINATE 3 - удаление транзакта из системы, при этом содержимое итогового счетчика уменьшается на 3 единицы, моделирование заканчивается, если содержимое счетчика станет равным или меньше нуля.

ASSIGN ATT,0 – замена текущего значения параметра транзакта ATT на значение 0.

TEST E P$ATT,1,MET - если значение параметра транзакта ATT равно 1, то данный транзакт перейдет на следующий блок, иначе - в блок MET

TEST G P$ATT,0,MET - если значение параметра транзакта ATT больше чем 0, то данный транзакт перейдет на следующий блок, иначе - в блок MET.

QUEUE AA1 - оператор организации очереди, длина очереди AA1 увеличивается на единицу.

DEPART AA1 - то же, но длина очереди уменьшается на единицу.

SEIZE A1 - занятие устройства A1 приходящим на его вход транзактом; если устройство занято, то транзакт задерживается в очереди к этому устройству.

ADVANCE A,B - задержка транзакта на время, определенное содержимым полей A и B, смысл величин, записываемых в этих подполях, такой же, как и в операторе GENERATE.

RELEASE A1 - освобождение устройства A1 обслуженным транзактом.

TRANSFER ,MET - безусловная передача транзакта в блок MET.

1.4.6. Запуск программы

FileNewModel

Запуск на имитацию: CommandCreate Simuation

CommandStartStart 1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]