Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

docs / Metodichka_GPSS

.pdf
Скачиваний:
30
Добавлен:
20.03.2015
Размер:
397.45 Кб
Скачать

Операнд В - задает число приборов, которое должно быть занято (или освобождено). Этот операнд редко используется и его значение по умолчанию равно 1.

В общем случае использование блоков ENTER и LEAVE аналогично использованию блоков QUEUE и DEPART.

3.2.2. Определение емкости многоканальных устройств

Оператор STORAGE

Емкость многоканальных устройств определяется с помощью оператора STORAGE. У этого оператора может быть имя (символическое или числовое). Операнд А задает емкость многоканального устройства. При определении емкости нескольких многоканальных устройств используют запись "S$имя, с", где "имя" является символическим или числовым именем многоканального устройства, емкость которого определяется, а с - его емкость. При использовании числового имени знак доллара не ставится. Символ "/" (разделить) используется для разделения подряд записанных основных единиц.

4. ОСНОВНЫЕ БЛОКИ ЯЗЫКА GPSS

Все блоки записываются с первой позиции строки, сначала идет имя блока, а затем, через запятую, параметры. В записи параметров не должно быть пробелов. Если какой-то параметр в блоке отсутствует (задается по умолчанию), то соответствующая ему запятая остается (если это не последний параметр). Если в первой позиции строки стоит символ *, то эта строка с комментарием.

1. GENERATE A,B,C,D,E,F

Создает транзакты через определенные интервалы времени. A - средний интервал времени между появлениями транзактов.

B - 1) если число, то это половина поля, в котором равномерно распределено значение интервала между появлениями транзактов

[A-B, A+B];

- 2) если функция, то для определения интервала значение A умножается на значение функции.

C - момент времени появления первого транзакта.

D- предельное количество транзактов.

E- величина приоритета транзакта.

F- число параметров у транзакта и их тип (PB-байтовый целый, PHполусловный целый, PF-полнословный целый, PL-с плавающей запятой).

13

2. TERMINATE A

Уничтожает транзакты из модели и уменьшает значение счетчика завершения на A единиц. Работа модели завершится, если счетчик завершения станет меньше или равен нулю. Если параметр A отсутствует, то блок просто уничтожает транзакты.

Примеры использования блока GENERATE:

1)GENERATE 5,3 - блок генерирует транзакты через 5±3 единицы системного времени, т.е. интервалом прибытия является случайное число со средним значением, равным 5, и полем допуска, равным 6.

2)GENERATE 10 - генерируется поступление транзактов в систему через каждые 10 единиц системного времени.

3)GENERATE 3,3,10,5 - моментом прихода первого транзакта является значение 10. После этого интервалы времени прибытия находят из

равномерного распределения 3±3. Однако только первые пять транзактов должны войти в модель через этот блок.

4) GENERATE 5, , , , ,2h - транзакты, имеющие два полусловных целых параметра, поступают в систему каждые 5 единиц системного времени.

3. SEIZE A

Если прибор с именем A свободен, то транзакт занимает его (переводит в состояние "занято"), если нет, то ставится в очередь к нему. Именем прибора может быть числовой номер или последовательность от 3 до

5символов.

4.RELEASE A

Транзакт освобождает прибор с именем A, т.е. переводит его в состояние "свободно".

5. ADVANCE A,B

Задерживает обработку транзакта данным процессом и планирует время начала следующего этапа обработки.

A- среднее время задержки.

B- имеет тот же смысл, что и для GENERATE.

Пример 1

Рассмотрим систему, состоящую из кассы и очереди к ней. Клиент обслуживается в кассе за время (3±1) мин. Очередь пополняется за счет вновь прибывших через (5±4) мин. Программа будет выглядеть следующим образом:

SIMULATE

GENERATE 5,4 - моделирование прихода клиентов в систему через

(5±4) мин;

14

SEIZE KAS - если прибор с именем KAS находится в состоянии "свободно", то транзакт занимает его (клиент обслуживается в кассе); в противном случае встает в очередь;

ADVANCE 3,1 - клиент обслуживается в кассе (3±1) мин;

RELEASE KAS - обслуживание клиента в кассе закончено (транзакт освобождает прибор KAS, переводя его в состояние "свободно";

TERMINATE 1 - клиент покидает систему (транзакт уничтожается и счетчик завершения уменьшается на 1).

START 100 END

В данной программе, кроме описанных выше, использовались еще 3

блока:

SIMULATE, START и END.

Карта SIMULATE всегда ставится в начале программы. Если она отсутствует, то моделирование производиться не будет.

Карта START имеет следующий формат: START A,B,C,D

A - начальное значение счетчика числа завершений.

B - признак подавления печати. Если задан параметр NP, то стандартная печать в конце моделирования производиться не будет.

C - число завершений, через которые будет выдаваться промежуточная печать.

D - признак печати цепей. Печать цепей производится, если на месте D стоит 1.

Карта END должна быть последней картой программы.

6. QUEUE A

Собирает статистику о входе транзакта в очередь с именем A.

7. DEPART A

Собирает статистику о выходе транзакта из очереди с именем A.

Пример 2

Если в задаче из предыдущего примера необходима информация об очереди, то программу нужно дополнить.

SIMULATE

GENERATE 5,4

QUEUE OН

SEIZE KAS

DEPART OН

ADVANCE 3,1

15

RELEASE KAS

TERMINATE 1

START 100

END

В данном примере группа операторов QUEUE-DEPART позволяет дать имя очереди к прибору и собирает статистику об этой очереди.

8. ENTER A,B

Если в многоканальном устройстве с именем A имеются свободные каналы, то транзакт занимает B каналов (по умолчанию 1). Если свободных каналов нет, то транзакт становится в очередь и его обработка процессом приостанавливается до освобождения каналов.

9. LEAVE A,B

Транзакт освобождает B каналов в многоканальном устройстве A. Прежде чем использовать многоканальное устройство, его нужно

описать картой STORAGE.

A STORAGE B

Здесь A - имя многоканального устройства, B - максимальная емкость.

Пример 3

Пусть заявки поступают на обработку с ограниченным числом мест в очереди, равным 3. Если очередь заполнена, то заявки покидают систему.

SIMULATE

LIM STORAGE 3

GENERATE 5,4

ENTER LIM

SEIZE PRB

LEAVE LIM

ADVANCE 3,2

RELEASE PRB

TERMINATE 1

START 100

END

Пример 4

Рассмотрим работу ЗУ емкостью 256К. В ЗУ с интервалом 3±2 с загружаются файлы, занимающие 4К памяти. Через 10±3 с становятся ненужными и освобождают память.

SIMULATE

16

MEM STORAGE 256

GENERATE 3,2

ENTER MEM, 4

ADVANCE 10,3

LEAVE MEM, 4

TERMINATE 1

START 250

END

10. ASSIGN A,B,C

Присваивает (если A+ - увеличивает, A- - уменьшает) параметру транзакта (номер которого указан в A) значение параметра B. C - тип параметра транзакта.

Параметр транзакта - это величина, соответствующая атрибуту элемента модели. У каждого транзакта свои параметры. Ссылка на параметр транзакта, который обрабатывается блоком, выполняется в виде группового имени P, за которым следует последовательный номер параметра и его тип. Например, P3H – третий полусловный параметр обрабатываемого транзакта.

Примеры использования блока ASSIGN:

ASSIGN 3,2,PH - третьему полусловному параметру присвоить 2. ASSIGN 1-,1,PB - значение первого байтового параметра уменьшить на

единицу.

11. SAVEVALUE A,B,C

Присваивает (если A+ - увеличивает, A- - уменьшает) сохраняемой величине, указанной в параметре A (только номер или имя без X), значение параметра B.

C - тип сохраняемой величины.

Ссылка на сохраняемую величину выполняется в виде группового имени X, за которым следует либо номер сохраняемой величины, либо после символа $ - символьное имя этой величины, например X$DASP.

Для задания начальных значений сохраняемым переменным используется карта INITIAL.

INITIAL A1,B1/ ... /AN,BN

Ai - имя сохраняемой величины, Bi - ее начальное значение.

Если сохраняемая величина не описана в карте INITIAL, то по умолчанию ее значение равняется 0.

Примеры использования оператора SAVEVALUE:

SAVEVALUE SI,12,PF - присвоить переменной с именем SI полнословного целого типа значение 12.

SAVEVALUE 12,-3,PB - присвоить переменной байтового типа с номером 12 значение -3.

17

SAVEVALUE A+,1,PB - увеличить значение A на единицу.

12. TEST X A,B,C

Проверяет отношение X (L(<), LE(<или=), E(=), NE(<>), GE(>или=), G(>)) между значениями параметров A и B. Если оно выполняется, то транзакт обрабатывается следующим блоком, если нет, то блоком, метка которого указана в блоке C.

Примеры:

TEST NE 12,X$TAST,TST - управление передается блоку с меткой TST, если переменная TAST равна 12.

TEST LE P1H,P2H,GO - если второй параметр транзакта больше первого, то управление передается по метке GO.

Другой формой оператора TEST является оператор IF. IF X,A

Осуществляет переход на метку A, если логическое условие X истинно.

Примеры использования оператора IF вместо TEST: IF X$TAST=12,TST

IF P1H>P2H,GO

Пример 5

Пусть в данном примере транзакты соответствуют грузовым автомобилям. Грузоподъемность каждого автомобиля будет содержаться в параметре транзакта. Существует 2 вида грузовиков - грузоподъемностью в 5 и 10 т. Они перевозят грузы на некоторый объект. Пусть в данный момент разгружаться может только один автомобиль. Поэтому на разгрузку образуется очередь, которая будет иметь имя Q. Сам объект назовем OBJ. Масса груза, уже перевезенная на объект, будет храниться в ячейке MAS.

SIMULATE

INITIAL MAS,100 - пусть на объект уже перевезено 100 т груза ;1-й сегмент программы ; описывает поток автомобилей грузоподъемностью 5 т

GENERATE 15,5, , , ,1B - автомобили подъезжают к объекту через 15+-5 мин

ASSIGN 1,5,PB QUEUE Q SEIZE OBJ DEPART Q

ADVANCE 5,1 - задержка на разгрузку

18

SAVEVALUE MAS+,P1H,XH - увеличение значения массы груза на объекте

RELEASE OBJ TERMINATE

; 2-й сегмент программы ;описывает поток автомобилей грузоподъемностью 10 т GENERATE 25,10, , , ,1B

ASSIGN 1,10,PB QUEUE Q SEIZE OBJ DEPART Q ADVANCE 10,2

SAVEVALUE MAS+, ,P1H,XH RELEASE OBJ

TERMINATE 1 START 250 END

13. TRANSFER A

Осуществляется безусловный переход на метку A. Другая форма: GOTO A

14. PREEMPT A,B,C,D,E

Транзакт занимает прибор с именем A, т.е. если другой транзакт обслуживается в нем, то его обслуживание прерывается и он передается на обработку блоку, указанному в C, причем в его параметре с номером D записывается время, оставшееся до конца обслуживания. Если B=PR, то обслуживание этого транзакта также может быть прервано транзактом с более высоким приоритетом. Если B опущено, то обслуживание этого транзакта прервать нельзя. Если E=RE, то прерванный транзакт теряет право на автоматическое восстановление в приборе.

15. RETURN A

Транзакт, захвативший прибор с именем A, освобождает его.

В GPSS можно обращаться к функциям, которые описываются с помощью карты FUNCTION. Существует 2 вида функций: дискретные (тип D) и непрерывные (тип C). Описание функций осуществляется следующим образом:

A FUNCTION B,CN x1,y1/x2,y2/.../xN,yN,

где A - имя функции, B - аргумент функции, C - тип функции (C или D), N - количество точек описания функции.

19

Обращение к функциям осуществляется с помощью группового имени F, за которым после символа $ следует имя функции.

Пример использования функции: FFF FUNCTION X$AS,D5 0,1/.2,2/.5,3/.8,4/1.2,5

Здесь FFF - имя функции, X$AS - аргумент,

D5 означает, что функция дискретная и она описывается пятью точками, значения функции записываются без пробелов.

Если AS=0.8, то значение функции равно 4 (F$FFF = 4).

ВGPSS имеется восемь подпрограмм, которые вычисляют случайные числа, равномерно распределенные в интервале [0, 1]. Обращение к этим функциям выполняется с помощью группового RN, после которого следует номер генератора (от 1 до 8).

Все генераторы совершенно одинаковы.

Вязыке GPSS используются стандартные числовые атрибуты, которые являются переменными модели, описывающими блоки, приборы, многоканальные устройства и очереди, значения которых вычисляет интерпретатор, а разработчик в описании модели их только использует. Каждый стандартный числовой атрибут имеет групповое имя, которое при использовании дополняется номером, или после символа $ именем этого элемента модели, к которому он относится. Например, стандартный числовой атрибут Q1 содержит число транзактов в очереди с номером 1, R$MEM показывает остающуюся свободную емкость многоканального устройства MEM. Список групповых имен основных стандартных числовых атрибутов представлен в табл.2.

Таблица 2

Объект

Группо-

Название

 

вое имя

 

1

2

3

Блоки

N

Счетчик входов

 

W

Счетчик текущего содержимого

Приборы

F

Состояние прибора (1 – занят, 0 – свободен)

 

FC

Счетчик числа занятий

 

FR

Коэффициент использования

 

FT

Среднее время задержки на одно занятие

Многока-

R

Остающаяся свободной емкость

нальные

S

Текущее содержимое

устройства

SA

Среднее содержимое

 

SC

Счетчик числа входов

 

SR

Коэффициент использования

 

 

20

 

 

Окончание табл.2

1

2

3

 

SM

Максимальное содержимое

 

ST

Среднее время задержки на единицу

Очереди

Q

Текущее содержимое

 

QA

Среднее содержимое

 

QC

Счетчик числа входов

 

QM

Максимальное содержимое

 

QT

Среднее время прерывания (на основе QC)

 

QX

Среднее время пребывания (на основе QZ)

 

QZ

Счетчик числа нулевых входов

Время

C1

Значение системного времени

Пример 6

Пусть процессор Пр контролирует процесс в каком-либо объекте по двум независимым друг от друга параметрам (рис. 4).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пр

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Д1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

БУ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

АУ

 

 

 

 

 

 

Объект

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Д2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.4. Управление объекта процессором

Значения параметров от датчиков Д1 и Д2 поступают на анализирующее устройство (АУ), которое сравнивает эти значения с оптимальными для данной системы и передает результаты сравнения в блок управления (БУ). БУ формирует сигналы, под воздействием которых происходит управление системой. АУ является быстродействующим прибором, поэтому время задержки в нём можно принять равным нулю. Первый параметр анализируется каждые 2 с. Его нормальное значение составляет 20 единиц. В случае, если значение этого параметра отклоняется от нормального, БУ формирует сигналы увеличить (или уменьшить - в зависимости от ситуации) значение первого параметра. Значения второго параметра анализируются каждые 10 с, нормальное значение для этого параметра 40 единиц. Ситуация, когда значение второго параметра выйдет за

21

пределы [30, 60] единиц, считается экстремальной и обрабатываются в первую очередь. Значение первого параметра хранит переменная с номером 1, значение второго - с номером 2. Случайные значения первого моделируется с помощью функции CHANG, второго - с помощью функции

DIFF.

SIMULATE

INITIAL 1,20/2,40 - установка нормальных значений параметров

CHANG FUNCTION RN2,D10 0,0/.1,0/.2,1/.3,1/.4,2/.5,3/.6,4/.7,5/.8,8/1,8

DIFF FUNCTION RN3,D5

.1,2/.2,3/.3,5/.6,8/1,2

GENERATE 2, , , , ,1B - опрос значений первого параметра через 2 с

IF RN1>0.5,TWO - значение параметра с равной

вероятностью может изменяться в ту или иную сторону, по метке TWO обрабатывается ситуация, когда значение параметра уменьшается

SAVEVALUE 1+,FN$CHANG,XB GOTO DDD1

TWO SAVEVALUE 1-,FN$CHANG,XB

DDD1 ASSIGN 1,X1B,PB - параметр транзакта несет

информацию о значении первого параметра

QUEUE PROC

SEIZE PROC - сообщение начинает обрабатываться процессором

DEPART PROC

ADVANCE 5,2

IF P1B=20,DDD2 - если значение параметра нормальное, то никаких действий не нужно

IF P1B>20,BBB1

SAVEVALUE 1+,2,XB - увеличиваем значение параметра, если оно было ниже нормального

GOTO DDD2

BBB1 SAVEVALUE 1-,2,XB DDD1 RELEASE PROC

TERMINATE

GENERATE 10, , , , ,1B - опрос значений 2-го параметра через 10 с

IF RN1>0.5,TWO2 SAVEVALUE 2+,FN$DIFF GOTO DDD3

22

Соседние файлы в папке docs