Отметка времени. Транзитное время

При каждом входе транзакта в модель интерпретатор фиксирует для него текущее значение модельного времени (время входа транзакта в модель), это значение времени также называется отметкой времени. Системный СЧА М1 (см. выше) тесно связан с отметкой времени, так как его значение определяется как разность между текущим значением таймера абсолютного времени (СЧА АС1) и отметкой времени. Таким образом, обратиться к отметке времени возможно, но опосредованно через системные СЧА М1 и АС1 (отметка времени = АС1 – М1).

Значение M1 для каждого транзакта изменяется в процессе моделирования. Сразу после входа транзакта в модель M1= 0, через 10 единиц модельного времени M1=10 и т. д.

Пример. В устройстве, номер которого хранится в параметре транзакта с именем CLR_1, продолжительность обслуживания зависит от времени, которое прошло c момента входа транзакта в модель (СЧА М1). Предполагается, что это время не может превышать 1000 ед. времени. Для построения модели по данной задаче можно использовать такие блоки:

ZATR FUNCTION M1,C2

1,4/1000,80

SEIZE P$CLR_1

ADVANCE FN$ZATR

RELEASE P$CLR_1

Транзитное время – время, затраченное на перемещение транзакта между двумя произвольными точками модели. Для того чтобы узнать это время используется блок MARK (ОТМЕТИТЬ).

Блок MARK заносит значение таймера абсолютного модельного времени в один из параметров транзакта, вошедшего в данный блок.

Блок имеет следующий формат записи:

MARK [A],

где А – номер (имя) параметра, в который записывается значение абсолютного модельного времени (целое число, СЧА). При отсутствии операнда А отметка времени заменяется текущим значением абсолютного времени.

Например, чтобы определить интервал времени, на протяжении которого транзакт проходит от точки Т1 к точке Т2, необходимо в точку Т1 поместить блок MARK j, где j – номер параметра, в который записывается значение абсолютного времени в момент записи, и в точке Т2 обратиться к СЧА c именем MPj, где j – номер параметра, в который в точке Т1 записано значение абсолютного времени в тот момент; СЧА MPj имеет значение, равное разности между значением текущего абсолютного модельного времени и значением j-го параметра активного транзакта.

Циклы

Организация циклов в программе моделирования осуществляется с помощью параметров транзактов. Для этого используется блок LOOP (ЦИКЛ), управляющий количеством повторных прохождений транзактом определенной последовательности блоков модели.

Блок LOOP имеет следующий формат записи:

LOOP A[,B],

где А – параметр транзакта, используемый для организации цикла, в нем содержится число повторений какого-либо участка модели;

В – метка (имя или номер) начального блока цикла.

Операнды А и В могут быть именем, положительным целым числом, выражением в скобках, СЧА, CЧA*параметр (косвенная адресация).

Когда транзакт входит в блок LOOP, значение параметра, указанного в операнде А, уменьшается на единицу, затем проверяется его значение на равенство нулю. Если значение не равно нулю, то транзакт переходит в блок, указанный в операнде В. Если значение параметра равно нулю, транзакт переходит в следующий блок.

Пример.[4] Организовать цикл, число повторений которого задано первым параметром транзакта.

ASSIGN 1,3

SIS SEIZE PC

RELEASE PC

LOOP 1,SIS

Итак, цикл организован по первому параметру транзакта, начальное значение которого равно 3. После освобождения устройства с именем РС значение первого параметра транзакта уменьшается на единицу и проверяется на равенство нулю. Если оно не равно нулю, то транзакт возвращается к блоку, помеченному меткой SIS, т. е. занимает уст­ройство c именем PC. Таким образом, каждый транзакт будет занимать это уст­ройство три раза.

Пример.[5] В систему массового обслуживания c одним устройством и очередью поступает пуассоновский поток заявок c интенсивностью 12 приходов за 1 ч. Обслужива­ние имеет экспоненциальное распределение, но среднее время обслуживания зависит от числа заявок, которые находятся в очереди к устройству. Эта зависимость приведена в табл. 1.9. Требуется промоделиро­вать обслуживание 500 заявок.

Т а б л и ц а 1.9. Зависимость числа заявок от очереди к устройству

Длина очереди   1 или 2 3,4 или 5 6 и больше
Среднее время обслуживания, мин 5,5 5,0 4,5 4,0

Для удобства программирования принято составлять таблицу определений, для этого элементам GPSS дают имена и ставят в соответствие им данные задачи. Составим таблицу определений для нашего примера (табл. 1.10).

Т а б л и ц а 1.10. Таблица определений

Элементы GPSS Интерпретация
Транзакты Заявки
Устройство SURVR Обслуживающее устройство
Функции: MEAN XPDIS   Функция, определяющая среднее время обслужива­ния в зависимости от длины очереди Функция розыгрыша случайных чисел в соответст­вии с экспоненциальным законом с параметром λ, равным единице
Очередь WAIT Регистратор очереди для сбора статистики о состоя­нии очереди перед устройством

Программа на языке GPSS:

MEAN FUNCTION Q$WAIT,D4

0,330/2,300/5,270/6,240

XPDIS FUNCTION RN1,C24

0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915/.7,1.2/.75,1.38/.8,1.6/

.84,1.83/.88,2.12/.9,2.3/.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/

.98,3.9/.99,4.6/.995,5.3/.998,6.2/999,7/.9998,8

GENERATE 300,FN$XPDUS

QUEUE WAIT

SEUZE SURVR

DEPART WAIT

ADVANCE FN$MEAN,FN$XPDIS

RELEASE SURVR

TERMINATE 1

START 500

Для учета длины очереди при определении интенсивности об­служивания в модель необходимо включить дискретную функцию, в которой текущая длина очереди является аргументом для определения среднего значения интенсивности об­служивания. Способы описания функций см. в п. 1.7. За единицу модельного времени здесь принята 1 c.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: