
- •Лекции по 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
Основными элементами GPSS являются транзакты и блоки, соответственно динамические и статические объекты.
Каждый объект имеет некоторое число свойств – СЧА. Часть СЧА доступна пользователю, а на значение других он может влиять, используя соответствующие блоки.
Блоки и транзакты
Последовательность блоков GPSS-модели показывает направления, по которым перемещаются транзакты. Транзакты – это динамические объекты.
Блоки представляют собой подпрограммы, написанные на макроассемблере или на СИ, которые содержат набор параметров для обращения к ним. В GPSS существует внутренний механизм передачи управления, который реализуется в модельном времени. Обращение к подпрограммам происходит через движение транзактов.
Содержательное значение транзактов определяет разработчик модели, который устанавливает аналогию между транзактами и реальными динамическими элементами моделируемой системы.
Магазин покупатель
Склад заявка
Телефонный узел сигнал вызова
Транзакт – это структура данных, которые содержит такие поля, как имя или номер транзакта, время его появления, текущее модельное время, номер текущего блока, приоритет и т.д.
После того, как транзакт закончит свое движение по блокам модели, его необходимо уничтожить (переполнение).
Т.о. при начале моделирования в модели не содержится ни одного транзакта. В процессе моделирования транзакты входят в модель в определенные моменты времени в соответствии с логикой модели. В общем случае в модели существует несколько транзактов, но в каждый момент времени движется только один из них.
Если транзакт начал движение, он перемещается от блока к блоку по пути, предписанному блок-схемой. В момент входа в некоторый блок на исполнение вызывается соответствующая подпрограмма, а после ее выполнения транзакт пытается войти в следующий блок. Такое продвижение транзакта продолжается до тех пор, пока не произойдет одно из следующих условий:
Транзакт входит в блок, функцией которого является удаление транзакта из модели.
Транзакт входит в блок, функцией которого является задержка транзакта на некоторое определенное в модели время.
транзакт пытается войти в следующий блок, однако блок отказывается его принять. В этом случае транзакт остается в старом блоке и, позднее, будет повторять попытку войти в следующий блок. Когда условия в модели изменятся, такая попытка может оказаться успешной и транзакт сможет продолжить свое перемещение по блок-схеме.
Если возникло одно из описанных условий, обработка данного транзакта прекращается, и начинается перемещение другого транзакта. Т.о. выполнение моделирования продолжается постоянно.
Ресурсы
Аналогами обслуживающих устройств в реальной моделируемой системе являются объекты УСТРОЙСТВА (одноканальные СМО), ПАМЯТИ (многоканальные СМО) и ЛОГИЧЕСКИЕ КЛЮЧИ.
Переменные
Различают арифметические переменные, которые вычисляют арифметические выражения, состоящие из операций над СЧА объектов, и булевы переменные, позволяющие пользователю одновременно проверять несколько условий, исходя из состояний объектов или значений СЧА.
Функции
Функции в GPSS задаются табличным способом. Кроме того, в GPSSW в библиотеку процедур включено 24 вероятностных распределений (экспоненциальное, Пуассона, нормальное и т.д.).
Ячейки и матрицы сохраняемых величин
Ячейки используются для хранения информации, запись в них выполняют транзакты.
Очереди
Пользователь может специально определить точки модели, в которых необходимо собирать статистику об очереди. Тогда GPSS будет автоматически собирать статистику: длину очереди, среднее время нахождения в очереди и т.д. GPSS автоматически поддерживает дисциплину FIFO.
Таблицы
Таблицы предназначены для сбора статистики о случайных величинах, заданных пользователем. Состоит из частотных классов, в которые заносится число попаданий конкретной величины (некоторого СЧА). Вычисляется математическое ожидание и среднеквадратическое отклонение.
ОПЕРАТОРЫ
Операнды операторов в общем случае обозначаются A,B,C,D,E,F,G (<= 7).
Каждый объект в GPSS имеет свое имя и номер. Имя дается программистом, а номер присваивается автоматически. При необходимости имени любого объекта (не блока) можно поставить в соответствие любой номер с помощью оператора описания EQU:
имя EQU номер
Для ссылки на СЧА можно использовать один из способов:
СЧА$имя или СЧАj
где СЧА – название конкретного СЧА,
имя – имя объекта, j – номер объекта.
Например: N$OUT – счетчик блока с именем OUT, Q$WORKER – длина очереди с именем WORKER.
Блоки, связанные с транзактами
Поступление транзактов в модель
GENERATE (генерировать) –создание транзактов. Когда транзакт входит в модель из блока GENERATE, GPSS планирует время поступления следующего транзакта (путем розыгрыша случайного числа с соответствующим распределением интервалов поступления) на момент времени, равный текущему значению ТМВ плюс разыгранное значение. Формат блока
GENERATE [A],[B],[C],[D],[E]
A – среднее значение интервала времени между моментами поступления в модель двух последовательных транзактов.
В – модификатор среднего значения, который может быть модификатором-интервалом или модификатором-функцией.
В 1 случае интервал поступления – случайная величина с равномерным законом распределения, тогда B – половина допуска равномерно распределенного интервала.
GENERATE 6,4
Это - случай равномерно распределенного интервала времени, интервал [2;4].
В GPSSW в библиотеку процедур включено 24 вероятностных распределений. Это означает, что пользователю не обязательно задавать функцию распределения в виде таблицы (как было в более ранних версиях GPSS, например, в GPSS/PC), а можно воспользоваться библиотечной процедурой, написанной на встроенном в GPSSW языке PLUS. Однако следует помнить, что использование вероятностных распределений в табличном виде значительно ускоряет процесс моделирования.
Для экспоненциального распределения используется следующая запись:
(Exponential(A,B,C)
Здесь А - номер генератора случайных чисел, В – величина сдвига распределения, С - величина, используемая для сжатия или растяжения распределения. При этом С>0, В+С – среднее значение, при В=0 С – среднее значение.
Покажем, как для генерации потока транзактов можно использовать библиотечную процедуру экспоненциального распределения с параметром = 0,25 и использованием генератора случайных чисел №2 (количество генераторов случайных чисел в GPSSW неограниченно):
GENERATE (Exponential(2,0,(1/0.25)))
В случае модификатора-функции в поле B блока GENERATE должна быть записана ссылка на функцию (ее СЧА), и случайный интервал времени определяется, как произведение поля A на вычисленное значение функции (задаваемой таблично).
GENERATE 100,FN$EXP
C – момент поступления в модель первого транзакта.
D – общее число транзактов, которое генерируется блоком GENERATE.
E – приоритет транзакта (0 – 127), причем самый низкий – нулевой.
Примеры
GENERATE 20,4
GENERATE 10
GENERATE ,,,1 - в нулевой момент входит только один транзакт.
Задание: смоделируйте ситуацию, когда транзакты поступают в модель каждые 45+-15 мин., первый транзакт – на 20 минуте. Единица модельного времени 0,1 мин.
Ответ:
( GENERATE 450,150,200 )
СЧА транзактов – PR, M1 – резидентное время транзакта (с момента входа в модель из блока GENERATE), XN1 – внутренний уникальный номер транзакта.
Транзакты не могут входить в блок GENERATE.
Необходимо помнить! – В начальный момент времени в каждом блоке GENERATE производится подготовка к выходу одного транзакта. На этой стадии модель еще не полностью инициализирована. Поэтому все СЧА, описанные в GENERATE должны быть уже определены. В модели этому блоку должны предшествовать команды определения EQU, INITIAL, FUNCTION, VARIABLE, FVARIABLE. Например
SrInt EQU 47.2
Stan EQU 28.6
INITIAL X$Koltran, 43
………………………….
GENERATE SrInt, Stan, , X$Koltran
Транзакты могут входить в модель не только через блок GENERATE, но и путем создания копий уже существующих транзактов в блоке SPLIT (расщепить), имеющем следующий формат:
SPLIT A,B,C
В поле A задается число создаваемых копий исходного транзакта (родителя), входящего в блок SPLIT. После выхода из блока SPLIT транзакт-родитель направляется в следующий блок, а все транзакты-потомки поступают в блок, указанный в поле B. Если поле B пусто, то все копии поступают в следующий блок.
Транзакт-родитель и его потомки, выходящие из блока SPLIT, могут быть пронумерованы в параметре, имя или номер которого указаны в поле C. Если у транзакта-родителя значение этого параметра при входе в блок SPLIT было равно k, то при выходе из блока оно станет равным k+1, а значения этого параметра у транзактов-потомков окажутся равными k+2, k+3 и т.д.
Например, блок
SPLIT 5,MET1,NUM
создает пять копий исходного транзакта и направляет их в блок с именем MET1. Транзакт-родитель и потомки нумеруются в параметре с именем NUM. Если, например, перед входом в блок значение этого параметра у транзакта-родителя было равно 0, то при выходе из блока оно станет равным 1, а у транзактов-потомков значения параметра NUM будут равны 2, 3, 4, 5 и 6.