Студентам > Курсовые > Моделирование систем и сетей связи на GPSS
Моделирование систем и сетей связи на GPSSСтраница: 8/12
Если же в момент поступления оба канала МКУ заняты, и
поэтому блок
ENTER отказывает во входе, то транзакт будет
направлен в блок
TRANSFER с именем REFUS, работающий в статистическом
режиме. С ве-
роятностью 0,9 транзакты из этого блока передаются в
следующий
блок, задерживаются в нем на случайное время и с
помощью блока
TRANSFER, работающего в безусловном режиме, передаются
вновь на
вход модели в блок с именем ENT1. С вероятностью 0,1
транзакты из
блока с именем REFUS передаются в блок TERMINATE с
именем OUT для
уничтожения.
Следует заметить, что для уничтожения транзактов,
получивших
отказ в обслуживании, понадобился отдельный блок
TERMINATE для
фиксации в стандартном отчете количества потерянных
транзактов с
помощью счетчика блока с именем OUT (СЧА N$OUT).
Для моделирования той же СМО может быть использован
также блок
TEST (рис. 13). В этом варианте модели транзакт
проходит в блок
ENTER, если текущее число занятых каналов (СЧА S$STO2)
меньше 2.
Ш1
STO2 STORAGE 2
EXP 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.85/.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 100,FN$EXP
ENT1 TEST L S$STO2,2,REFUS
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
OUT TERMINATE 1
Ш1.5
Рис. 13
При использовании блока GATE модель принимает вид,
показанный
на рис. 14. В этом варианте транзакт проходит в блок
ENTER, если
условие "МКУ STO2 не заполнено" истинно.
- 31 -
.
Ш1
STO2 STORAGE 2
EXP 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.85/.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 100,FN$EXP
ENT1 GATE SNF STO2,REFUS
ENTER STO2
ADVANCE 160,FN$EXP
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
OUT TERMINATE 1
Ш1.5
Рис. 14
2.5. Блоки, работающие с памятью
Для хранения в памяти отдельных числовых значений
и массивов
таких значений используются сохраняемые величины и
матрицы сохраня-
емых величин.
1Сохраняемые величины 0могут
использоваться в модели для хране-
ния исходных данных, которые надо изменять при
различных прогонах
модели, промежуточных значений и результатов
моделирования. В нача-
ле моделирования все сохраняемые величины
устанавливаются равными
0. Для установки отличных от 0 начальных значений
сохраняемых вели-
чин используется оператор INITIAL, имеющий следующий
формат:
Ш1
INITIAL
X$ 1имя 0, 1значение
Ш1.5
INITIAL
X 1j 0, 1значение
Здесь 1имя 0и 1j 0-
соответственно имя и номер сохраняемой величины, а
1значение 0- присваиваемое ей начальное
значение (константа).
Для изменения сохраняемых величин в процессе
моделирования
служит блок SAVEVALUE (сохранить величину), имеющий
следующий фор-
мат:
1имя 0 SAVEVALUE
A,B
В поле A указывается номер или имя сохраняемой
величины, в ко-
торую записывается значение операнда B. Если в поле A
после имени
(номера) сохраняемой величины стоит знак + или -, то
значение опе-
ранда B добавляется или вычитается из текущего
содержимого сохраня-
емой величины. Например:
Ш1
SAVEVALUE 5,Q$LINE
Ш1.5
SAVEVALUE NREF+,1
- 32 -
.
Сохраняемые величины имеют единственный СЧА с
названием X,
значением которого является текущее значение соответствующей
сохра-
няемой величины.
Изменим пример на рис. 14 таким образом, чтобы
исходные данные
модели (средний интервал поступления транзактов и
среднее время
обслуживания) были заданы сохраняемыми величинами, а
результат мо-
делирования (количество потерянных транзактов)
фиксировался также в
сохраняемой величине. Такая модель будет иметь вид,
показанный на
рис. 15.
1Матрицы 0сохраняемых величин дают
возможность упорядочить сох-
раняемые значения в виде матриц m*n, где m - число строк,
n - число
столбцов матрицы. Каждая матрица должна быть перед
началом модели-
рования определена с помощью оператора MATRIX (определить
матрицу),
имеющего следующий формат:
1имя 0 MATRIX
A,B,C
Поле A оператора не используется и сохранено в
GPSS/PC для
совместимости со старыми версиями GPSS. В полях B и C
указываются
соответственно число строк и столбцов матрицы,
задаваемые констан-
тами, причем общее число элементов, равное произведению
B на C, не
должно превышать 8191. Например, оператор
MTAB MATRIX ,10,2
определяет матрицу с именем MTAB, содержащую десять
строк и два
столбца.
Ш1
INITIAL X$TARR,100
INITIAL X$TSRV,160
STO2 STORAGE 2
EXP 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.85/.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 X$TARR,FN$EXP
ENT1 GATE SNF STO2,REFUS
ENTER STO2
ADVANCE X$TSRV,FN$EXP
LEAVE STO2
OUT TERMINATE 1
REFUS TRANSFER .1,,COUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
COUT SAVEVALUE NREF+,1
TRANSFER ,OUT
Ш1.5
Рис. 15
- 33 -
.
В начале моделирования элементы всех определенных
матриц уста-
навливаются равными 0. Для установки отличных от 0
начальных значе-
ний отдельных элементов матриц используется оператор
INITIAL, имею-
щий следующий формат:
Ш1
INITIAL
MX$ 1имя 0( 1a,b 0), 1значение
Ш1.5
INITIAL
MX 1j 0( 1a,b) 0, 1значение
Здесь 1имя 0и 1j 0-
соответственно имя и номер матрицы; 1a 0и 1b 0- номера
соответственно строки и столбца, задаваемые константами;
1значение 0-
присваиваемое элементу матрицы начальное значение,
задаваемое также
константой.
Для изменения значений элементов матриц в процессе
моделирова-
ния служит блок MSAVEVALUE (сохранить значение элемента
матрицы),
имеющий следующий формат:
1имя 0 MSAVEVALUE
A,B,C,D
В поле A указывается имя или номер матрицы, после
которого,
как и в блоке SAVEVALUE, может стоять знак + или -. В
полях B и C
указываются номера соответственно строки и столбца,
определяющие
изменяемый элемент матрицы. В поле D указывается
величина, исполь-
зуемая для изменения заданного элемента матрицы.
Например:
Ш1
MSAVEVALUE 5,3,2,X1
Ш1.5
MSAVEVALUE MTAB+,P$ROW,P$COL,1
Матрицы имеют единственный СЧА с названием MX,
ссылка на кото-
рый записывается в следующем виде:
Ш1
MX$ 1имя 0( 1a,b 0)
Ш1.5
MX 1j 0( 1a,b)
Здесь 1имя 0и 1j 0-
соответственно имя и номер матрицы; 1a 0и 1b 0- номера
соответственно строки и столбца, задаваемые константами
или ссылка-
ми на СЧА параметров транзактов. Например:
Ш1
MX5(2,1)
Ш1.5
MX$MTAB(P$ROW,P$COL)
2.6. Блоки для работы со списками пользователя
Так как заблокированные транзакты находятся в
списке текущих
событий, то при большом количестве таких транзактов
симулятор
расходует слишком много времени на просмотр этого
списка с целью
выбора очередного транзакта для продвижения. Для экономии
машинного
времени заблокированные транзакты целесообразно помещать
в так на-
зываемые 1списки пользователя 0и оставлять их
там до тех пор, пока не
выполнятся условия, позволяюшие дальнейшее продвижение
этих тран-
зактов. Кроме того, размещение ожидающих транзактов в
списках поль-
зователя позволяет организовать различные дисциплины
очередей, от-
- 34 -
личные от дисциплины "раньше пришел - раньше
обслужен", реализован-
|