Алгоритм перемещения транзактов – алгоритм моделирования в системе gpss
Процесс моделирования ДС во времени проводится по шагам и начинается с установки в ноль таймера (счетчика модельного времени) и генерации (порождения) транзактов в блоках GENERATE (присваивание значений СЧА транзакту выполняется автоматически в соответствии с описанием работы этого блока).
На каждом шаге все транзакты, имеющие одинаковое минимальное модельное время (равное нулю в начальный момент — при запуске модели на выполнение, или минимальное время, равное текущему модельному времени — в процессе моделирования), помещаются в список текущих событий, а транзакты с временем больше минимального — в список будущих событий. Транзакты во всех списках сортируются, во-первых, по возрастанию времени, а во-вторых, при равных значениях времени (транзакты с списке текущих событий всегда имеют равные времена) — по убыванию приоритета транзакта. Затем производится просмотр списка текущих событий, в результате которого выбирается один транзакт, имеющий минимальное время и максимальный приоритет. Этот транзакт становится активным (текущим транзактом) и алгоритм моделирования «пытается» переместить его в следующий блок модели. Если транзакт может войти в следующий блок, выполняется программа, соответствующая данному блоку. Если дальнейшее продвижение транзакта невозможно, то он перестает быть активным, что может случиться по следующим причинам:
• из-за задержки в блоке ADVANCE, тогда транзакт переписывается в список будущих событий;
• из-за блокировки в одном из блоков SEIZE, TEST, GATE, тогда транзакт остается в списке текущих событий, но из-за блокировки переводится в пассивное состояние до снятия условия блокировки;
• из-за невыполнения условия синхронизации в одном из блоков ASSEMBLE, GATHER, MATCH , тогда транзакт переписывается в список синхронизации и возвращается в список текущих событий при выполнении условий синхронизации.
Это продолжается до тех пор, пока возможно активизировать какой-либо транзакт из списка текущих событий и продвигать его по модели. Если дальнейшее продвижение транзактов окажется невозможным либо из-за их блокировки, либо из-за отсутствия транзактов в списке текущих событий, то алгоритм моделирования переходит к следующему шагу.
Далее на каждом новом шаге моделирования из списка будущих событий в список текущих событий переписываются транзакты, имеющие минимальное время задержки, и на эту величину минимального интервала времени увеличивается текущее время моделирования. Таким образом будущее становится настоящим.
Моменты появления событий в системе, а следовательно, и приращения времени моделирования на каждом шаге являются случайными величинами. Такой принцип моделирования во времени называется моделированием по событиям.
Примечания
1. В отличие от принципа событийного моделирования существует моделирование по интервалам времени, при котором на каждом шаге время изменяется на одно и то же постоянное значение, являющееся минимальной единицей модельного времени, выбираемой в зависимости от степени детализации моделируемого процесса.
2. Достоинства принципа моделирования по интервалам времени – простота реализации и наглядность работы алгоритма моделирования – проявляются только на учебных задачах, в которых моделируемая система насчитывает небольшое число обслуживающих устройств и изменение состояний такой системы происходит относительно часто. В этом случае в алгоритме событийного моделирования затраты на поиск очередного события могут существенно превзойти выигрыш во времени, получаемый за счет сокращения числа шагов, выполняемых в алгоритме моделирования по интервалам времени.
3. В GPSS, как и в большинстве систем моделирования ДС, реализуется принцип событийного моделирования, обеспечивающий сокращение компьютерного (или процессорного) времени включением в процесс имитации только тех моментов времени работы моделируемой ДС, в которые происходят события.
После изменения текущего модельного времени процедура выбора активного транзакта и его перемещения по блокам модели продолжается.
Таким образом, по существу алгоритм моделирования состоит в просмотре содержимого списков, в сортировке этих списков, в перемещении транзактов из одного списка в другой и в перемещение транзактов списка текущих событий по блокам моделей.
Важным для алгоритма моделирования является также формирование признака или критерия останова процесса моделирования. Система моделирования прекращает работу (останавливается), если возникает одна из следующих ситуаций:
А. Ситуации, приводящие к аварийному останову:
1. В МОДЕЛИ НЕТ НИ ОДНОГО ТРАНЗАКТА или
2. СПИСОК ТЕКУЩИХ СОБЫТИЙ ПУСТ, А ОСТАЛЬНЫЕ ТРАНЗАКТЫ — в других списках — ЗАБЛОКИРОВАНЫ, т.е. не могут перемещаться по блокам модели, или
3. КОЛИЧЕСТВО ТРАНЗАКТОВ В МОДЕЛИ ПРЕВЫШАЕТ ДОПУСТИМОЕ, принятое по умолчанию – 100 или задаваемое исследователем в модели с помощью управляющего оператора REALLOCATE (ПЕРЕРАСПРЕДЕЛЯТЬ), располагаемого в начале описания модели и имеющего следующий формат
REA объект, количество, объект, количество, … , объект, количество
где объектами могут быть устройства FACILITY — (FAC,20), память STORAGE — (STO,20), функции FUNCTION- (FUN,20), очереди QUEUE — (QUE,35), логические ключи LOGIC — (LOG,100), таблицы TABLE — (TAB,15), переменные VARIABLE — (HSV,20), ячейки для записи чисел в форме с фиксированной точкой (FSV,100) или с плавающей точкой (FSV,100), транзакты (XAC,100).
Здесь в скобках указаны принятые сокращения наименований объектов и количество объекта данного типа, принимаемое в моделирующей системе по умолчанию.
Примечание
Ситуации 1 и 2 возникают, если модель содержит логические ошибки.
Ситуация 3 возникает часто при неверном соотношении интенсивности входных потоков и обслуживания транзактов в модели. Поэтому рекомендуется до начала моделирования на ЭВМ ориентировочно оценивать загрузку оборудования моделируемой системы и подобрать отношение «интенсивности входного потока к интенсивности обслуживания» не более 0.95.
Б. Нормальное завершение работы модели — счетчик числа завершений, задаваемый полем А управляющего оператора START A принимает значение 0 или меньше нуля.
Исходя из условия нормального завершения процесса моделирования, возможно задать два критерия останова:
1. ОСТАНОВ ПО КОЛИЧЕСТВУ ТРАНЗАКТОВ, ПРОШЕДШИХ ПО МОДЕЛИ. Это достигается тем, что во всех бло-ках TERMINATE А, участвующих в подсчете числа транзактов, проходящих по модели, задается значение А=1 и в процессе моделирования при входе транзакта в блок TERMINATE 1 содержимое поля А оператора STARТ А (счетчик числа завершений) уменьшается на 1. Процесс моделирования останавливается при нулевом значении счетчика числа завершений, т.е. после прохождения через все блоки TERMINATE 1 общего количества транзактов, равного числу А, записанному в поле управляющего оператора STАRT A.
2. ОСТАНОВ ПО ВРЕМЕНИ МОДЕЛИРОВАНИЯ
Это достигается тем, что в модели, во-первых, все блоки удаления транзактов имеют в поле А=0 (по умолчанию опускается, т.е. записывается блок TERMINATE без поля), и, во-вторых, добавляется еще один сегмент, содержащий только два блока – генерации и удаления транзактов, а счетчик числа завершений равен 1:
GENERATE ТМMAX
TERMINATE 1
START 1
где ТМMAX — максимальное время моделирования, по истечении которого генерируемый транзакт поступает в блок TERMINATE 1 и уменьшает значение поля А=1 оператора STARТ 1 до нуля. При этом останов системы моделирования происходит также по нулевому значению счетчика завершений, но при наступлении текущего времени моделирования, равного TMMAX. Очевидно, что при условии А больше 1 в операторе START A длительность времени моделирования будет равна А* ТМMAX.