Материал: Цифровой концентратор

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Блок 8. Генерируем случайное число и сравниваем его с вероятностью обслуживания. Если полученное число меньше, то переходим к блоку 9. Если больше - к блоку 18.

Блок 9-13. Позволяем вошедшему сообщению использовать многоканальное устройство. Ставим его в очередь, задерживаем на время обслуживания, потом освобождаем очередь и многоканальное устройство. Т.о. сообщение было обслужено.

Блок 15-16. Проверяем, все ли вызовы были обслужены. Если все вызовы уже обслужены, то переходим к блоку 46. В противном случае создаем еще одну копию входящего сообщения и переходим к блоку 4.

Блок 18. Генерируем случайное число и сравниваем его с процентом не ответов. Если полученное число меньше, то переходим к блоку 31, в противном случае (т.е. процент не ответов выше заданного уровня и мы не можем обслужить сообщение) - к блоку 19.

Блок 19-24. Позволяем вошедшему сообщению использовать многоканальное устройство. Ставим его в очередь, задерживаем на среднее время прослушивания сигнала "занято", потом освобождаем очередь и многоканальное устройство. Т.о. сообщение не было обслужено и пробыло в блоке ровно столько времени, сколько нужно на прослушивание сигнала "занято".

Блок 26. Генерируем случайное число и сравниваем его с функцией настойчивости. Если число меньше или равно функции, то переходим к блоку 27, в противном случае - к блоку 42.

Рис. 3.2 Алгоритм имитационной модели функционирования концентратора

Блок 27-30. Итак, наше сообщение не было обслужено по причине занятости абонента. Задерживаем его на время, равное интервалу между ПВ при занятости абонента и отправляем к блоку 7.

Блок 31-36. Процент не ответов в нашей сети связи ниже заданного уровня. Таким образом, мы можем обслужить еще одно сообщение. Устанавливаем связь. Позволяем вошедшему сообщению использовать многоканальное устройство. Ставим его в очередь, задерживаем его (на среднее время установления связи), потом освобождаем очередь и многоканальное устройство.

Блок 37. Имитируем отсутствие абонента. Генерируем случайное число и сравниваем его с функцией настойчивости при отсутствии абонента. Если полученное число меньше или равно функции, то переходим к блоку 38, в противном случае - к блоку 42.

Блок 38-41. Сообщение не было обслужено по причине отсутствия абонента. Задерживаем сообщение на время, равное среднему интервалу между повторными вызовами и отправляем его к блоку 7. Т.о. мы повторяем попытку.

Блок 42-45. Проверяем, все ли вызовы были обслужены. Если все вызовы уже обслужены, то переходим к блоку 46, в противном случае создаем еще одну копию входящего сообщения и переходим к блоку 4.

Блок 46-50. Записываем в память все статистические данные.

Блок 51-54. Проверяем коэффициент использования многоканального устройства. Если он ниже требуемого уровня, тогда увеличим коэффициент адаптации с тем, чтобы как можно большему числу сообщений предоставлялся свободный кадр в цифровом тракте. Тем самым мы повысим коэффициент использования многоканального устройство. Если же коэффициент выше требуемого уровня, тогда переходим к блоку 55.

Блок 55. Уничтожаем все транзакты и прогоняем модель еще раз.

3.2 Программа имитационной модели функционирования концентратора


В соответствии с блок-диаграммой составим GPSS-программу модели функционирования концентратора цифровой сети связи.

SIMULATE

SVE1 EQU 1

SVE1 STORAGE 6

INITIAL X$ABON,30

INITIAL X$INTER,12000

INITIAL X$RAZG,1200

INITIAL X$PROSL,150

INITIAL X$POFT,600

INITIAL X$OBSL,400

INITIAL X$NEOT,500

INITIAL X$UST,40

INITIAL X$ADAP,5

PER1 FVARIABLE 100000#N$EX1/X$POTER

PER2 FVARIABLE 100000#N$DL1/X$POTER

PER3 FVARIABLE 100000#X$SRED/(N$DL1+N$EX1)

BER1 FVARIABLE X$BLO1+N$ZAN-X$BLO2

BER2 FVARIABLE X$POTER+X$BLO3+X$BLO4

PER4 FVARIABLE 100000#(V$BER1/V$BER2)

*

EXP FUNCTION RN4,C24

,0/.100,.104/.200,.222/.300,.355/.400,.509/.500,.690/

.600,.915/.700,1.200/.750,1.380/.800,1.600/.840,1.830/

.880,2.120/.900,2.300/.920,2.520/.940,2.810/.950,2.990/

.960,3.200/.970,3.500/.980,3.900/.990,4.600/.995,5.300/

.998,6.200/.999,7/1,8/

*

TOCH FUNCTION P3,C7

,600/2,700/3,750/4,790/5,820/6,850/7,880

*

OTS FUNCTION P3,C3

,300/2,400/3,500

*

GENERATE 1,,,1

SPLIT X$ABON,ACT

TERMINATE

ACT ADVANCE X$INTER,FN$EXP

ASSIGN 3,1

SAVEVALUE POTER+,1

*

VHO TEST LE S1,X$ADAP

TEST L RN6,X$OBSL,IPV

ENTER 1

QUEUE 1

ADVANCE X$RAZG,FN$EXP

DEPART 1

LEAVE 1

*

DL1 SAVEVALUE SRED+,P3

TEST NE TG1,1,ED1

SPLIT 1,ACT

TERMINATE 1

*

IPV TEST G RN7,X$NEOT,NOT

SAVEVALUE BLO2+,1

ENTER 1

QUEUE 1

ZAN ADVANCE X$PROSL,FN$EXP

DEPART 1

LEAVE 1

*

OTK SAVEVALUE BLO1+,1

TEST LE RN5,FN$TOCH,EX1

SAVEVALUE BLO3+,1

ASSIGN 3+,1

ADVANCE X$POFT,FN$EXP

TRANSFER ,VHO

*

NOT SAVEVALUE ADR+,1

ENTER 1

QUEUE 1

ADVANCE X$UST,FN$EXP

DEPART 1

LEAVE 1

TEST LE RN6,FN$OTS,EX1

SAVEVALUE BLO4+,1

ASSIGN 3+,1

ADVANCE X$POFT,FN$EXP

TRANSFER ,VHO

EX1 SAVEVALUE SRED+,P3

TEST NE TG1,1,ED1

SPLIT 1,ACT

TERMINATE 1

ED1 SAVEVALUE RES1,V$PER1

SAVEVALUE RES2,V$PER2

SAVEVALUE RES3,V$PER3

SAVEVALUE RES4,V$PER4

TERMINATE 1

GENERATE 1000

SAVEVALUE ADAP,5

TEST G SR1,800,KON

SAVEVALUE ADAP,6

KON TERMINATE

START 500

0341 REPORT REPORT.GPS

END

Поясним текст программы.

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

SVE1 EQU 1

Блок EQU предназначен для присвоения числовых значений именам, используемым в модели (т.к. для присваивания именам нужных номеров, необходимо, перед использованием имен присвоить им соответствующие номера).

Устройству SVE1 присвоили номер 1.

SVE1 STORAGE 6

Блок STORAGE определяет емкость многоканального устройства в текущей модели. Когда сообщение пытается войти в блок ENTER, то запрос на емкость многоканального устройства сравнивается с доступной емкостью многоканального устройства. Если запрос может быть выполнен, то сообщение входит в блок ENTER, и емкость доступной памяти многоканального устройства уменьшается. Если запрос сообщения не может быть удовлетворен, то сообщение входит в список задержки многоканального устройства.

Многоканальное устройство SVE1 имеет емкость 6.

В данном случае емкость SVE1 определяет число кадров в цифровом тракте.

INITIAL X$ABON,30

Блок INITIAL позволяет задавать начальные значения ячеек.

Ячейка с именем ABON имеет начальное значение равное 30.

Ячейка ABON определяет число абонентов в подсети.

INITIAL X$INTER,12000

Ячейка с именем INTER имеет начальное значение равное 12000.

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

INITIAL X$RAZG,1200

Ячейка с именем RAZG имеет начальное значение равное 1200.

Ячейка RAZG определяет среднюю длительность разговора.

INITIAL X$PROSL,150

Ячейка с именем PROSL имеет начальное значение равное 150.

Ячейка PROSL определяет среднюю длительность прослушивания сигнала "занято".

INITIAL X$POFT,600

Ячейка с именем POFT имеет начальное значение равное 600.

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

INITIAL X$OBSL,400

Ячейка с именем OBSL имеет начальное значение равное 400.

Ячейка OBSL определяет вероятность обслуживания (в тысячных долях).

INITIAL X$NEOT,500

Ячейка с именем NEOT имеет начальное значение равное 500.

Ячейка NEOT определяет процент не ответов (в тысячных долях).

INITIAL X$UST,40

Ячейка с именем UST имеет начальное значение равное 40.

Ячейка UST определяет среднюю длительность установления связи.

INITIAL X$ADAP,5

Ячейка с именем ADAP имеет начальное значение равное 5.

Ячейка ADAP определяет порог адаптации.

0055 PER1 FVARIABLE 100000#N$EX1/X$POTER

Блок FVARIABLE определяет переменные с плавающей точкой.

Переменная PER1 равна: 100000 умножить на значение счетчика числа входов в блок EX1 (этот счетчик изменяется при каждом входе сообщения в блок EX1) и делить на значение переменной POTER, которая содержит суммарное число первичных вызовов.

Переменная PER1 определяет вероятность потери по времени.

0060 PER2 FVARIABLE 100000#N$DL1/X$POTER

Переменная PER2 определяет вероятность успешного завершения разговора.

0065 PER3 FVARIABLE 100000#X$SRED/(N$DL1+N$EX1)

Переменная PER3 равна: значение переменной SRED (содержит сумму повторных попыток) умножить на 100000 и делить на сумму значений счетчиков числа входов в блоки DL1 и EX1.

Переменная PER3 определяет среднее число попыток на один вызов.

0070 BER1 FVARIABLE X$BLO1+N$ZAN-X$BLO2

Переменная BER1 равна: значение переменной BLO1 (содержит число блокировок из-за отсутствия кадра) плюс значение счетчика числа входов в блок ZAN и минус значение ячейки BLO2 (содержит число состояний занято).

0071 BER2 FVARIABLE X$POTER+X$BLO3+X$BLO4

Переменная BER2 равна: значение переменной POTER плюс значение переменной BLO3 (содержит число повторных попыток при занятости адресата) плюс значение переменной BLO4 (содержит число повторных попыток при не ответе абонента).

0072 PER4 FVARIABLE 100000#(V$BER1/V$BER2)

Переменная PER4 равна: 100000 умножить на значение переменной BER1 и делить на значение переменной BER2.

Переменная PER4 определяет вероятность блокировки в абонентском тракте.

EXP FUNCTION RN4,C24

,0/.100,.104/.200,.222/.300,.355/ ...

Блок FUNCTION описывает функцию. Функция EXP является непрерывной числовой (С) функцией с числом пар значений X и Y равным 24. Функция принимает значение 0 с вероятностью 0; 0,104 - с вероятностью 0,100 и т.д. В качестве аргумента функции используется случайное число RN4.

Функция EXP - экспоненциальная функция.

TOCH FUNCTION P3,C7

,600/2,700/3,750/4,790/5,820/6,850/7,880

Функция TOCH является непрерывной числовой (С) функцией с числом пар значений X и Y равным 7. При значениях первого параметра транзакта Р3 функция с именем TOCH будет принимать значения: 600, если Р3 будет равен 1; 700, если Р3 будет равен 2 и т.д.

Функция TOCH - точная функция настойчивости.

OTS FUNCTION P3,C3

,300/2,400/3,500

Функция OTS является непрерывной числовой (С) функцией с числом пар значений X и Y равным 3. При значениях первого параметра транзакта Р3 функция с именем OTS будет принимать значения: 300, если Р4 будет равен 1; 400, если Р4 будет равен 2 и т.д.

Функция OTS - функция настойчивости при отсутствии абонента.

GENERATE 1,,,1

Блок GENERATE осуществляет ввод транзактов в модель.

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

SPLIT X$ABON,ACT

Блок SPLIT выполняет функцию копирования входящего в него сообщения, которое называется исходным или порождающим.

Создает число копий, указанное в ячейке с именем ABON, затем переходит к блоку с меткой ACT. Т.о. мы получили заданное число источников.

TERMINATE

Блок TERMINATE удаляет из модели входящие сообщения (транзакты).

Т.к. поле А пусто, то сообщение уничтожается, а содержимое счетчика не изменяется.

0140 ACT ADVANCE X$INTER,FN$EXP

Блок ADVANCE задерживает продвижение транзактов на заданный период времени.

Среднее время пребывания сообщения в блоке ADVANCE задано в ячейке с именем INTER, способ модификации среднего значения задан функцией EXP. Т.о. мы задали интервал между вызовами.

ASSIGN 3,1

Блок ASSIGN заменяет, увеличивает или уменьшает текущее значение параметра сообщения на заданное значение.

В значении параметра с номером 3 сохраняется значение 1. Параметр 3 содержит число ПВ.

SAVEVALUE POTER+,1

Блок SAVEVALUE используется для замены, увеличения или уменьшения текущего содержимого значений.

Значение 1 добавляется к значению переменной POTER, которая содержит суммарное число первичных вызовов.

0155 VHO TEST LE S1,X$ADAP

Блок TEST определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет.

В данном случае сравнивается содержимое многоканального устройства под номером 1 (S1) со значением, хранимым в ячейке с именем ADAP. S1 должна быть меньше или равна (LE) значению ячейки ADAP. Т.к. поле С блока TEST пусто, то транзакты не могут войти в блок TEST до тех пор, пока условия не изменятся таким образом, что отношение будет истинно. Как только отношение будет истинно, сообщение войдет в блок TEST и пытается перейти к следующему по номеру блоку. Т.о. мы проверили наличие свободного кадра.

0160 TEST L RN6,X$OBSL,IPV

Сравнивается значение случайной величины RN6 (ее значение колеблется от 0 до 1) со значением, хранимым в ячейке с именем OBSL (вероятность обслуживания). RN6 должна быть меньше (L) значения ячейки OBSL. Если отношение истинно, то транзакт переходит к следующему блоку. Если отношение ложно - к блоку с меткой IPV.

Т.о. мы осуществили проверку обслуживания.

ENTER 1

Блок ENTER позволяет вошедшему сообщению использовать многоканальное устройство.

Занимаем многоканальное устройство под номером 1.

QUEUE 1

Блок QUEUE увеличивает длину очереди.

Длина очереди под номером 1 увеличивается на 1 (поскольку операнд В отсутствует). Если очередь еще не существует, то она создается.

ADVANCE X$RAZG,FN$EXP

Среднее время пребывания сообщения в блоке ADVANCE задано в ячейке с именем RAZG, способ модификации среднего значения задан функцией EXP. Т.о. мы задержали сообщение на время, равное средней длительности разговора.

DEPART 1

Блок DEPART служит для уменьшения длины очереди.

Длина очереди под номером 1 уменьшается на 1 (поскольку операнд В отсутствует).

LEAVE 1

Блок LEAVE освобождает определенное число единиц многоканального устройства.

Освобождается одна единица (т.к. операнд В отсутствует) многоканального устройства под номером 1.

DL1 SAVEVALUE SRED+,P3

Значение Р3 добавляется к значению переменной SRED, которая содержит сумму повторных попыток.

TEST NE TG1,1,ED1

Сравнивается текущее значение счетчика завершений TG1 (сообщения, вошедшие в блоки TERMINATE с ненулевым операндом А, уменьшают значение этого счетчика на число, равное значению операнда А) с единицей. TG1 должна быть не равна (NE) единице. Если отношение истинно, то транзакт переходит к следующему блоку. Если отношение ложно - к блоку с меткой ED1. Таким образом, мы проверили, все ли вызовы (транзакты) мы обслужили.

SPLIT 1,ACT

Создает одну копию входящего сообщения и переходит к блоку с меткой ACT.

0185 TERMINATE 1

Уничтожает транзакт.

IPV TEST G RN7,X$NEOT,NOT

Сравнивается значение случайной величины RN7 (ее значение колеблется от 0 до 1) со значением хранимым в ячейке с именем NEOT (процент не ответов). RN7 должна быть больше (G) значения ячейки NEOT. Если отношение истинно, то транзакт переходит к следующему блоку. Если отношение ложно - к блоку с меткой NOT.

SAVEVALUE BLO2+,1

Значение 1 добавляется к значению переменной BLO2, которая содержит число состояний занято.

ENTER 1

Занимается многоканальное устройство под номером 1.

QUEUE 1

Длина очереди под номером 1 увеличивается на 1 (поскольку операнд В отсутствует).

0198 ZAN ADVANCE X$PROSL,FN$EXP

Среднее время пребывания сообщения в блоке ADVANCE задано в ячейке с именем PROSL, способ модификации среднего значения задан функцией EXP. Т.о. мы задержали сообщение на время, равное среднему времени прослушивания сигнала "занято".

DEPART 1

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

LEAVE 1

Освобождается одна единица (т.к. операнд В отсутствует) многоканального устройства под номером 1.

OTK SAVEVALUE BLO1+,1

Значение 1 добавляется к значению переменной BLO1.

0210 TEST LE RN5,FN$TOCH,EX1

Сравнивается значение случайной величины RN5 (ее значение колеблется от 0 до 1) со значением функции TOCH. RN5 должна быть меньше или равна (LE) значению функции TOCH. Т.к. поле С блока TEST пусто, то транзакты не могут войти в блок TEST до тех пор, пока условия не изменятся таким образом, что отношение будет истинно. Как только отношение будет истинно, сообщение войдет в блок TEST и пытается перейти к следующему по номеру блоку.