Опубликован: 15.02.2013 | Доступ: свободный | Студентов: 256 / 0 | Длительность: 16:52:00
ISBN: 978-5-9556-0146-5
Лекция 5:

Модель функционирования сети связи

Переключение между областями просмотра

Переключение между областями просмотра организуем так, чтобы можно было из сети переходить к любому абоненту, каналу, маршрутизатору и обратно. В каждом активном объекте - к данным и обратно или в сеть.

Для переключения используем элемент button из палитры Элементы управления.

  1. Перетащите элемент button (см. рис. 4.18).
  2. На странице Основные панели Свойства укажите:
    • Метка: Абонент1
    • Действие: абонент1.облАбонент1.navigateTo()
  3. Скопируйте кнопку Абонент1. Вставьте пять раз. Последовательно откройте и внесите соответствующие правки в полях Метка: и Действие:.
  4. Перетащите элемент button. Укажите свойства:
    • Метка: Результаты
    • Действие: viewData.navigateTo()
  5. Перетащите элемент button. Укажите свойства:
    • Метка: маршрут1
    • Действие: маршрут1.облМарш.navigateTo()
  6. Скопируйте кнопку маршрут1. Скорректируйте свойства:
    • Метка: маршрут2
    • Действие: маршрут2.облМарш.navigateTo()
Область просмотра облКан

Рис. 4.19. Область просмотра облКан

Так как каналов 12, то давайте создадим ещё одну область просмотра облКан, и на ней разместим 12 кнопок (рис. 4.19).

  1. Перетащите из палитры Презентация элемент Область просмотра. На странице Основные в поле Имя: введите облКан.
  2. Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 0, Y: 1780, Ширина: 450, Высота: 200.
  3. Перетащите элемент button.
  4. На странице Основные панели Свойства укажите:
    • Метка: Канал1
    • Действие: канал1.облКан.navigateTo()
  5. Скопируйте кнопку Канал1. Вставьте одиннадцать раз. Последовательно откройте и внесите соответствующие правки в полях Метка: и Действие:. Например:
    • Метка: Канал2
    • Действие: Канал2.облКан.navigateTo()
  6. Перетащите элемент button.
  7. На странице Основные панели Свойства укажите:
    • Метка: Сеть
    • Действие: облСеть.navigateTo()
  8. Перейдите на область просмотра облСеть. Перетащите элемент button.
  9. На странице Основные панели Свойства укажите:
    • Метка: Каналы
    • Действие: облКан.navigateTo()

Нам осталось добавить элементы для переключения между областями просмотра на классах активных объектов и возвращения на корневой объект Main на область просмотра облСеть.

Последовательно переходите от объекта к объекту, добавляя на них нужное число элементов button и устанавливая значения свойств согласно табл. 4.10. Размещение этих элементов было уже показано на рис. 4.3… 4.6, 4.8, 4.10, 4.11, 4.16… 4.18.

Таблица 4.10.
Объект Область просмотра Свойства Значение
Абонент облАбонент Метка: Сеть
Действие: get_Main().облСеть.navigateTo()
облАбонент Метка: Исходные данные
Действие: viewData.navigateTo()
viewData Метка: Сеть
Действие: get_Main().облСеть.navigateTo()
viewData Метка: Абонент
Действие: облАбонент.navigateTo()
Канал облКан Метка: Сеть
Действие: get_Main().облСеть.navigateTo()
облКан Метка: Данные
Действие: viewData.navigateTo()
viewData Метка: Канал
Действие: облКан.navigateTo()
Маршрутизатор облМарш Метка: Сеть
Действие: get_Main().облСеть.navigateTo()
облМарш Метка: Данные
Действие: viewData.navigateTo()
viewData Метка: Сеть
Действие: get_Main().облСеть.navigateTo()
viewData Метка: Маршрутизатор
Действие: облМарш.navigateTo()
Маршрутизатор1 облМарш Метка: Сеть
Действие: get_Main().облСеть.navigateTo()
облМарш Метка: Данные
Действие: viewData.navigateTo()
viewData Метка: Сеть
Действие: get_Main().облСеть.navigateTo()
viewData Метка: Маршрутизатор
Действие: облМарш.navigateTo()

Запуск и отладка модели

Прежде чем запустить модель:

  1. В окне Проекты выделите Сеть_связи.
  2. На странице Основные в поле Единицы модельного времени: установите секунды.
  3. В окне Проекты выделите Simulation: Main.
  4. На странице Основные установите Фиксированное начальное число (воспроизводимые "прогоны").
  5. В поле Начальное число: введите 897.
  6. Перейдите на страницу Модельное время. В поле Остановить: выберите В заданное время.
  7. В поле Конечное время: введите 3600000.0. Время моделирования увеличено в 1000 раз по числу прогонов модели.
  8. Запустите модель. Если появятся ошибки, исправьте их.

При правильном построении модели вы получите результаты, показанные на рис. 4.20.

Среди них показатели качества обслуживания сети связи: коэффициент пропускной способности 0,815 и среднее время передачи одного сообщения 6,050. Коэффициент пропускной способности, например, абонент 2- абонент 3 равен 0,816. Обратите внимание на существенную разницу между минимальным и максимальным временами передачи сообщения. Она объясняется принятым экспоненциальным законом распределения времени передачи сообщений: максимальное значение может отличаться от среднего значения в восемь раз.

Количество отправленных и полученных сообщений всего и по категориям рассчитано за один прогон модели, то есть за 3600 сек. Для расчёта, как вы помните, был введён параметр kolProg=1000 и в 1000 раз было увеличено модельное время. Всего отправлено сообщений 600,559, а получено всего абонентами - 490,035. Если разделить количество полученных сообщений на количество отправленных, то и будет получен коэффициент пропускной способности сети.

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

Перейдите в область просмотра Сеть, щёлкнув кнопку Сеть. Затем, щёлкните, например, кнопку Абонент2. Вы увидите результаты моделирования, показанные на рис. 4.21.

Результаты моделирования

увеличить изображение
Рис. 4.20. Результаты моделирования
Результаты моделирования по абоненту 2

Рис. 4.21. Результаты моделирования по абоненту 2

Модель в GPSS World

Состав GPSS-модели

Модель в GPSS World разработана согласно постановке и включает следующие элементы:

  • задание исходных данных:
    • определение матриц;
    • описание функций, задающих исходные данные;
    • арифметические выражения;
  • сегмент имитации поступления сообщений от источников:
    • розыгрыш абонентов-получателей сообщений;
    • розыгрыш категории сообщения и счёта сообщений;
    • розыгрыш характеристик сообщений;
  • сегмент имитации работы основных каналов 1-6;
  • сегмент имитации работы маршрутизатора 1;
  • сегмент имитации работы маршрутизатора 2;
  • сегмент имитации работы основных каналов 7-10;
  • сегмент имитации работы основных каналов 11-12;
  • сегмент имитации получения сообщений;
  • сегмент имитации работы резервных каналов 13-18;
  • сегмент имитации работы резервных каналов 19-24;
  • сегмент имитации работы резервных каналов 19-24;
  • сегмент имитации отказов ВК1;
  • сегмент имитации отказов ВК2;
  • сегмент имитации отказов каналов связи 1-6;
  • сегмент имитации отказов каналов связи 7-12;
  • сегмент счёта переданных и потерянных сообщений и расчёт вероятностей передачи сообщений;
  • задание времени моделирования и расчёт результатов.

GPSS-программа

Ввод данных в виде массивов организован таким образом, во-первых, чтобы в программе было меньшее количество строк, во-вторых, чтобы удобнее было использовать эти данные при написании программы модели и, в-третьих, чтобы при изменении числа элементов массива требовалась бы незначительная коррекция. Для организации такого ввода использованы функции. Например, функцией S_ задаются средние вычислительные сложности (длины) сообщений. Выборка соответствующей средней длины в зависимости от категории осуществляется по аргументу, представляющему собой параметр транзакта Р1. В этот параметр заранее посредством розыгрыша заносится код категории.

Сообщения имитируются транзактами с параметрами, необходимыми согласно логике работы модели. Каналы связи и ВК имитируются одноканальными устройствами (ОКУ): основные каналы связи - ОКУ1…ОКУ12, резервные каналы - ОКУ13…ОКУ24, ВК1 - ОКУ25, ВК2 - ОКУ26.

Для одновременной проверки выполнения каких-либо условий используются булевы переменные. Например, булева переменная Prov2 проверяет исправность ВК1 и наличие свободной ёмкости входного буфера, достаточной для размещения поступившего сообщения. Эти проверки можно выполнить и по отдельности, но использование булевой переменной более эффективно. Булева переменная Prov1 используется для выделения сообщений, адресованных абонентам 5 и 6.

Количество отправленных сообщений каждым абонентом каждому абоненту сети накапливается в матрице Otpr, а количество полученных сообщений каждым абонентом от каждого абонента сети - в матрице Pol. По эти статистическим данным рассчитываются коэффициенты пропускной способности абонент-абонент и записываются в матрицу KPS.

Коэффициент пропускной способности сети (КПС) связи в целом сохраняется в ячейке VPerS. А среднее время передачи одного сообщения - в ячейке TimeS.

GPSS-программа приведена ниже.

; Модель функционирования сети связи
 Определение матриц
Otpr  MATRIX  ,6,6  ; Матрица для записи отправленных сообщений
Pol  MATRIX  ,6,6 ; Матрица для записи полученных сообщений
KPS  MATRIX  ,6,6 ; Матрица для записи коэффициентов пропускной способности
; Задание исходных данных
VrMod EQU    3600  ; Время моделирования,1 ед. мод. вр.=1с
KolAb EQU    6    ; Количество абонентов сообщений
Q_     EQU    40000  ; Производительность ВК, оп/c
V_     EQU  40000  ; Скорость передачи, бит/с
MaxKat  EQU  4  ; Количество категорий сообщений
NKan    EQU  12  ; Количество каналов передачи данных
KolNapr  EQU  4  ; Количество направлений в маршрутизаторе
KolBK  EQU  2  ; Количество ВК
T5    EQU  0.1  ; Время включения резервного канала
EmkBK1  EQU  5000000  ; Ёмкость входного буфера ВК1
EmkBK2  EQU  5000000  ; Ёмкость входного буфера ВК2
; Описание функций, задающих исходные данные
NaprM1  FUNCTION  P$NumPol,D6 ; Таблица адресов в маршрутизаторе 1
1,1/2,1/3,2/4,2/5,3/6,4
NaprM2  FUNCTION  P$NumPol,D4 ; Таблица адресов в маршрутизаторе 2
1,1/2,2/3,3/4,4
TOtkBK  FUNCTION  P4,D2  ; Среднее время между отказами ВК
1,3600/2,3600
TVosstBK  FUNCTION P4,D2; Среднее время восстановления ВК
1,3.7/2,3.7
TOtkKan   FUNCTION  P4,D12 ; Среднее время между отказами каналов
1,3600/2,3600/3,3600/4,3600/5,3600/6,3600/7,3600/
8,3600/9,3600/10,3600/11,3600/12,3600
TVosstKan  FUNCTION  P4,D12 ; Среднее время восстановления каналов
1,3.2/2,3.2/3,3.2/4,3.2/5,3.2/6,3.2/7,3.2/8,3.2/
9,3.2/10,3.2/11,3.2/12,3.2
TimeAb  FUNCTION  P$NumOtpr,D6 ; Среднее время передачи сообщений от абонентов
1,30/2,30/3,30/4,30/5,30/6,30
Kat  FUNCTION  RN897,D4 ; Вероятности видов категорий
.3,1/.5,2/.7,3/1,4
S_  FUNCTION  P1,D4  ; Средние вычислительные сложности сообщений (длины), оп (байт) по категориям
1,53000/2,86000/3,66000/4,50000
So_  FUNCTION  P1,D4  ; Среднеквадратические отклонения вычислительных сложностей (длин) сообщений, оп (байт) по категориям
1,6100/2,5000/3,7000/4,500
EmkNaprM1  FUNCTION  P$NumNapr,D4 ; Ёмкости накопителей направлений, байт
1,250000/2,250000/3,250000/4,250000
EmkNaprM2  FUNCTION  P$NumNapr,D4 ; Ёмкости накопителей направлений, байт
5,250000/6,250000/7,250000/8,250000
BufAb  FUNCTION  P$NumPol,D6  ; Ёмкости входных буферов абонентов
1,80000/2,80000/3,80000/4,80000/5,80000/6,80000
Prov1  BVARIABLE  (P$NumPol'E'5)'OR'(P$NumPol'E'6)
Prov2 BVARIABLE  (FV*NumBK1)'AND'(P2'LE'(EmkBK1-Q*NumBK1))
Prov3   BVARIABLE  (FV*NumBK2)'AND'(P2'LE'(EmkBK2-Q*NumBK2))
 Арифметические выражения вычисления
DL  VARIABLE  INT(NORMAL(897,FN$S_,FN$So_))  ; Длин (вычислительных сложностей) сообщений
VrPer  VARIABLE  (P2/V_) ; Времени передачи сообщения
VrObr  VARIABLE  P2/Q_  ; Времени обработки сообщения
; Сегмент имитации поступления сообщений от источников
  GENERATE  ,,,KolAb    ; Число транзактов по числу абонентов
  SAVEVALUE  Num+,1;Нумерация абонента-отправителя
  ASSIGN  NumOtpr,X$Num ; Номер абонента-отправителя в NumOtpr
Soob  ADVANCE  (Exponential(897,0,FN$TimeAb))  ; Время отправления сообщений
  SPLIT  1,Soob  ; Создание двойника сообщения
 Розыгрыш абонентов-получателей сообщений
Met1  SAVEVALUE  VerAb,(RN897/1000); Получение РРСЧ
Met2  ASSIGN  NumPol+,1 ; В Р$NumPol номер абонента-получателя сообщения
  TEST LE  X$VerAb,(P$NumPol#(1/KolAb)),Met2
  TEST NE  P$NumOtpr,P$NumPol,Met6  ; Отправитель не себе ли отправляет?
 Розыгрыш категории сообщения и счёта сообщений
Met4  ASSIGN  1,FN$Kat  ; В Р1 код категории и счет сообщений всех категорий
  ASSIGN  TimeVxod,AC1 ; Запись времени входа сообщения в сеть
  ASSIGN  10,(200+P1) ; В Р10 номера Х для счета отправленных сообщений по категориям
  ASSIGN  11,(P10+MaxKat) ; В Р11 номера Х для счета полученных сообщений по категориям
  ASSIGN  12,(P11+MaxKat) ; В Р12 номера Х для счета потерянных сообщений по категориям
  ASSIGN  13,(P12+MaxKat) ; В Р13 номера Х для записи КПС полученных сообщений по категориям
  ASSIGN  14,(P13+MaxKat) ; В Р14 номера Х для записи КПС потерянных сообщений по категориям
  SAVEVALUE  *10+,1 ; Cчет отправленных сообщений по категориям
  MSAVEVALUE Otpr+,P$NumOtpr,P$NumPol,1 ; Запись в матрицу количества отправляемых сообщений абонентам
 Розыгрыш характеристик сообщений
Met02  ASSIGN  2,V$DL ; Занесение в Р2 длины (вычислительной сложности) сообщения
  ASSIGN  3,V$VrPer ; Занесение в Р3 времени передачи сообщения
  ASSIGN  8,V$VrObr ; Занесение в Р8 времени обработки сообщения
; Сегмент имитации работы основных каналов 1-6
OsnK1  GATE FV  P$NumOtpr,ResK1 ; Исправен ли канал?
  ASSIGN  Vsp1,P$NumOtpr  ; Запись в параметр Vsp1 номера абонента отправителя
  GATE NU  P$Vsp1;Свободен канал с номером в P$Vsp1?
  SEIZE  P$Vsp1; Занять канал с номером в P$Vsp1
  ADVANCE  P3      ; Имитация передачи сообщения
  RELEASE   P$Vsp1 ; Освободить канал с номером в P$Vsp1
; Сегмент имитации работы маршрутизатора 1
Met11  ASSIGN  NumBK1,(2#NKan+1); Запись в параметр номера маршрутизатора как ОКУ
  TEST E  BV$Prov2,1,Met5 ; Исправен ли ВК1 и есть ли место в его буфере?
  QUEUE  P$NumBK1,P2   ; Если есть, поместить в буфер ВК1
Met14  SEIZE  P$NumBK1     ; Занять ВК1
  DEPART  P$NumBK1,P2    ; Освободить буфер ВК1
  ADVANCE  P8      ; Имитация обработки сообщения
  ASSIGN  NumNapr,FN$NaprM1 ; Определение номера направления маршрутизатора 1  
  RELEASE  P$NumBK1  ; Освобождение ВК1
  TEST LE P2,(FN$EmkNaprM1-Q*NumNapr),Met5; Есть ли место в буфере направления
  QUEUE  P$NumNapr,P2 ; Поместить в буфер направления
  TEST NE P$NumPol,5,Met21 ; Выделение сообщения для абонента 5
  TEST NE P$NumPol,6,Met21 ; Выделение сообщения для абонента 6
  TRANSFER  ,Met15 ; Отправить на маршрутизатор 2 сообщения  для абонентов 1-4 
Met21  DEPART  P$NumNapr,P2 ; Покинуть буфер направления маршрутизатора 1
  TRANSFER  ,Met16 ; Отправить на каналы сообщения для абонентов 5 и 6
Met15  DEPART  P$NumNapr,P2 ; Покинуть буфер направления маршрутизатора 1
; Сегмент имитации работы маршрутизатора 2
  ASSIGN  NumBK2,(2#NKan+2)
  TEST E  BV$Prov3,1,Met5 ; Если маршрутизатор 2 исправен и есть место в его буфере, то
  QUEUE  P$NumBK2,P2 ; поместить в буфер маршрутизатора 2
  SEIZE  P$NumBK2  ; Занять BK2
  DEPART  P$NumBK2,P2 ; Покинуть буфер маршрутизатора 2
  ADVANCE  P8  ; Имитация обработки сообщения
  RELEASE  P$NumBK2  ; Освобождение BK2
  TEST E  P$NumPol,1,Met24
; Определить номер направления маршрутизатора 2
  ASSIGN  NumNapr,(KolNapr+1) 
  TEST LE  P2,(FN$EmkNaprM2-Q*NumNapr),Met5
  TRANSFER  ,Met25
Met24  TEST E  P$NumPol,2,Met26
  ASSIGN  NumNapr,(KolNapr+2) ; Определить номер направления маршрутизатора 2
  TEST LE  P2,(FN$EmkNaprM2-Q*NumNapr),Met5
  TRANSFER  ,Met25
Met26  TEST E  P$NumPol,3,Met27
  ASSIGN  NumNapr,(KolNapr+3) ; Определить номер направления маршрутизатора 2
  TEST LE  P2,(FN$EmkNaprM2-Q*NumNapr),Met5
  TRANSFER  ,Met25
Met27  TEST E  P$NumPol,4,Met24
  ASSIGN  NumNapr,(KolNapr+4) ; Определить номер направления маршрутизатора 2
  TEST LE  P2,(FN$EmkNaprM2-Q*NumNapr),Met5
Met25  QUEUE  P$NumNapr,P2 ; Поместить в буфер направления маршрутизатора 2
; Сегмент имитации работы основных каналов 7-10  
  ASSIGN  Vsp1,(KolAb+P$NumPol); Определение каналов 7-10
  DEPART  P$NumNapr,P2 ; Покинуть буфер направления маршрутизатора 2
  GATE FV  P$Vsp1,ResK2 ; Если исправен основной канал, 
  GATE NU  P$Vsp1  ; и свободен, то
  SEIZE  P$Vsp1  ; занять его
  ADVANCE  P3  ; Передача сообщения
  RELEASE  P$Vsp1  ; Освободить канал
  TRANSFER  ,Met17 ; Отправить для имитации получения сообщения
; Сегмент имитации работы основных каналов 11-12  
Met16  ASSIGN  Vsp1,(KolAb+P$NumPol); Определение каналов 11-12
  GATE FV  P$Vsp1,ResK2 ; Если исправен основной канал, 
  GATE NU  P$Vsp1       ; и свободен, то
  SEIZE  P$Vsp1       ; занять его
Met20  ADVANCE  P3         ; Передача сообщения
  RELEASE P$Vsp1       ; Освободить канал
; Сегмент имитации получения сообщений
Met17  ASSIGN  Vsp3,(2#KolNapr+P$NumPol); Запись в Vsp3 номера буфера абонента-получателя
  TEST LE P2,(FN$BufAb-Q*Vsp3),Met5 ; Есть ли место в буфере абонента получателя?
  QUEUE  P$Vsp3,P2 ; Поместить сообщение в буфер
  DEPART  P$Vsp3,P2 ; Освободить буфер
  TRANSFER  ,Met10  ; Отправить для счёта полученных сообщений
; Сегмент имитации работы резервных каналов 13-18
ResK1  ASSIGN  Vsp1,(NKan+P$NumOtpr)
  GATE NU  P$Vsp1  ; Свободен ли резервный канал?
  TEST E  X*Vsp1,1,Met7 ; Включить резервный канал
  ADVANCE  T5  ; Включение резервного канала
  SAVEVALUE  P$Vsp1,0 ; Признак того, что резервный канал включён
Met7  SEIZE  P$Vsp1   ; Занять резервный канал
  ADVANCE  P3  ; Передача
  RELEASE  P$Vsp1   ; Освободить резервный канал
  TRANSFER  ,Met11 ; Отправить на маршрутизатор 1
; Сегмент имитации работы резервных каналов 19-24
ResK2  ASSIGN  Vsp1,(NKan+KolAb+P$NumPol)
  TEST NE  P$NumPol,5,Met22 ; Выделение сообщения для абонента 5
  TEST NE  P$NumPol,6,Met22 ; Выделение сообщения для абонента 6
Met22  GATE NU  P$Vsp1 ; Свободен ли резервный канал?
  TEST E  X*Vsp1,1,Met8 ; Включить резервный канал
  ADVANCE  T5  ; Включение резервного канала
  SAVEVALUE  P$Vsp1,0 ; Признак включения ResK
Met8  SEIZE  P$Vsp1  ; Занять резервный канал
  ADVANCE  P3       ; Передача
  RELEASE  P$Vsp1  ; Освободить резервный канал
  TRANSFER  ,Met17 ; Отправить для имитации получения сообщения
; Сегмент имитации отказов ВК1
  GENERATE  ,,,1
  ASSIGN  4,(2#NKan+1) ; Номер BK в P4
Met50  ADVANCE  (Exponential(897,0,FN$TOtkBK)) ; Розыгрыш времени до очередного отказа
  GATE FV  P4,Met50
  FUNAVAIL  P4,RE,Met117 ; Перевод ВК в неисправное состояние
  ADVANCE  (Exponential(897,0,FN$TVosstBK))  ; Имитация восстановления
  FAVAIL  P4  ; Перевод ВК в исправное состояние
  TRANSFER  ,Met50   ; Отправить для розыгрыша очередного отказа
Met117  RELEASE  P$NumBK1 ; Освобождение ВК прерванным сообщением
  TRANSFER  ,Met5  ; Отправить для счета потерь
; Сегмент имитации отказов ВК2
  GENERATE  ,,,1
  ASSIGN  4,(2#NKan+2) ; Номер BK в P4
Met49  ADVANCE  (Exponential(897,0,FN$TOtkBK)) ; Розыгрыш времени до очередного отказа
  GATE FV  P4,Met49
  FUNAVAIL  P4,RE,Met115 ; Перевод ВК в неисправное состояние
  ADVANCE  (Exponential(897,0,FN$TVosstBK))  ; Имитация восстановления
  FAVAIL  P4  ; Перевод ВК в исправное состояние
  TRANSFER  ,Met49   ; Отправить для розыгрыша очередного отказа
Met115  RELEASE  P$NumBK2 ; Освобождение ВК прерванным сообщением
  TRANSFER  ,Met5  ; Отправить для счета потерь
; Сегмент имитации отказов каналов связи 1-6
  GENERATE  ,,,KolAb ; Число транзактов - по числу каналов связи
  SAVEVALUE  NumKan+,1 ; Записать в X$NumCan последовательно 1, 2, ..., KolAb
  ASSIGN  4,X$NumKan  ; Записать в Р4 последовательно 1, 2, ..., KolAb
Met19  ADVANCE  (Exponential(897,0,FN$TOtkKan)) ; Розыгрыш времени до очередного отказа
  GATE FV  P4,Met19
  FUNAVAIL  P4,RE,Met112 ; Перевод канала в неисправное состояние
  ASSIGN  NumKan,(NKan+P4)
  SAVEVALUE  P$NumKan,1 ; Признак включения резервного канала
  ADVANCE  (Exponential(47,0,FN$TVosstKan)) ; Имитация восстановления канала
  FAVAIL  P4  ; Перевод в исправное состояние
  TRANSFER  ,Met19   ; Отправить для розыгрыша очередного отказа
Met112  RELEASE  P$Vsp1   ; Освобождение канала с номером в Р$Vsp1
  TRANSFER  ,Met5  ; Отправить для счета потерь
; Сегмент имитации отказов каналов связи 7-12
  GENERATE  ,,,KolAb  ; Число транзактов - по числу каналов связи
  SAVEVALUE  NumKan+,1 ; Записать в X$NumCan последовательно 1, 2, ..., KolAb
  ASSIGN  4,(X$NumKan+KolAb) ; Записать в Р4 последовательно KolAb+1, ...,KolAb+KolAb 
Met23  ADVANCE  (Exponential(897,0,FN$TOtkKan)) ; Розыгрыш времени до очередного отказа
  GATE FV   P4,Met23
  FUNAVAIL  P4,RE,Met113 ; Перевод канала в неисправное состояние
  ASSIGN  NumKan,(NKan+P4)
  SAVEVALUE  P$NumKan,1 ; Признак включения резервного канала
  ADVANCE  (Exponential(47,0,FN$TVosstKan)) ; Имитация восстановления канала
  FAVAIL  P4  ; Перевод в исправное состояние
  TRANSFER  ,Met23   ; Отправить для розыгрыша очередного отказа
Met113  RELEASE  P$Vsp1   ; Освобождение канала с номером в Р$Vsp1
  TRANSFER  ,Met5  ; Отправить для счета потерь
Met6  TERMINATE  ; Уничтожение сообщений, отправленных самим себе
; Сегмент счета переданных и потерянных сообщений и расчет вероятностей передачи сообщений
Met10  SAVEVALUE  *11+,1 ; Cчет в ячейке с номером в Р11 полученных сообщений всего и по категориям
  SAVEVALUE  *13,(X*11/X*10) ; Расчет и сохранение в ячейке с номером в Р13 КПС сети по категориям
  MSAVEVALUE Pol+,P$NumPol,P$NumOtpr,1 ; Счёт и запись в матрицу полученных сообщений
  MSAVEVALUE KPS,P$NumOtpr,P$NumPol, (MX$Pol(P$NumPol,P$NumOtpr)/MX$Otpr(P$NumOtpr,P$NumPol))
  TERMINATE  
Met5  SAVEVALUE  *12+,1 ; Cчет в ячейке с номером в Р12 потерянных сообщений всего и по категориям
  TERMINATE
; Задание времени моделирования и расчёт результатов
  GENERATE  VrMod  ; Задание времени моделирования
  TEST L  X$Prog,TG1,Met30 ; Если X$Prog<TG1,
  SAVEVALUE  Prog,TG1      ; то X$Prog=TG1
Met30  TEST E  TG1,1,Met32 ; Если TG1=1, расчёт и сохранение результатов
  SAVEVALUE  TimeS,(X$TimeSum/N$Met10) ; Расчёт и сохранение в TimeS среднего времени передачи одного сообщения
  SAVEVALUE  VPerS,(N$Met10/N$Met4)  ; Расчет и сохранение в ячейке VPerS КПС сети
  SAVEVALUE  VPotS,(N$Met5/N$Met4)  ; Расчет и сохранение в ячейке VPotS КПС сети
Met32 TERMINATE  1
  START  1000
Алексей Гроссман
Алексей Гроссман

Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио.

Елена Блинаева
Елена Блинаева