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

Номера строк Описание строк Соответствующие этапы перемещений грузовиков
  Требование симуляции модели
Сегмент объявлений 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
  Переезд из C в A CAMOVE
  Возвращение в цех 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: