Сбор статистических данных с помощью очередей



Некоторые виды статистических данных накапливаются симулятором автоматически. Другие виды данных могут быть получены с помощью специальных блоков. При необходимости сбора данных по задержке транзактов перед блоками занятия устройства или памяти используются блоки и DEPART.

Блок QUEUE - поставить в очередь. При входе транзакта в этот блок он ставится в очередь, имя которой задается операндом А. В начальный момент времени, когда очередь пуста, ее длина равно нулю. В момент входа в блок QUEUE ее длина увеличивается на величину, указанную в поле В. Если операнд В пуст, то длина очереди увеличивается на единицу.

Блок DEPART - вывести из очереди. При входе транзакта в блок DEPART длина очереди, имя которой задается операндом А, уменьшается на величину, указанную в операнде В. При использовании пустого поля В в блоках QUEUE длина очереди равна текущему числу транзактов в этой очереди. Транзакты могут проходить любое число блоков QUEUE и DEPART с произвольными значениями полей А и В, чередующихся в любом порядке.

Необходимо помнить, что данные блоки не влияют на реальное образование очередей транзактов, а служат только для сбора статистических данных. Поэтому пользователь должен следить за правильным расположением этих блоков, чтобы не получать отрицательные длины образуемых очередей. Симулятор только подсчитывает статистику по очередям и не считает за ошибку отрицательные длины очередей.

Функции

При использовании в блоках GENERATE и ADVANСE поля В в качестве модификатора функции, саму функцию необходимо описать специальным блоком языка FUNCTION. В поле метки данного блока стоит имя функции. В операнде А блока FUNCTION указывается аргумент функции, а в операнде В - тип функций и количество пар аргументов и значений. Существует два типа функций: С и Д. Функции типа С - непрерывны, типа Д - дискретны. Например, С12 означает, что функция непрерывна и для ее описания будет использоваться 12 пар аргументов-функций.

При описании любой из функций с помощью языка GPSS происходит интерполяция. Для дискретных функций - кусочно-постоянная интерполяция, для непрерывных - линейная интерполяция. Координаты функции, задаваемые парами, являются узлами интерполяции.

 

 

За блоком описания функции FUNCTION всегда следует блок задания функции, в котором задаются координаты и значения функции. Каждая пара чисел координата-значение отделяется друг от друга слешем, пробелы недопустимы. В паре аргумент отделяется от значения функции запятой.

Например, функция, график которой показан на рис.1,а, описывается на языке GPSS следующим образом:

FUNC1 FUNCTION RN1, D3

4,26.0/.8,40.8/1,6.08

Непрерывная функция показана на рис. 1.1,б:

FUNC2 FUNCTION RN2,С3

0,10/.6,26/1,45

Блоки описания и задания функции располагаются в начале программы, между блоками SIMULATE и первым блоком GENERATE. Координаты точек функции записываются как числа с фиксированной точкой. Поскольку язык оперирует с целочисленными величинами, любое значение функции округляется до целого числа. Исключением являются использование функции в качестве модификатора в поле В блоков GЕNЕRATE и ADVANCE. Здесь округление до целого происходит после умножения значения соответствующей функции на содержимое поля А этих блоков.

В языке существует 8 датчиков равномерно распределенных случайных чисел, которые обозначаются RNI - RN8. Эти датчики выдают равновероятные целочисленные значения из диапазона 0 ¸ 999. Если датчик используется в качестве аргумента функции, то он выдает вещественные числа в диапазоне 0 ¸ 1.

Для генерации случайных величин, распределенных по экспоненциальному закону, можно использовать встроенную функцию с именем XPDIS. Для нормально распределенных величин используется встроенная функция с именем SNORM. Для этих функций блоки описания необязательны.


Дата добавления: 2018-09-23; просмотров: 266; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!