Дёмина / Лабораторная работа2
.docxЛабораторная работа № 2
МОДЕЛИРОВАНИЕ ПРОЦЕССОВ С ВЕТВЛЕНИЯМИ И ЦИКЛАМИ
Подобно другим алгоритмическим языкам GPSS имеет средства для обеспечения ветвлений и циклов в маршрутах движения транзактов в соответствии с условиями задачи или в зависимости от складывающихся при выполнении программы условий.
Одним из блоков изменения маршрута движения транзактов является блок TRANSFER в различных вариантах. Чаще используются следующие варианты блока TRANSFER:
1 Безусловный переход. Поле операнда А пустое, а операндом В задается метка, куда должен быть передан транзакт. Метка - имя некоторого из блоков программы, к которому должен быть направлен транзакт из данного блока TRANSFER Таким образом. После такого типа блока транзакт в любом случае направляется в указанный полем В блок. Этот вариант блока TRANSFER можно использовать в программе для обхода некоторой последовательности блоков.
2. Вероятностный переход. В поле операнда А указывается вероятность Р, с которой транзакт переходит на метку, заданную операндом С, а с вероятностью (1 - Р) транзакт переходит на метку, заданную операндом В. При статистическом переходе в качестве очередного блока осуществляется вероятностный выбор одного из двух возможных блоков. Поле В может быть пустым, тогда альтернативным считается следующий блок..
3. Условный выбор. В этом случае в поле операнда А блока TRANSFER записывается слово BOTH. Транзакт пытается сначала перейти на метку, заданную операндом В, если же это невозможно, то на метку, заданную операндом С. Если переход ни в первом ни во втором варианте невозможен (например, из-за занятости устройства), то транзакт не продвигается по модели, оставаясь в блоке TRANSFER.
Блок TEST также изменяет маршрут движения. Изменение маршрута происходит в зависимости от сложившихся условий. Формат блока следующий:
TEST R A, B, C
Расширение R блока TEST конкретизирует проверяемое условие. Входящий в блок TEST транзакт является проверяющим. Проверка заключается в определении истинности отношения R, в котором участвуют операнды А и В (табл.1). Обычно операнды А и В представляют собой СЧА. В поле С может быть размещена метка. При истинном результате проверки условия проверяющий транзакт пропускается в следующий блок, при ложном - направляется в блок с меткой, указанной в поле C. Если в этом случае поле C является пустым, транзакт задерживается в блоке TEST до наступления момента, когда условие станет истинным.
Табл.1
R Отношение Пример с комментарием
G A больше; B TEST G C1,100,ALFA - если системное время С1 боль
ше 100, пропустить транзакт в следую щий
блок, в противном случае – отправить в
блок с меткой ALFA.
GE A больше TEST GE Q$och, BETA, 10, BETA - если длина оче
или равно B реди och, превышает 10, пропустить
транзакт в следующий блок, в противном
случае – отправить в блок с меткой BETA.
Е A равно B TEST E P1, P3 - если содержимое 1-го и 3-го
параметров равны, транзакт пропускается
в следующий блок, иначе – задерживается.
NE A не равно B TEST NE P1, P3 - если содержимое 1-го и 3-го
параметров не равны, транзакт пропускается
в следующий блок, иначе – задерживается
L A меньше; B TEST L Q1,5, LBL - если, чем длина первой очереди
меньше 5 то переход в следующий блок; в
противном -отправить в блок с меткой LBL.
LE A меньше TEST LE Q1, Q2 - транзакт будет задержан, пока
или равно B длина 1-ой очереди не станет меньше или
равна длине 2- ой очереди.
Блок GATE также обеспечивает возможность ветвления в маршруте движения транзакта. Дальнейший после блока GATE маршрут движения выбирается в зависимости от логических условий. Логическое условие представляет собой результат проверки состояния устройств, памятей, логических ключей, блоков синхронизации. Поле операции блока GATE дополняется расширением R, которое конкретизирует проверяемое условие (табл.2). Формат блока следующий:
GATE R A, B
Операнд A содержит номер или имя объекта, для которого осуществляется проверка. Операнд B - метка для перехода (альтернативный выход), которая может отсутствовать. Если условие истинно (условие выполняется), проверяющий транзакт пропускается в следующий блок программы.. При ложном результате проверки условия транзакт направляется на метку перехода. Если поле операнда B пусто, блок GATE задержит транзакт до выполнения условий.
Табл.2.
R Проверяемое условие
NU Устройство, указанное в операнде А, свободно
U Устройство, указанное в операнде А, занято
NI Устройство, указанное в операнде А, не прервано
I Устройство, указанное в операнде А, обслуживает прерывание
FV Устройство, указанное в операнде А, доступно
FNV Устройство, указанное в операнде А, не доступно
SE Многоканальное устройство, указанное в операнде А, пусто
SNE Многоканальное устройство, указанное в операнде А, не пусто
SF Многоканальное устройство, указанное в операнде А, заполнено
SN Многоканальное устройство, указанное операндом А, не заполнено
S Многоканальное устройство, указанное в операнде А, доступно
SN Многоканальное устройство, указанное операндом А, не доступно
.
Например:
GATE SF MKU1,ALFA - если многоканальное устройство MKU1 заполнено,
транзакт передается в следующей блок; в противном случае - на
метку ALFA.
GATE FV, 1 - транзакт задерживается в данном блоке, пока устройство с но
мером 1 не станет доступно.
Блок LOOP используется для организации циклов, когда транзакт должен многократно пройти через одну и ту же последовательность блоков. Начальный блок этой последовательности обязательно снабжается меткой (это начало цикла). Последним блоком цикла является блок LOOP следующего формата: LOOP А. В
В поле А размещается параметр. (номер или имя параметра). После каждого повтора при появлении транзакта в блоке LOOP значение этого параметра уменьшается на 1. Если параметр обнулился, транзакт из блока LOOP направляется ниже, в следующий за блоком LOOP блок. Если параметр больше нуля, транзакт из блока LOOP направляется в начало цикла, т.е. на блок с меткой указанной в поле С.
Например, если деталь обрабатывается последовательно на пяти станках с одинаковым временем обработки, фрагмент моделирующей программы может быть представлен так:
. . .
; NACH - метка начала цикла
ASSIGN 1,5 ; в 1-й параметр записали число 5;
NACH SEIZE P1 ; занять устройство с номером 5 (затем - 4,3,2,1);
advancе 10, ; обработка детали
RELEASE P1 ; освободить устройство
LOOP 1, NACH ; конец цикла
Здесь блок SEIZE P1 обеспечивает занятие (блок RELEASE P1- освобождение) 5-го, затем – 4-го, 3-го ит.д., устройства при каждом следующем проходе транзакта. Таким образом, используя СЧА, параметры транзактов в логических условиях, можно разветвлять маршруты транзактов. Кроме того, можно строить процесс обработки различным образом в зависимости от приоритета транзакта. Как упоминалось, приоритет может быть назначен сразу при генерации транзакта блоком GENERATE. При этом в качестве приоритета может быть назначено целое число до 127 (по умолчанию устанавливается приоритет 0). В дальнейшем приоритет можно изменить, повысив или понизив его. Делается это в блоке PRIORITY. При прохождении через такой блок транзакт приобретает приоритет, который указан в поле операнда A этого блока.
Порядок выполнения работы.
-
Разработать схему и программу модели с использованием блоков перехода. Проанализировать результаты модельного эксперимента.
-
Оформить и сдать отчет по работе.
Задания для лабораторной работы № 2
1. В аудиторию с интервалом 14-30 мин. Приходят пользователи ПК. Зарегистрировавшись у диспетчера в течение 5-10 мин., они занимают один из компьютеров, размещенных в аудитории с вероятностями 0.5; 0.3 и 0.2, соответственно. Пользователи занимают компьютеры от 40 до 70 мин. Распределение интервалов времени – равномерное. Возникают ли очереди при обслуживании? Сравнить загруженность компьютеров в течении8 часов.
2. В гавань входят корабли двух типов. Время появления кораблей равномерно распределено в интервале 20+-6 час. Половина кораблей (первого типа) приходят для ремонта. Время ремонта составляет от 1 до 2 суток (равномерное распределение). Второй тип кораблей приходит к другому причалу для разгрузки-погрузки, которая выполняется в течение 6-12 час. (равномерное распределение). Проанализировать работы двух причалов порта за неделю.
3. В парикмахерской работает 1 мужской и 2 дамских мастера. Время обслуживания мужчин составляет 20-40мин., женщин – 30-60мин. Если очередь к мужскому мастеру составляет более 2-х человек, клиент уходит. Женщины уходят не обслуженными, если в очереди более 4-х человек. Клиенты-мужчины составляю 40% в равномерном потоке посетителей, время между появлением которых от 5 до 13мин. Рабочий день составляет 8 час. Какое количество клиентов теряет парикмахерская?
4. С 5 до 22 час. на автовокзале появляются пассажиры, желающие воспользоваться услугами 12-местного автобуса-такси. Промежуток между появлением пассажиров равномерно распределен в интервале 5+-3мин. Автобус отправляется каждый час. Следует ли увеличить частоту рейсов?
5. Поток из 500 заготовок, поступающих с интервалом 10-20 сек. равновероятно распределяются на 2 линии обработки. На каждой из линий деталь проходит 4-х кратную обработку длительностью по 3-5 сек. на одном станке и 3-хкратную обработку длительностью по 2-4 сек. на втором станке.
Через каждый час первый станок первой линии выходит из строя на 0.5 часа. В этой ситуации к обработке деталей первой линии подключается резервный станок такого же типа.
Интервалы времени имеют равномерное распределение.
6. 1000 деталей поступают с интервалом 142 сек. и обрабатываются одним рабочим по пяти последовательно идущим друг за другом операциям с длительностью 2-4 сек. каждая. Затем детали разделяются на два потока, поступающих к контролерам, обрабатывающим их со временем 5-10 сек. Через 2 часа один из двух контроллеров заканчивает свою работу и его поток деталей направляется в оставшемуся контроллеру.
Контрольные вопросы
-
В чем отличие при применении блока TRANSFER в случае вероятностного и условного перехода?
-
В чем отличие при применении блока TRANSFER в случае равновероятного перехода и перехода при использовании варианта BOTH.?
3. Какие действия выполняются при попадании транзакта в блок
TRANSFER BOTH, ALFA, BETA ?
4. Какие действия выполняются при попадании транзакта в блок
TEST NE P1, 3, ALFA ?
5. Какие действия выполняются при попадании транзакта в блок
TEST E P1,100, ALFA ?
6. Как организовать цикл с количеством повторов, равным значению
второго параметра транзакта?
-
Какие действия выполняются при попадании транзакта в блок
GATE FV 1, ААА ?
8. . Какие действия выполняются при попадании транзакта в блок
GATE U Р1, ВВВ ?
9. Как изменить маршрут транзакта, если его приоритет, в отличие от
других транзактов, равен 3?
-
Как направить транзакт, претендующий на устройство 1, при занятости
устройства 1 к устройству 2?
