Используются специальные алгоритмы, позволяющие вырабатывать случайные реализации потоков событий и моделировать процессы функционирования обслуживающих систем. Далее осуществляется многократное воспроизведение, реализация случайных процессов обслуживания и статистическая обработка на выходе - оценка показателей качества обслуживания.
Разработчик конструирует модель из блоков, прибегая, как правило, к наглядной форме ее отображения в виде блок-схемы. Для удобства графического представления модели каждый блок GPSS имеет принятое стандартное обозначение. Построенная схема является одновременно программой на языке GPSS. Для ее ввода в ЭВМ необходимо последовательность блоков представить в виде списка операций, добавив к названиям блоков требуемые операнды.
блоки модели
СВЯЗАННЫЕ СЧА:
N$j - общее число входов в блок j ;
W$j - текущее число транзактов в блоке j.
1.2.Транзакты
Функционирование объекта отображается в модели в виде перемещения транзактов от блока GENERATE в блок TERMINATE через промежуточные блоки. Транзакты, или сообщения, являются абстрактными подвижными элементами, которые могут моделировать различные объекты реального мира: сообщения, программы, транспортные средства, людей и т.п. Перемещаясь между блоками модели, транзакты вызывают (и испытывают) различные действия. Возможны их задержки в некоторых точках модели, изменения маршрутов и направлений движения, расщепление транзактов на несколько копий и т.п. С каждым транзактом связан упорядоченный набор данных. Он включает номер транзакта; номер блока, в котором в данный момент находится транзакт; номер следующего блока; время перехода в следующий блок; приоритет, характеризующий очередность обработки транзактов в определенных случаях; а также набор параметров, с помощью которых каждому транзакту можно присвоить числовые значения, выражающие желаемые свойства или характеристики моделируемых объектов: вес, скорость, объем, цвет, время обработки и т.п.
МОДЕЛИРУЮЩИЕ БЛОКИ:
Основные блоки:
GENERATE A,B,C,D,E
Вводит транзакты в модель.
А - среднее значение интервала времени (необязательный операнд);
В - разброс или модификатор среднего значения (необязательный операнд);
С - время появления первого транзакта (необязательный операнд);
D - общее число генерируемых транзактов (необязательный операнд);
Е - уровень приоритета каждого транзакта (необязательный операнд).
TERMINATE А
Удаляет активный транзакт из процесса моделирования.
А – величина уменьшения счетчика завершения (необязательный операнд).
ADVANCE А,В
Задерживает транзакт.
А - среднее время задержки;
В - разброс или модификаторсреднего значения (необязательный операнд).
Блоки, изменяющие значения параметров транзактов:
ASSIGN А,В,С
Изменяет значение параметра транзакта.
А - номер изменяемого параметра;
В - новое значение параметра;
С – номер функции (необязательный операнд).
INDEX А,В
Обновляет параметр активного транзакта.
А - номер параметра;
В – числовое значение, которое должно быть добавлено к содержимому параметра.
MARK А
Записывает в параметр активного транзакта значение абсолютного модельного времени.
А – номер параметра (необязательный операнд).
PRIORITY А,В
Устанавливает приоритет активного транзакта.
А – новое значение приоритета;
В – BU (необязательный операнд).
Блоки, управляющие движением транзактов:
GATE 0 А,В
Изменяет маршрут движения транзактов в зависимости от состояния некоторого объекта.
О - Условие в виде стандартного логического атрибута (FNV,FV, I, LS, LR, M, NI, NM, NU, SE, SF, SNE, SNF, SNV, SV,U);
А - номер проверяемого объекта;
B - номер блока перемещения транзакта в случае невыполнения условия (необязательный операнд).
LOOP А,В
Изменяет параметр и управляет местом назначения активного транзакта на основании результата.
А – параметр, содержащий число;
B – номер следующего блока, если число после уменьшения не ноль (необязательный операнд).
TEST 0 А,В,С
Сравнивает значения, обычно СЧА и управляет местом назначения активного транзакта, основываясь на результате сравнения.
О – оператор отношения (E, G, GE, L, LE, NE);
А – проверяемое значение;
B – контрольное значение;
С – номер блока назначения (необязательный операнд).
TRANSFER А,В,C,D
Обеспечивает переход активного транзакта к новому блоку.
А – режим (BOTH, ALL, PICK, FN, P, SBR,SIM) (необязательный операнд);
B - номер или метка блока (необязательный операнд);
C – номер или местоположение блока (необязательный операнд);
D –приращение номера блока для режима ALL (необязательный операнд).
Блоки, работающие с транзактами в списке пользователя:
LINK А,В,С
Управляет размещением активного транзакта в списке пользователя.
А - номер списка пользователя;
В – упорядочивание списка;
С – местоположение следующего блока (необязательный операнд).
UNLINK О А,В,С,D,E,F
Управляет удалением активного транзакта из списка пользователя.
О– оператор отношения (E, G, GE, L, LE, NE);
А – номер списка пользователя;
В – номер блока назначения для удаленных транзактов;
С – максимальное количество транзактов, которое можно удалить (необязательный операнд);
D – проверяемое значение (необязательный операнд);
E – контрольное значение (необязательный операнд);
F – номер блока (альтернативное место назначения для входящего транзакта) (необязательный операнд).
Блоки, связанные с трассировкой транзактов:
TRACE
Устанавливает индикатор трассировки активного транзакта.
UNTRACE
Сбрасывает индикатор трассировки активного транзакта.
Блоки, работающие с копиями транзактов:
ASSEMBLE А
Ожидает и уничтожает транзакты.
А – счетчик транзактов.
GATHER А
Накапливает транзакты, являющиеся членами семейства.
А - счетчик транзактов, которые должны быть накоплены.
MATCH А
Пара сопряженных блоков MATCH заставляет транзакты ожидать друг друга.
А – номер блока, который проверяется на наличие транзакта.
SPLIT А,В,С
Создает транзакты того же семейства, что и активный транзакт.
А – количество создаваемых транзактов;
В – номер блока (необязательный операнд);
С – номер параметра (необязательный операнд).
СВЯЗАННЫЕ СЧА:
A1 – указатель семейства активного транзакта;
MB$j – СЧА равен 1, если в блоке j находится транзакт, который принадлежит тому же семейству, что и активный;
MPj – разница между текущим значением абсолютного модельного времени и значением времени, записанным в параметре j;
М1 –время пребывания транзакта в системе;
Pj – значение параметра с номером j;
PR – приоритет активного транзакта;
XN1 - номер активного транзакта.
1.3. Списки
Списки относятся к элементам внутренней организации системы GPSS. Они представляют собой структуры данных, в которых размещается полная информация о транзактах. С помощью списков обеспечивается внутренняя логика работы моделирующей системы.
Существует несколько видов списков:
1) Список будущих событий
Список будущих событий содержит транзакты, которые смогут начать движение в модели в будущие моменты времени. Это те транзакты, для которых моменты начала движения определены в блоках GENERATE и ADVANCE.