- •Лекция №1 Имитационное моделирование
- •Основные и вспомогательные события
- •Обработка событий в представленной системе
- •Работа системного таймера
- •Одновременные события.
- •Получение значений случайных чисел.
- •Равномерное распределение
- •Лекция №2 Создание модели в системе gpss
- •Лекция №3 Листинги, которые появляются в процессе моделирования.
- •Логика работы интерпретатора
- •Модификация параметров при моделировании
- •Различные законы распределения вероятности появления транзактов в модели
- •Лекция № 4 Задание функций.
- •Многоканальные устройства
- •Модель многопроцессорной системы
- •Лекция № 5
- •Параметры транзактов
- •Лекция №6 Выбор элементов по их состояниям
- •Арифметические переменные
- •Формирование случайных чисел, распределенных по нормальному закону
- •Лекция № 7 Сохраняемые величины
- •Initial имя сохраняемой величины, ее значение/имя, значение/...
- •Управление последовательностью событий
- •Лекция № 8 Логический переключатель
- •Блок select в логическом режиме
- •Организация цикла
- •Булевские переменные
- •Блок buffer
- •Лекция № 9
- •Косвенная адресация
- •Лекция № 10 Цепи пользователя
- •Лекция № 11 .
- •Условный вывод транзактов из цепи пользователя
- •Лекция №12
- •Захват устройства
- •Лекция №13
- •Ансамбли транзактов
- •Использование таблиц
- •Лекция №14
- •Сча таблиц.
- •Дополнительные режимы использования таблиц.
- •2) Rt (Rate – интенсивность) – режим.
- •Время моделирования.
- •Некоторые сведения из Теории вероятностей
Лекция №3 Листинги, которые появляются в процессе моделирования.
Текст программы.
В программе GPSS есть графические аналоги блоков, с помощью которых можно рисовать блок-схемы, но в машину их ввести нельзя.
Проверка синтаксических ошибок.
В результате этой проверки появится листинг, в котором все символьные обозначения заменятся числовыми значениями, начиная с единицы. Следовательно, не рекомендуется использовать в программе одновременно числовые и символьные имена, так как могут быть ошибки наложения.
Осуществляется прогон программы, сообщаются результаты моделирования.
Логика работы интерпретатора
В системе генерируются транзакты, которые упорядочиваются в цепях. В системе моделирования имеются следующие цепи:
- цепь текущих событий (одна цепь в системе);
- цепь будущих событий (одна цепь в системе).
Цепь текущих событий состоит из транзактов, для которых планируется их продвижение в одном или нескольких блоках в течение текущего значения модельного времени или в ближайшем будущем. В эту цепь входят так же те транзакты, движение которых заблокировано из-за соответствующих текущих условий модели.
В цепь будущих событий входят транзакты, движение которых не планируется до наступления некоторого момента времени в будущем. Такая ситуация может возникнуть в двух случаях:
Транзакт попал в блок ADVANCE и, до некоторого момента, нет возможности продвинуть его в следующий блок модели.
Транзакт должен войти в модель в некоторый более поздний момент времени через блок GENERATE.
Транзакт, в один и тот же момент времени, может находиться только в одном блоке и только в одной цепи. Система моделирования изменяет свое состояние при просмотре цепи текущих событий от начала к концу, рассматривая транзакт за транзактом. Интерпретатор выбирает транзакт из цепи текущих событий и продвигает его от блока к блоку до тех пор, пока не встретится одна из следующих ситуаций:
Транзакт входит в блок ADVANCE, в котором он должен пробыть некоторый отрезок времени. В этом случае интерпретатор отправляет этот транзакт в цепь будущих событий, помещая его в ту позицию, которая соответствует времени выхода транзакта из цепи в следующий блок.
Возникает условие блокировки, означающее, что транзакт не может войти в следующий блок. Тогда он остается в цепи текущих событий.
Транзакт входит в блок TERMINATE. В этом случае интерпретатор удаляет его из цепи текущих событий и из всей модели.
Когда транзакт прекратит свое движение, интерпретатор выполняет одно из двух действий:
Выбирается следующий по очереди транзакт из цепи текущих событий.
Следующий транзакт берется не следующий по очереди, а интерпретатор начинает просматривать цепь текущих событий сначала. Это происходит тогда, когда последний блок, прошедший через интерпретатор, прошел блоки SEIZE или RELEASE. В этом случае, блокировки для некоторых транзактов могут быть сняты, а это значит, что их можно будет двигать дальше.
После того, как был обработан последний транзакт в цепи текущих событий, интерпретатор начинает работать с цепью будущих событий:
Интерпретатор продвигает модельное время (в счетчике) к значению, запланированному к движению следующего транзакта. Этот транзакт, как и другие транзакты с таким же временем, переносятся из цепи будущих событий в цепь текущих событий, в которой они занимают место в соответствии со своим приоритетом (чем выше уровень приоритета, тем ближе к началу встанет транзакт). Затем, начинается новый просмотр транзактов в цепи текущих событий.
Обработка транзактов, имеющих одно и то же время, например, прибытия и обслуживания в устройстве, может привести к неправильным результатам. Для предотвращения ошибки, надо следить за тем, чтобы приоритет у транзакта, пребывающего на устройство был ниже, чем приоритет у транзакта, находящегося на обслуживании в устройстве.