Механики
Скачать 4.29 Mb.
|
TEST G Q1,5; если проверяемое условие «длина очереди 1 больше 5?» выполняется, то активный транзакт передается следующему оператору, в противном случае он блокируется до тех пор, пока условие не будет выполнено. 6.5.12. TRANSFER ( ПЕРЕДАТЬ ) Назначение оператора: передача транзакта в блок, отличный от последующего. Режимы использования оператора TRANSFER: 1) режим безусловной передачи; 2) режим статистической передачи; 3) режим BOTH (ОБА); 4) режим ALL (ВСЕ); 5) режим PICK (выборочный); 6) режим FN (функциональный); 7) режим P (параметрический); 8) режим SBR (подпрограммный); 9) режим SIM (одновременный). Далее рассматриваются только два первых режима, используемые ниже при построении GPSS-моделей. 1. Режим безусловной передачи Назначение оператора: безусловная передача транзакта в блок, отличный от последующего. Формат оператора: TRANSFER ,B Значения операндов: A – НЕ используется, что является признаком режима безусловной передачи; B – имя блока, к которому направляется активный транзакт. Пример: TRANSFER ,UZEL_3; всякий раз активный транзакт будет направляться к блоку с меткой UZEL_3. 2. Режим статистической передачи Назначение оператора: передача транзакта в один из блоков случайным образом. 278 Раздел 6. Имитационное моделирование Формат оператора: TRANSFER A,[B],C Значения операндов: A – частота (вероятность) передачи транзакта в блок C; B – имя блока B; [по умолчанию – Следующий по порядку блок]; C – имя блока C. Примечание . Частота (вероятность) передачи транзакта в операнде А может быть указана двумя способами: • в виде вероятности – дробного числа с десятичной точкой, принимающего значения строго меньше 1; • в виде целого положительного числа, принимающего значения от 0 до 1000 и интерпретируемого как доля от тысячи. Заметим, что значение операнда А, равное 1, будет соответствовать вероятности 0,001, а не 1, поскольку транслятор воспринимает любое целое число как долю от 1000. Следует также отметить, что транслятор не выдаст ошибку, если операнд А будет задан в виде числа с десятичной точкой, имеющего значение больше 1. В этом случае транслятор выделяет целую часть числа и интерпретирует её как долю от тысячи. Примеры: TRANSFER 250,UZEL_2,UZEL_3; активный транзакт с вероятностью 250/1000 = 0,25 будет направляться к блоку с меткой UZEL_3 и с вероятностью 0,75 – к блоку с меткой UZEL_2 . TRANSFER 25,UZEL_2,UZEL_3; активный транзакт с вероятностью 25/1000 = 0,025 будет направляться к блоку с меткой UZEL_3 и с вероятностью 0,975 – к блоку с меткой UZEL_2 . TRANSFER .95,,BOX7; активный транзакт с вероятностью 0,95 будет направляться к блоку с меткой BOX7 и с вероятностью 0,05 – к следующему по порядку блоку (по умолчанию). 6.5.13. PRIORITY ( НАЗНАЧИТЬ ПРИОРИТЕТ ) Назначение оператора: изменение уровня приоритета активного транзакта в процессе моделирования. Формат оператора: PRIORITY A,[B] Значения операндов: A – уровень приоритета, присваиваемый активному транзакту; B – может принимать только одно значение: BU (задает специальный режим, при котором активный транзакт помещается в список текущих событий позади транзактов с таким же приоритетом); [по умолчанию – Транзакт помещается перед транзактами с таким же приоритетом]. 6.5.14. PREEMPT ( ЗАХВАТИТЬ ) Назначение оператора: захват прибора вновь прибывшим Раздел 6. Имитационное моделирование 279 транзактом. Формат оператора: PREEMPT A,[B],[C],[D],[E] Значения операндов: A – идентификатор (число или имя) прибора, подлежащего захвату; B – определяет условие, при котором разрешён захват прибора: PR – приоритетный режим: захват разрешён, если активный транзакт имеет более высокий приоритет, чем обслуживаемый транзакт; [по умолчанию – Режим прерывания: захват разрешён, если обслуживаемый транзакт не является захватчиком]; C – метка блока, в который направляется транзакт, вытесненный из прибора более высокоприоритетным транзактом; [по умолчанию – Транзакт помещается в СБС]; D – номер параметра вытесненного транзакта, в который записывается оставшееся время обслуживания в приборе, если транзакт направляется к блоку С; используется совместно с операндом C; E – может принимать только одно значение: RE, означающий режим удаления: вытесненный транзакт удаляется из состязания за прибор; [по умолчанию – вытесненный транзакт не удаляется из состязания за прибор]. Примечание . Следует обратить внимание, что приоритетный захват возможен только для прибора, но невозможен для многоканального устройства. 6.5.15. RETURN ( ВЕРНУТЬ ) Назначение оператора: освобождение прибора активным транзактом и выбор нового транзакта. Формат оператора: RETURN A Значения операнда: A – идентификатор (число или имя) прибора, подлежащего освобождению. Примечание . В прибор новый транзакт выбирается из списков прибора в строго определённой последовательности: сначала выбирается транзакт из списка отложенных прерываний; если он пуст, то транзакт выбирается из списка прерываний и, наконец, если и список прерываний пуст, то транзакт выбирается из списка задержки. 6.5.16. LOGIC ( ИЗМЕНИТЬ ) Назначение оператора: изменение состояния логического ключа. Формат оператора: LOGIC X A Значения операндов: A – идентификатор (число или имя) логического ключа; X – логический оператор, указывающий тип операции изменения 280 Раздел 6. Имитационное моделирование состояния: R – сбросить (выключить), S – установить (включить), I – инвертировать. 6.5.17. GATE ( ВПУСТИТЬ ) Назначение: изменение маршрута движения транзактов в зависимости от состояния некоторого объекта. Формат оператора: GATE X A,[B] Значения операндов: A – идентификатор (число или имя) проверяемого объекта; B – номер блока, к которому переходит транзакт, если объект находится в положении, не отвечающем условию проверки; [по умолчанию – Проверка происходит в режиме отказа]; X – условный оператор, содержащий условие, которому должен удовлетворять объект для успешного завершения теста; может принимать множество значений, в соответствии с которыми проводится проверка состояния некоторого объекта (прибора, многоканального устройства, логического ключа), в том числе: • FV – прибор доступен; • FNV – прибор недоступен; • I – прибор в прерванном состоянии; • NI – прибор в непрерванном состоянии; • U – прибор используется; • NU – прибор не используется; • SE – многоканальное устройство пусто; • SNE – многоканальное устройство не пусто; • SF – многоканальное устройство заполнено; • SNF – многоканальное устройство не заполнено; • SV – многоканальное устройство доступно; • SNV – многоканальное устройство не доступно; • LS – логический ключ установлен (включен); • LR – логический ключ сброшен (выключен). 6.5.18. MARK ( ОТМЕТИТЬ ) Назначение оператора: запись значения абсолютного времени в качестве одного из параметров активного транзакта (отметка транзакта). Формат оператора: MARK [A] Значения операндов: A – номер параметра, в который записывается значение таймера абсолютного времени; [по умолчанию – Значение абсолютного времени помещается на место ранее записанного времени входа транзакта в модель]. Раздел 6. Имитационное моделирование 281 6.5.19. ASSIGN ( НАЗНАЧИТЬ ) Назначение оператора: назначение и изменение параметра транзакта. Формат оператора: ASSIGN A,B,[C] Значения операндов: A – номер модифицируемого параметра и вид модификации: присвоение, увеличение (+), уменьшение (-); B – величина, используемая для модификации; C – номер функции для модификации. Примеры: ASSIGN 4,10.5; параметру с номером 4 присваивается значение 10.5. ASSIGN 4+,10.5; значение параметрас номером 4 увеличивается на величину 10.5. ASSIGN 4-,10.5; значение параметрас номером 4 уменьшается на величину 10.5. ASSIGN 3+,5,7; 1) рассчитывается значение функции 7; 2) это значение умножается на 5; 3) целая часть этого произведения прибавляется к значению параметра 3 вошедшего (активного) транзакта. ASSIGN 3+,5,FN7; в отличие от предыдущего примера сначала рассчитывается значение функции 7, целая часть которого будет использоваться как C, то есть номер функции. ASSIGN 3+,5,Erl; 1) рассчитывается значение функции с именем Erl; 2) это значение умножается на 5; 3) целая часть этого произведения прибавляется к значению параметра 3 вошедшего (активного) транзакта. Три последних примера показывают, что в качестве операнда С может использоваться номер функции или её имя (без FN или FN$). Если же операнд С содержит FN или FN$, то это означает косвенное опреде- ление номера функции для модификации. 6.5.20. TABULATE ( ТАБУЛИРОВАТЬ ) Назначение оператора: занесение значений в таблицу. Формат оператора: TABULATE A,[B] Значения операндов: A – имя таблицы, в которую заносится соответствующее значение и которая должна быть описана с помощью оператора описания (команды) TABLE; B – весовой коэффициент; [по умолчанию – Коэффициент равен 1]. При попадании активного транзакта в оператор TABULATE обновляется статистика, связанная с таблицей, указанной в операнде A (см. пример в п.6.6.4). 282 Раздел 6. Имитационное моделирование 6.6. Команды GPSS World 6.6.1. Общие сведения В GPSS World используются 24 команды (операторов описания и операторов управления). Для построения и реализации имитационных моделей простейших систем и сетей массового обслуживания в среде GPSS World оказывается достаточным использование немногим более половины из всех команд, которые по функциональному назначению могут быть разбиты на две группы: 1. Операторы (команды) описания: FUNCTION, TABLE, QTABLE, STORAGE, VARIABLE. 2. Операторы (команды) управления: CLEAR, CONTINUE, HALT, INCLUDE, REPORT, RESET, SHOW, START, STEP, STOP. Команды управления используются в процессе моделирования для интерактивного взаимодействия пользователя с GPSS-моделью и управления процессом моделирования. Команды, как и операторы блоков, могут быть без операндов или содержать от 1 до 5-и операндов, некоторые из которых могут быть необязательными. В последнем случае значения необязательных операндов принимаются по умолчанию. При изображении структуры оператора необязательные операнды заключены в квадратные скобки. Отсутствие обязательных операндов приводит к ошибке. 6.6.2. FUNCTION ( ФУНКЦИЯ ) Назначение: описание функции. Формат: <Имя> FUNCTION A,B Здесь: <Имя> – имя функции. Значения операндов: A – аргумент функции; B – задаёт тип функции и количество пар данных в виде: <тип функции><количество пар данных>, где <тип функции> может принимать следующие значения: C – непрерывная функция, D – дискретная функция, E – дискретная атрибутивно-значимая функция, L – списковая числовая функция, M – списковая атрибутивно-значимая функция; <количество пар данных> определяет количество пар данных (аргумента и соответствующего ему значения функции) в списке данных функции, который располагается после оператора с первой позиции новой строки и может занимать несколько строк; каждая пара данных определяет значение аргумента X и значение функции Y (или СЧА), разделённые запятой. Пример . При моделировании систем массового обслуживания функция типа С может использоваться для табличного представления Раздел 6. Имитационное моделирование 283 вероятностных законов распределения случайных величин. В частности, в предыдущих версиях GPSS для генерирования случайных чисел, распределённых по экспоненциальному закону, использовался табличный генератор, заданный в виде следующей функции: EXP1 FUNCTION RN100, C24 0,0/.1, .104/.2, .222/.3, .335/.4, .509/.5, .69/.6, .915/.7, 1.2/.75, 1.38/.8, 1.6/.84, 1.83/.88, 2.12/.9, 2.3/.92, 2.52/.94, 2.81/.95, 2.99/.96, 3.2/.97, 3.5/.98, 3.9/.99, 4.6/.995, 5.3/.998, 6.2/.999, 7/.9997, 8 Здесь: EXP1 – имя табличной функции, которое используется в СЧА класса FN при обращении к функции: FN$EXP1; RN100 – генератор равномерно распределённых случайных чисел с номером 100, используемый в качестве аргумента функции для вычисления значений экспоненциально распределённых случайных величин; путём изменения номера генератора равномерно распределённых случайных чисел (от 1 до 999) можно создавать множество генераторов экспоненциально распределённых случайных величин; C24 – тип функции – C, означающий, что значения функции для любого значения аргумента определяются с использованием линейной интерполяции; таблица содержит 24 пары значений аргумента и функции, причём каждая пара отделена от другой наклонной чертой. 6.6.3. STORAGE ( МНОГОКАНАЛЬНОЕ УСТРОЙСТВО ) Назначение: описание ёмкости многоканального устройства (памяти). Формат: <Имя> STORAGE A Здесь: <Имя> – имя многоканального устройства. Значения операнда: A – количество приборов (каналов) в многоканальном устройстве. 6.6.4. TABLE ( ТАБЛИЦА ) Назначение: описание таблицы, используемой в модели для накопле- ния частоты попадания некоторой случайной величины в заданные частот- ные интервалы и построения гистограммы плотности распределения. Формат: <Имя> TABLE A,B,C,D Здесь: <Имя> – имя таблицы (не более 32-х алфавитно-цифровых символов). Значения операндов: A – имя случайной величины (СЧА), значения которой должны учитываться в таблице; операнд А игнорируется дисперсионным анализом, но должен быть определен, когда используется блоками TABULATE; B – ширина первого частотного интервала; 284 Раздел 6. Имитационное моделирование C – ширина всех промежуточных частотных интервалов; D – количество частотных интервалов таблицы, включая левый и правый (целое положительное число). Пример: TU_5 TABLE M1,5,10,4 в таблице с именем TU_5 будет накапливаться частота попаданий значений резидентного времени транзактов в четыре (D=4) частотных интервала шириной 5 единиц времени для первого интервала и 10 – для остальных трёх интервалов: 0-5; 5-15; 15-25; 25-35; когда активный транзакт попадает в блок TABULATE TU_5, в соответствии с операндом А в команде TABLE, заданным в виде СЧА M1, вычисляется время нахождения этого транзакта в модели как разница между текущим моментом модельного времени и моментом поступления транзакта в модель; в зависимости от полученного значения резидентного времени прибавляется единица к накапливаемому значению соответствующего частотного интервала; для всех значений, превышающих правую границу последнего частотного интервала, единица добавляется в последний интервал. 6.6.5. QTABLE ( ТАБЛИЦА ОЧЕРЕДИ ) Назначение: описание таблицы очереди, используемой в модели для накопления частоты попадания времени нахождения транзакта в очереди (времени ожидания) в заданные частотные интервалы и построения гистограммы плотности распределения. Формат: <Имя> TABLE A,B,C,D Здесь: <Имя> – имя таблицы (не более 32-х алфавитно-цифровых символов), в которой будут накапливаться значения частот. Значения операндов: A – имя очереди, для которой формируется таблица; B – ширина первого частотного интервала; C – ширина всех промежуточных частотных интервалов; D – количество частотных интервалов таблицы, включая левый и правый (целое положительное число). Пример: Gis2u TABLE Stell,10,10,40 в таблице с именем Gis2u будет накапливаться частота попаданий значе- ний времени нахождения транзактов в очереди с именем Stell в сорока (D=40) частотных интервалах шириной по 10 единиц времени, то есть охватывается временной интервал от 0 до 400 единиц времени; значения, превышающие 400 единиц времени, попадут в последний интервал. 6.6.6. VARIABLE ( АРИФМЕТИЧЕСКАЯ ПЕРЕМЕННАЯ ) Назначение: описание арифметической переменной. |