Здравствуйте, прошел курс "Концептуальное проектирование систем в AnyLogic и GPSS World". Можно ли получить по нему сертификат? У нас в институте требуют сертификаты для создания портфолио. |
Модель функционирования сети связи
Переключение между областями просмотра
Переключение между областями просмотра организуем так, чтобы можно было из сети переходить к любому абоненту, каналу, маршрутизатору и обратно. В каждом активном объекте - к данным и обратно или в сеть.
Для переключения используем элемент button из палитры Элементы управления.
- Перетащите элемент button (см. рис. 4.18).
- На странице Основные панели Свойства укажите:
- Метка: Абонент1
- Действие: абонент1.облАбонент1.navigateTo()
- Скопируйте кнопку Абонент1. Вставьте пять раз. Последовательно откройте и внесите соответствующие правки в полях Метка: и Действие:.
- Перетащите элемент button. Укажите свойства:
- Метка: Результаты
- Действие: viewData.navigateTo()
- Перетащите элемент button. Укажите свойства:
- Метка: маршрут1
- Действие: маршрут1.облМарш.navigateTo()
- Скопируйте кнопку маршрут1. Скорректируйте свойства:
- Метка: маршрут2
- Действие: маршрут2.облМарш.navigateTo()
Так как каналов 12, то давайте создадим ещё одну область просмотра облКан, и на ней разместим 12 кнопок (рис. 4.19).
- Перетащите из палитры Презентация элемент Область просмотра. На странице Основные в поле Имя: введите облКан.
- Перейдите на страницу Дополнительные панели Свойства. Введите в поля X: 0, Y: 1780, Ширина: 450, Высота: 200.
- Перетащите элемент button.
- На странице Основные панели Свойства укажите:
- Метка: Канал1
- Действие: канал1.облКан.navigateTo()
- Скопируйте кнопку Канал1. Вставьте одиннадцать раз. Последовательно откройте и внесите соответствующие правки в полях Метка: и Действие:. Например:
- Метка: Канал2
- Действие: Канал2.облКан.navigateTo()
- Перетащите элемент button.
- На странице Основные панели Свойства укажите:
- Метка: Сеть
- Действие: облСеть.navigateTo()
- Перейдите на область просмотра облСеть. Перетащите элемент button.
- На странице Основные панели Свойства укажите:
- Метка: Каналы
- Действие: облКан.navigateTo()
Нам осталось добавить элементы для переключения между областями просмотра на классах активных объектов и возвращения на корневой объект Main на область просмотра облСеть.
Последовательно переходите от объекта к объекту, добавляя на них нужное число элементов button и устанавливая значения свойств согласно табл. 4.10. Размещение этих элементов было уже показано на рис. 4.3… 4.6, 4.8, 4.10, 4.11, 4.16… 4.18.
Объект | Область просмотра | Свойства | Значение |
---|---|---|---|
Абонент | облАбонент | Метка: | Сеть |
Действие: | 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() |
Запуск и отладка модели
Прежде чем запустить модель:
- В окне Проекты выделите Сеть_связи.
- На странице Основные в поле Единицы модельного времени: установите секунды.
- В окне Проекты выделите Simulation: Main.
- На странице Основные установите Фиксированное начальное число (воспроизводимые "прогоны").
- В поле Начальное число: введите 897.
- Перейдите на страницу Модельное время. В поле Остановить: выберите В заданное время.
- В поле Конечное время: введите 3600000.0. Время моделирования увеличено в 1000 раз по числу прогонов модели.
- Запустите модель. Если появятся ошибки, исправьте их.
При правильном построении модели вы получите результаты, показанные на рис. 4.20.
Среди них показатели качества обслуживания сети связи: коэффициент пропускной способности 0,815 и среднее время передачи одного сообщения 6,050. Коэффициент пропускной способности, например, абонент 2- абонент 3 равен 0,816. Обратите внимание на существенную разницу между минимальным и максимальным временами передачи сообщения. Она объясняется принятым экспоненциальным законом распределения времени передачи сообщений: максимальное значение может отличаться от среднего значения в восемь раз.
Количество отправленных и полученных сообщений всего и по категориям рассчитано за один прогон модели, то есть за 3600 сек. Для расчёта, как вы помните, был введён параметр kolProg=1000 и в 1000 раз было увеличено модельное время. Всего отправлено сообщений 600,559, а получено всего абонентами - 490,035. Если разделить количество полученных сообщений на количество отправленных, то и будет получен коэффициент пропускной способности сети.
Точно такие же результаты моделирования, коэффициенты пропускной способности, выводятся и по каждому абоненту сети.
Перейдите в область просмотра Сеть, щёлкнув кнопку Сеть. Затем, щёлкните, например, кнопку Абонент2. Вы увидите результаты моделирования, показанные на рис. 4.21.
Модель в 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