- •Раздел 1. Основные понятия и определения.
- •1.1. Общее определение модели
- •1.2. Классификация моделей и моделирования
- •1.2.1. Классификация моделей и моделирования по признаку "характер моделируемой стороны объекта"
- •1.2.2. Классификация моделей и моделирования по признаку "характер процессов, протекающих в объекте"
- •1.2.3. Классификация моделей и моделирования по признаку "способ реализации модели"
- •1.3. Этапы моделирования
- •1.4. Адекватность модели
- •1.5. Требования, предъявляемые к моделям
- •Раздел 2. Имитационное моделирование
- •2.1. Применение имитационного моделирования
- •2.2. Имитация и ее разновидности
- •2.3. Виды имитационного моделирования
- •2.4. Области применения
- •2.5. Популярные системы имитационного моделирования
- •Раздел 3. Модели и методы моделирования
- •3.1. Характеристика физического (натурного) и математического моделирования.
- •3.2. Характеристика тмо, основные понятия и определения. Формула Литтла.
- •3.3. История развития Теории массового обслуживания.
- •Раздел 4. Система компьютерного моделирования gpss World
- •4.1 Основы построения системы моделирования gpss World
- •4.2 Синтаксис языка gpss
- •4.3. Объекты имитационной модели
- •4.4. Структура модели на gpss world
- •4.5. Транзакты - динамические объекты системы
- •4.6. Системные числовые атрибуты
- •4.7. Модельное время
- •4.8. Списки
- •4.9. Внутренняя организация gpss
- •4.10. Библиотечные генераторы случайных чисел
- •4.11. Запуск и завершение моделирования
- •4.12. Команды gpss
- •4.12.1. Команды описания и управления
- •4.2 Блоки, связанные с аппаратными объектами
- •4.3 Блоки, предназначенные для сбора статистических данных
4.3 Блоки, предназначенные для сбора статистических данных
Для занесения транзакта в очередь (точнее - регистрация статистики очереди, связанная с фиксацией момента поступления транзакта в очередь и увеличением ее длины) предназначен блок QUEUE (СТАТЬ В ОЧЕРЕДЬ).
Формат оператора:
QUEUE A,[B]
Значения операндов:
A - идентификатор (число или имя) очереди;
В - количество элементов, на которое должна увеличиться длина очереди; [по умолчанию - один].
Примеры:
QUEUE 3; присоединение транзакта к очереди с номером 3 и увеличение ее длины на 1 (по умолчанию).
UEUE Jeck,5; присоединение транзакта к очереди с именем Jeck и увеличение ее длины на 5.
Удаление транзакта из очереди (точнее - регистрация статистики очереди, связанная с уменьшением ее длины и фиксацией момента удаления транзакта из очереди с целью определения времени ожидания) производится блоком DEPART (ПОКИНУТЬ ОЧЕРЕДЬ).
Формат оператора:
DEPART A, [В]
Значения операндов:
A - идентификатор (число или имя) очереди;
В - количество элементов, на которое должна уменьшиться длина очереди; [по умолчанию - один].
Примеры:
DEPART 3; удаление транзакта из очереди с номером 3 и уменьшение ее длины на 1 (по умолчанию).
DEPART Jeck,5; удаление транзакта из очереди с именем Jeck и уменьшение ее длины на 5.
Блок TABULATE (ТАБУЛИРОВАТЬ) предназначен для занесения значений в статистическую таблицу, предварительно определенную оператором TABLE.
Формат оператора:
TABULATE A,[B]
Значения операндов:
A - имя таблицы, в которую заносится соответствующее значение и которая должна быть описана с помощью оператора описания (команды)
TABLE;
B - весовой коэффициент; [по умолчанию - Коэффициент равен 1].
При попадании активного транзакта в оператор TABULATE обновляется статистика, связанная с таблицей, указанной в операнде A.
4.4 Блоки, изменяющие маршрут
Назначение блока TEST (ПРОВЕРИТЬ) состоит в проверке значения (обычно СЧА) и передаче активного транзакта в блок, отличный от последующего, если указанное условие не выполняется.
Формат оператора:
TEST Х A,B,[C],
Значения операндов:
A - проверяемое значение;
B - контрольное значение;
C - имя (метка) блока назначения C;
[по умолчанию – Режим альтернативного выхода и проверяемое условие не выполняется, транзакт передается блоку, указанному в операнде С.
Когда транзакт пытается войти в блок TEST в режиме отказа (при отсутствии операнда С) и заданное условие не выполняется, транзакт блокируется до тех пор, пока условие не будет выполнено.
Примеры:
TEST LE Q1,5,Otk_1; если проверяемое условие «длина очереди 1 меньше или равна 5?» выполняется, то активный транзакт передается следующему оператору, в противном случае он направляется к оператору с меткой Otk_1.
TEST G Q1,5; если проверяемое условие «длина очереди 1 больше 5?» выполняется, то активный транзакт передается следующему оператору, в противном случае он блокируется до тех пор, пока условие не будет выполнено.
Назначение оператора TRANSFER (ПЕРЕДАТЬ): передача транзакта в блок, отличный от последующего.
Режимы использования оператора TRANSFER:
- режим безусловной передачи;
- режим статистической передачи;
- режим BOTH (ОБА);
- режим ALL (ВСЕ);
- режим PICK (выборочный);
- режим FN (функциональный);
- режим P (параметрический);
- режим SBR (подпрограммный);
- режим SIM (одновременный).
Далее рассматриваются только два первых режима, используемые ниже при построении GPSS-моделей.
Режим безусловной передачи
Назначение оператора: безусловная передача транзакта в блок, отличный от последующего.
Формат оператора:
TRANSFER ,B
Значения операндов:
A - НЕ используется, что является признаком режима безусловной передачи;
B - имя блока, к которому направляется активный транзакт.
Пример:
TRANSFER ,UZEL_3; всякий раз активный транзакт будет направляться к блоку с меткой UZEL_3.
Режим статистической передачи
Назначение оператора: передача транзакта в один из блоков случайным образом.
Формат оператора:
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 - к следующему по порядку блоку (по умолчанию).
Назначение блока GATE (ВПУСТИТЬ): изменение маршрута движения транзактов в зависимости от состояния некоторого объекта.
Формат оператора:
GATE X A,[B]
Значения операндов:
A - идентификатор (число или имя) проверяемого объекта;
B - номер блока, к которому переходит транзакт, если объект находится в положении, не отвечающем условию проверки; [по умолчанию - Проверка происходит в режиме отказа];
X - условный оператор, содержащий условие, которому должен удовлетворять объект для успешного завершения теста; может принимать множество значений, в соответствии с которыми проводится проверка состояния некоторого объекта (прибора, многоканального устройства, логического ключа), в том числе:
FV - прибор доступен;
FNV - прибор недоступен;
I - прибор в прерванном состоянии;
NI - прибор в непрерванном состоянии;
U - прибор используется;
NU - прибор не используется;
SE - многоканальное устройство пусто;
SNE - многоканальное устройство не пусто;
SF - многоканальное устройство заполнено;
SNF - многоканальное устройство не заполнено;
SV - многоканальное устройство доступно;
SNV - многоканальное устройство не доступно;
LS - логический ключ установлен (включен);
LR - логический ключ сброшен (выключен).
