Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
370.doc
Скачиваний:
16
Добавлен:
30.04.2022
Размер:
3.06 Mб
Скачать

11.20. Время пребывания транзакта в модели

С каждым транзактом в GPSS-модели связан стандартный числовой атрибут (СЧА) M1, значение которого представляет собой время с момента создания данного транзакта в операторе GENERATE, т.е. время пребы-вания транзакта в модели. Этот атрибут, как и любой другой СЧА, может использоваться в качестве операнда в операторах GPSS/PC. Таким обра-зом, время пребывания транзакта в модели можно сравнивать с некоторой заданной величиной (в операторе TEST), записывать в сохраняемую вели-чину (оператором SAVEVALUE), использовать для вычисления значений переменных (в операторе FVARIABLE) и т.д. Важное (но не единственное) применение СЧА M1 - получение информации о времени обслуживания зая-вок при моделировании систем, которые можно рассматривать как СМО (в моделях таких систем транзакты имитируют обслуживаемые заявки).

Примечание. Если транзакт создается не оператором GENERATE, а оператором SPLIT (т.е. представляет собой копию другого транзакта), то в момент его создания СЧА M1 равен не нулю, а значению атрибута M1 исходного транзакта. Чтобы значение M1 (т.е. время пребывания в модели) для такого транзакта отсчитывалось с момента его создания, требуется использовать оператор MARK (см. ниже).

Приведем пример использования СЧА M1 для получения информации о времени обслуживания заявок в СМО.

Пример. На ВЦ, имеющий две ЭВМ, поступают задачи для решения. Поток задач - пуассоновский (т.е. интервалы времени между задачами представляют собой случайные величины, распределенные по экспоненциальному закону). В среднем задачи поступают на решение через каждые два часа. Решение задачи занимает обычно от двух до четырех часов. По требованиям заказчиков общее время выполнения заказа (от поступления задачи на ВЦ до выдачи результатов) не должно превышать 8 часов.

Требуется разработать GPSS-модель для анализа работы ВЦ за 1000 часов. Определить процент задач, решение которых не выполняется в заданные сроки (8 часов).

10 SIMULATE

20 XPDIS FUNCTION RN1,C24

... таблица соответствия для экспоненциального распределения ...

30 COMP STORAGE 2

40 PROC FVARIABLE (X$PREV/X$RESH)#100

50 GENERATE 120,FN$XPDIS

60 QUEUE 1

70 ENTER COMP

80 DEPART 1

90 ADVANCE 180,60

100 LEAVE COMP

110 SAVEVALUE RESH+,1

120 TEST GE M1,480,KON

130 SAVEVALUE PREV+,1

140 KON TERMINATE

150 GENERATE 60000

160 SAVEVALUE PROC_PREV,V$PROC

170 TERMINATE 1

Модель работает следующим образом. Операторы 50-110 имитируют поступление задач на ВЦ, их решение и подсчет общего количества ре-шенных задач (сохраняемая величина RESH). В операторе 120 проверяется условие: M1480 (время пребывания в модели транзакта, имитирующего задачу, превышает 8 часов). Если условие выполняется, то в операторе 130 увеличивается на 1 сохраняемая величина PREV (количество задач, не решенных в срок).

Через 60000 минут (1000 часов) после начала моделирования в опе-раторе 150 генерируется один транзакт. Прежде чем выйти из модели и завершить моделирование (оператор 170), он проходит через оператор 160, в котором в сохраняемую величину PROC_PREV заносится значение переменной PROC. Эта переменная рассчитывается как отношение двух сохраняемых величин: PREV (количество задач, не решенных в срок) и RESH (общее количество решенных задач), умноженное на 100. Таким образом находится процент задач, не решенных в срок. Напомним, что обозначение X$имя в GPSS/PC представляет собой ссылку на значение сохраняемой величины.

Иногда требуется во время моделирования устанавливать значение М1 равным нулю, чтобы отсчитывать время пребывания транзакта в модели с некоторого заданного момента. Для этого используется следующий оператор:

MARK

При прохождении транзакта через этот оператор значение СЧА М1 у этого транзакта устанавливается равным нулю.

Использование оператора MARK требуется в следующих случаях:

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

- если требуется исследовать время пребывания в модели транзакта, созданного оператором SPLIT (см. примечание выше); в этом случае оператор MARK обычно непосредственно следует за оператором SPLIT;

- при моделировании замкнутых СМО.

Рассмотрим последний случай более подробно. Замкнутой называется СМО, в которой имеется фиксированное количество заявок. Каждая из этих заявок поступает на обслуживание, обслуживается и через некоторое время снова требует обслуживания. Примеры замкнутых СМО: ЭВМ, решающая задачи, которые поступают с группы терминалов (причем задача с каждого терминала поступает в ЭВМ через некоторое время после решения предыдущей задачи); наладчик, обслуживающий группу станков, которые периодически требуют наладки. В GPSS-моделях замкнутых СМО каждая заявка обычно имитируется транзактом, который остается в модели в тече-ние всего времени моделирования (его не требуется удалять оператором TERMINATE). Поэтому представляет интерес время пребывания транзакта в модели не с момента его создания, а с момента начала очередного обслуживания.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]