Задание на лабораторные работы, страница 14
Описание файла
Документ из архива "Задание на лабораторные работы", который расположен в категории "". Всё это находится в предмете "моделирование систем" из 8 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "моделирование систем" в общих файлах.
Онлайн просмотр документа "Задание на лабораторные работы"
Текст 14 страницы из документа "Задание на лабораторные работы"
Рассмотрим пример применения одного блока LINK.
Пример 3. Пусть в условии примера 2 транзакты направляются блоком TEST в очередь второго устройства, из которой они помещаются в список пользователя.
Решение примера 3 приводится как программа 3.
Программа 3 |
simulate 10 generate 20,2 20 assign 13,7 30 test G c1,70,que2 40 queue 1; 1-я очередь 60 chan1 seize 1; 1-е устройство с меткой chan1 70 depart 1 80 advance 19,7 90 release 1 150 terminate 1 200 que2 queue 2; 2-я очередь с меткой que2 205 link waz1,fifo 210 seize 2; 2-е устройство 220 depart 2 230 advance 19,7 240 release 2 250 terminate start 100 end |
Формат записи блока LINK:
205 link waz1,fifo
В поле <A> задается имя списка пользователя (waz1), куда помещаются вошедшие в блок LINK транзакты. Поле <B> определяет дисциплину вошедших в список пользователя транзактов (в программе используется FIFO — вошедший транзакт помещается в конец списка пользователя). Поля <A> и <B> блока LINK являются обязательными. Блок LINK будет блокировать устройство 2, т.е. второе устройство будет не задействованным.
Задание к примеру 3. Написать программу с применением блока UNLINK так, чтобы 2-е устройство было задействовано. В созданной программе изменить поле <B> блока TEST: 30, 50, 90. Изменить также число завершений: 50, 75, 230. Применить следующий формат записи блока UNLINK:
unlink <A>,<B>,<C>
Поле <A> — имя списка. Поле <B> — метка блока, куда будут направляться транзакты из списка. Поле <C> — положительное число.
Лабораторная работа №9
Создание и управление групп транзактов GPSS/PC:
блоки JOIN, REMOVE, EXAMINE
Цель работы: Изучение возможностей управления группами транзактов с помощью блоков JOIN, REMOVE, EXAMINE.
Блок JOIN включает в группу сообщение (режим сообщения) или числовое значение (числовой режим). Присоединение к группе происходит по дисциплине FIFO.
Блок REMOVE производит удаления соответствующих групп. Блок REMOVE может работать в режиме сообщения или в числовом режиме.
Блок EXAMINE предоставляет пользователю возможность выбора пути, по которому проследует сообщение в зависимости от состояния членов заданной группы. Блок EXAMINE также может быть использован в режиме сообщения или в числовом режиме.
Пример 1. Смоделировать процесс параллельного обслуживания заявок, которые поступают в систему со временем 42 мин. Первый прибор обслуживает 100 заявок со временем 72 мин., второй прибор обслуживает все остальные поступающие в систему заявки со временем 31 мин. Применить блок JOIN в числовом режиме и режиме сообщения. В числовую группу ввести: параметр транзакта под номером 23, в который записаны числа 34, 21, 2221, 39. В группу сообщений ввести количество транзактов, поступающих на первое устройство.
Программа решения примера 1 приводится как программа 1.
Программа 1 | |
simulate 10 generate 4,2 15 savevalue mmm1,gn$gr1; 16 savevalue mmm2,gt$gr2 20 split 1,chan2 25 assign 23,34 30 join gr2 35 join gr1,p23 36 join gr1,21 37 join gr1,2221 38 join gr1,39 40 seize 1 | 50 advance 7,2 60 release 1 66 savevalue mmm3,gn$gr1 70 transfer ,exit 80 chan2 seize 2 90 advance 3,1 100 release 2 110 savevalue mmm4,gn$gr1 150 terminate 200 exit terminate 1 start 100 end |
В программе 1 блок JOIN используется в режиме сообщения (под номером 30) и в числовом режиме (под номерами 35, 36, 37, 38).
Блоки SAVEVALUE сохраняют СЧА, заданные в полях <B>: gt$gr2 — текущее число членов в группе с именем gr2, gn$gr1 — текущее число членов в числовой группе с именем gr1.
Формат записи блока JOIN в режиме сообщения:
-
join gr2
Блок JOIN под номером 30 имеет одно заполненное поле <A>, которое задает имя группы — gr2. Операнд поля <A> может быть е положительным целым, СЧА, СЧА с параметром.
Формат записи блока JOIN в числовом режиме:
35 join gr1,p23
36 join gr1,21
37 join gr1,2221
38 join gr1,39
Для каждой записи блока JOIN в поле <A> указывается имя группы. В поле <B> задается присоединяемое к группе числовое значение: число 34 через параметр 23, числа 21, 2221, 39.
Два блока TERMINATE используются для вывода заявок (транзактов) из системы: блок под номером 200 связан со счетчиком числа завершений через оператор START 100, блок под номером 150 выводит из системы транзакты, обслуженные во втором устройстве.
Каждый из блоков SAVEVALUE заносит в отводимую ячейку (mmm1, mmm2, mmm3, mmm4) соответственно: число членов в группе gr1, число транзактов в группе сообщения gr2, число членов в группе gr1, число членов в группе gr1.
Результаты моделирования представлены в файле стандартного отчета 1.
GPSS/PC Report file REPORT.GPS. (V 2, # 37349) 12-07-2001 13:51:16 page 1 START_TIME END_TIME BLOCKS FACILITIES STORAGES FREE_MEMORY 0 724 21 2 0 87152 LINE LOC BLOCK_TYPE ENTRY_COUNT CURRENT_COUNT RETRY 10 1 GENERATE 182 0 0 15 2 SAVEVALUE 182 0 0 16 3 SAVEVALUE 182 0 0 20 4 SPLIT 182 0 0 25 5 ASSIGN 182 0 0 30 6 JOIN 182 0 0 35 7 JOIN 182 0 0 36 8 JOIN 182 0 0 37 9 JOIN 182 0 0 38 10 JOIN 182 81 0 40 11 SEIZE 101 1 0 50 12 ADVANCE 100 0 0 60 13 RELEASE 100 0 0 65 14 SAVEVALUE 100 0 0 70 15 TRANSFER 100 0 0 80 CHAN2 SEIZE 182 0 0 90 17 ADVANCE 182 0 0 100 18 RELEASE 182 0 0 110 19 SAVEVALUE 182 0 0 150 20 TERMINATE 182 0 0 200 EXIT TERMINATE 100 0 0 FACILITY ENTRIES UTIL. AVE._TIME AVAILABLE OWNER PEND INTER RETRY DELAY 1 101 0.994 7.13 1 200 0 0 0 81 2 182 0.766 3.05 1 0 0 0 0 0 XACT_GROUP GROUP_SIZE RETRY POSITION 0 0 GR2 82 0 NUMERIC_GROUP GROUP_SIZE RETRY GR1 4 0 SAVEVALUE VALUE RETRY MMM1 +4 0 MMM2 +82 0 MMM3 +4 0 MMM4 +4 0 |
Файл стандартного отчета 1 |
В файле отчета группа сообщений (под именем gr2) следует за стандартным полем POSITION. Поле XACT GROUP определяет имя или номер объекта типа "группа сообщений". В поле GROUP SIZE — размер группы — указывается число транзактов, которое осталось в группе в конце моделирования (это число равно 82). Поле RETRY определяет число транзактов, ожидающих наступления специальных условий, связанных с состоянием этой группы транзактов (в поле стоит 0, т.к. специальных условий не создавалось). Информация о числовой группе следующая. Поле NUMERIC GROUP определяет имя числовой группы (в файле отчета имя gr1). Поле GROUP SIZE определяет количество числовых значений, которые содержатся в числовой группе в конце моделирования. Это количество равно 4 (в группу занесены четыре числа). Поле RETRY определяет число транзактов, ожидающих наступления специальных условий, связанных с состоянием числовой группы (специальных условий не создавалось, поэтому в поле RETRY находится 0).
Задание примеру 1. Создать числовую группу со следующими СЧА: Р3—параметр транзакта под номером 3, С1 — текущее значение условного времени моделирования, FT1, FT2 — среднее время использования 1-го и 2-го устройств, соответственно. Вычислить переменную со значением и занести ее в числовую группу.
Пример 2. Числовой режим блока REMOVE. Смоделировать процесс обслуживания заявок, которые поступают в систему каждые 8 минут. Обслуживание происходит в первом устройстве со временем 72 мин. и обслуживаются 100 заявок. Сформировать числовую группу из чисел 21, 39, 44, Р23 — параметр со значением 15. Предусмотреть удаление из группы числа 21, параметра Р23 (число 15) и перевод заявок во второй прибор, который обслуживает заявки также со временем 72 мин.
Программа решения примера 2. приводится как программа 2.
Программа 2 | |
simulate 10 generate 8 20 assign 23,15 30 join gr1,p23 40 join gr1,21 50 join gr1,39 60 join gr1,44 70 queue 1 80 chan1 seize 1 90 depart 1 100 advance 7,2 110 release 1 120 remove gr1,,p23,,,chan2 | 130 savevalue mmm1,gn$gr1 140 remove gr1,,21 150 savevalue mmm2,gn$gr1 160 transfer ,exit 170 chan2 queue 2 180 seize 2 190 depart 2 200 advance 7,2 210 release 2 220 terminate 250 exit terminate 1 start 100 end |
В группу под именем gr1 заносятся числа 21, 39, 44, 15 (через параметр под номером p23) с помощью блоков join (под номерами 30, 40, 50, 60).
Удаление чисел 21, 15 (как числовое значение параметра p23) производится блоками remove (под номерами 120 и 140).
Блоки savevalue в различных частях программы сохраняют в ячейках стандартный числовой атрибут gn$gr1 — значение числовой группы под именем gr1.
Формат записи блоков REMOVE:
120 remove gr1,,p23,,,chan2
Блок REMOVE в числовом режиме удаляет числовые значения из соответствующих групп.
В поле <A> указывается имя группы (в программе gr1), из которой удаляется числовое значение. В числовом режиме поле <B> пусто. В поле <C> задается число (числовое значение параметра p23), входящее в числовую группу (в программе группа gr1). Поля <D>, <E> пусты. В поле <F> задается метка блока (в программе chan2), в который отправляются часть транзактов, вошедших в блок REMOVE. В некоторых версиях GPSS использование поля <F> может быть только при выполнении ряда условий по отношению рассматриваемой группы.
140 remove gr1,,21