
- •Лекции по gpss
- •Блоки и транзакты
- •Транзакт входит в блок, функцией которого является удаление транзакта из модели.
- •Транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время.
- •Удаление транзактов из модели и завершение моделирования
- •Занятие и освобождение одноканального устройства
- •Когда транзакт поступает в устройство, он должен обслуживаться там некоторое время.
- •Сбор статистики
- •Управление продолжительностью моделирования
- •Логика работы интерпретатора
- •1. Он находится в каком-либо конкретном блоке.
- •2. Он находится (отмечен) в одном или нескольких цепях (списках) gpss.
- •1) Единица модельного времени определяется разработчиком модели, который задает все временные интервалы в одних и тех же, выбранных им, единицах;
- •Занятие и освобождение многоканального устройства (памяти)
- •Абсолютное и относительное время. Команды clear и reset
- •0 Относительное
- •Изменение значений параметров транзактов
- •Числовые и символьные имена. Команда equ
- •Блоки, изменяющие маршруты транзактов
- •Блок transfer
- •Блок test
- •Блок gate
- •Блок loop
- •Команды table и qtable. Таблицы. Блок tabulate
- •Сохраняемые величины и матрицы сохраняемых величин
- •Initial Xj, значение
- •Initial mXj( a,b), значение
- •Арифметические переменные. Команды variable (fvariable)
- •Генераторы случайных чисел
- •1. Разыгрывается случайное число, равномерно распределенное в диапазоне 0;1;
- •2. Полученное число преобразуется в эквивалентное ему значение, но уже принадлежащее интересующей нас выборке.
- •Функции gpssw. Команда function
- •Модель смо
- •Блоки для работы со списками пользователя
- •Моделирование сетей массового обслуживания
- •1,2 Узел – 1 канал,3 узел – 2 канала
- •1,2 Устройства – одноканальные, 3-4 канала
- •Моделирование захвата прибора
- •Логические переключатели
- •Булевские переменные. Команда bvariable
- •Обработка транзактов, принадлежащих одному ансамблю
Логика работы интерпретатора
Теперь рассмотрим более подробно логику работы интерпретатора GPSS.
В любой момент времени место транзакта может быть определено двояко:
1. Он находится в каком-либо конкретном блоке.
2. Он находится (отмечен) в одном или нескольких цепях (списках) gpss.
В GPSS World имеются 8 видов цепей:
цепь текущих событий (CURRENT Events Chain);
цепь будущих событий (Future Events Chain);
цепь задержки (Delay Chain); и др. цепи.
Первые два вида списков формируется интерпретатором всегда. Остальные списки организуются по мере необходимости и в количестве более одного.
В цепь текущих событий (ЦТС) включаются транзакты, продвижение которых планируется в текущий момент модельного времени. ЦТС формируется с учетом приоритетов транзактов: чем выше приоритет, тем ближе к началу ЦТС он находится. Т.е. ЦТС организуется в порядке убывания приоритетов транзактов, а в пределах каждого уровня приоритета - в порядке поступления транзактов.
Цепь будущих событий (ЦБС) включает в себя транзакты, планируемое время продвижения которых больше текущего времени, т.е. события, связанные с продвижением этих транзактов, должны произойти в будущем. Этот список организуется в порядке возрастания планируемого времени продвижения транзактов. Уровень приоритета не влияет на место транзакта в этой цепи.
В начальный момент времени в GPSS-модели нет ни одного транзакта. В процессе моделирования интерпретатор генерирует транзакты в определенные моменты времени в соответствии с теми логическими потребностями, которые возникают в моделируемой системе. Подобным же образом транзакты покидают модель в определенные моменты времени в зависимости от специфики моделируемой системы. В общем случае в модели одновременно существует большое число транзактов, однако в каждый момент времени симулятор осуществляет продвижение только какого-либо одного транзакта.
Если транзакт начал свое движение, он перемещается от блока к блоку по пути, предписанному блок-схемой. В тот момент, когда транзакт входит в некоторый блок, на исполнение вызывается подпрограмма интерпретатора, соответствующая типу этого блока, а после ее выполнения, при котором реализуется функция данного блока, транзакт "пытается" войти в следующий блок. Такое продвижение транзакта продолжается до тех пор, пока не произойдет одно из следующих возможных событий:
1) транзакт входит в блок TERMINATE;
2) транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время (блок ADVANCE);
3) транзакт "пытается" войти в следующий блок, однако блок "отказывается" принять его. В этом случае транзакт удаляется из ЦТС и помещается в цепь задержки, связанную с данным моделирующим элементом GPSS (например, с прибором TLG из предыдущего примера). С точки зрения пользователя он как бы остается в том блоке, где находился, и позднее будет повторять свою попытку войти в следующий блок. Когда условия в модели изменятся, такая попытка может оказаться успешной, и транзакт сможет продолжить свое перемещение по блок-схеме.
Если возникло одно из описанных выше условий, обработка данного транзакта прекращается, и начинается перемещение другого транзакта. Таким образом, выполнение моделирования интерпретатором продолжается постоянно.
Итак, логика работы интерпретатора состоит в следующем:
Активный транзакт продвигается по модели от блока к блоку.
Если приоритеты в модели у всех транзактов одинаковы, активным остается один и тот же транзакт, который продвигается в модели до момента задержки (причины задержки могут быть разными). В случае задержки интерпретатор начинает обрабатывать следующий транзакт из ЦТС до тех пор, пока этот транзакт не встретит задержку. Таким образом, интерпретатор обрабатывает последовательно все транзакты из ЦТС.
Если приоритеты в модели разные, то в ЦТС могут попасть транзакты, имеющие более высокий приоритет, чем у активного транзакта, и тогда происходит смена активного транзакта.
Когда в ЦТС не остается ни одного транзакта, которые могли бы быть продвинуты в модели в текущий момент модельного времени, интерпретатор изменяет модельное время так, чтобы оно стало равным планируемому времени движения первого транзакта в ЦБС. Этот, а также все другие транзакты, движение которых может быть возобновлено в тот же момент модельного времени, из ЦБС переносятся в ЦТС, где и размещаются в порядке убывания приоритета. Начинается новый просмотр ЦТС интерпретатором. Эта последовательность действий производится при каждом новом значении модельного времени до тех пор, пока не будет выполнено условие окончания моделирования.
Проходя через блоки модели, каждый транзакт вносит вклад в содержимое счетчиков блоков. Значения этих счетчиков доступны программисту через СЧА блоков: W - текущее содержимое блока и N - общее количество входов в блок.
Каждое продвижение транзакта в модели является событием, которое должно произойти в определенный момент модельного времени. Для того, чтобы поддерживать правильную временную последовательность событий, интерпретатор имеет таймер модельного времени, который автоматически корректируется в соответствии с логикой, предписанной моделью.
Таймер GPSS World имеет следующие особенности: