Опубликован: 07.11.2014 | Доступ: свободный | Студентов: 446 / 37 | Длительность: 15:17:00
ISBN: 978-5-9556-0161-8
Тема: САПР
Лекция 5:

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

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >

Модель в AnyLogic

Постановка задачи

В сети связи имеются n_1 абонентов, обменивающихся между собой сообщениями. Адресация сообщений организована посредством маршрутизаторов. На маршрутизатор поступают сообщения через случайные промежутки времени от n_1 абонентов со средними интервалами времени T_1, T_2, T_{n_1}.

Сообщения могут быть n_2 категорий с вероятностями их появления p_{k1}, p_{k2}, p_{kn{_2}} (p_{k1}+p_{k2}+...+p_{kn{_2}}=1) и вычислительными сложностями обработки S_1, S_2,...,S_{n_{2}} операций соответственно.

Маршрутизатор имеет k входов и k выходов, входной буфер 1 ёмкостью L_1 байт для хранения сообщений, ожидающих обработки. В маршрутизаторе сообщения обрабатываются вычислительным комплексом (ВК) с производительностью Q операций/с. В случае полного заполнения буфера 1 поступающие на маршрутизатор сообщения теряются. Принято допущение, что одна операция вычислительной сложности соответствует одному байту при размещении сообщения в буфере.

После обработки сообщения в зависимости от направления передачи поступают в соответствующие буферы, стоящие на входах каждого i-го направления связи, i=\overline{1,k}. Каждый буфер имеет ёмкость L_{2i} байт, i=\overline{1,k}. В случае полного заполнения буфера направления поступающее сообщение теряется.

Из буферов сообщения передаются по своим направлениям. Каждое направление имеет основной и резервный каналы связи. Скорость передачи сообщений по основному и резервному каналам связи каждого из направлений V_{пi} бит/с, i=\overline{1,k}.

ВК и основные каналы связи имеют конечную надёжность. Интервалы времени T_{отВК} и T_{отК_{1}}, T_{отК_{2}}, …,T_{отК_{n}} между отказами ВК и каналов связи случайные. Длительности восстановления ВК и каналов связи T_{вВК}} и T_{вК_{1}}, T_{вК_{2}}, …,T_{вК_{n}}также случайные.

При отказе обрабатываемые ВК и передаваемые по каналам связи сообщения теряются.

Исходные данные

n_1=6; k=4;Exponential(T_{1})=Exponential(T_{2})=…= Exponential(T_{6})=Exponential(30);n_2=4; p_{k1}=0,3; p_{k2}=0,2; p_{k3}=0,2; p_{k4}=0,3; Q=40000 оп/с; L_1=5000000;normal(S_1, S_{o1}=normal(53000, 6100);normal(S_3, S_{o3}=normal(66000, 7000);normal(S_4, S_{o4}=normal(50000, 500);exponential(T_{отК_{1}})=…= exponential(T_{отК_{8}})=exponential(360);exponential(T_{вК_{1}})=…= exponential(T_{вК_{8}})=exponential(3.2);exponential(T_{отВК})=exponential(360), exponential(T_{вВК})=exponential(3.7);V_{пi}=5000 бит/с, n_{3i}=1, L_{2i}=250000, i=\overline{1,4}.

Задание на исследование

Разработать имитационную модель функционирования сети связи. Исследовать влияние ёмкостей буферов, интервалов времени поступления сообщений, их вычислительных сложностей и других параметров на показатели функционирования сети с целью их оценки и принятия решений при необходимости по улучшению качества обслуживания сети.

Формализованное описание модели

Сообщения поступают от n_1=6 источников. Интервалы поступления сообщений, интервалы между отказами и время восстановления работоспособности распределяются по экспоненциальному закону (exponential), а вычислительные сложности сообщений в зависимости от категорий - по нормальному закону (normal). Для некоторых одинаковых параметров с целью упрощения принято, что они имеют равные значения, например, средние значения интервалов поступления сообщений. Модель же будет построена в некотором приближении универсальной так, что все эти значения могут быть любыми.

Вариант сети связи при принятых исходных данных (в том числе количестве входов и выходов маршрутизатора) может быть представлен в следующем виде (Рис. 4.1).

Вариант схемы сети связи

увеличить изображение
Рис. 4.1. Вариант схемы сети связи

Сообщения абонентов А1 и А2 поступают на вход 1 маршрутизатора М1, абонентов А3 и А4 - на вход 2 маршрутизатора М1, абонента А5 - на вход 3 маршрутизатора М1, абонента А6 - на вход 4 маршрутизатора М1.

Маршрутизатор М1 настроен таким образом, что сообщения, адресованные абонентам А1 и А2 поступают на вход 1 маршрутизатора М2, а абонентам А3 и А4 - на вход 2 маршрутизатора М2.

Маршрутизатор М2 настроен так, что его выходы 1…4 подключены к каналам связи, по которым передаются сообщения, адресованные абонентам А1…А4 соответственно.

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

Теперь представим маршрутизатор также как систему массового обслуживания и в общем виде (Рис. 4.2).

Маршрутизатор как система массового обслуживания

увеличить изображение
Рис. 4.2. Маршрутизатор как система массового обслуживания

В маршрутизаторе выделены блок контроля 1, накопитель (буфер) ВК, непосредственно ВК, блок контроля 2, накопители направлений связи.

Назначение и функции выделенных в структуре сети связи и маршрутизаторе блоков будет рассмотрено позже в ходе изложения технологии построения модели в AnyLogic.

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

Сообщения, поступающие на маршрутизатор, должны иметь следующие параметры:

  • numAbOtpr - номер абонента-отправителя сообщения;
  • numAbPol - номер абонента-получателя сообщения;
  • numKat - номер категории сообщения;
  • timeOtpr - время отправления сообщения абонентом;
  • dlina - длина сообщения, байт;
  • timeObr - время обработки сообщения ВК, с;
  • timePered - время передачи сообщения по каналу связи, с.

Эти параметры получаются путем розыгрыша по следующим исходным данным:

  • kolAbonent - количество абонентов;
  • timeAbonent - среднее время отправления сообщений абонентом, с;
  • verKat={verKat1, verKat2, verKat3, verKat4} - вероятности распределения видов сообщений первой, второй, третьей и четвёртой категорий соответственно,
  • verKat1+verKat2+verKat3+verKat4=1; dlKat={dlKat1, dlKat2, dlKat3, dlKat4} - средние длины сообщений, байт, первой, второй, третьей и четвёртой категорий соответственно;
  • dlKat0={dlKat01, dlKat02, dlKat03, dlKat04} - стандартные отклонения длин сообщений, байт, первой, второй, третьей и четвёртой категорий соответственно;
  • proizvod - производительность ВК при обработке сообщения, оп/c;
  • skorPeredKan - среднее время передачи сообщений по каналу связи, бит/с;
  • skorPeredKanR - среднее время передачи сообщений по резервному каналу связи, бит/с;
  • timeBklKanR - время включения резервного канала связи.

В ходе моделирования собирается следующая статистика:

  • kolOtprKat1, kolOtprKat2, kolOtprKat3,kolOtprKat4, kolOtpr - количество отправленных абонентом сообщений первой, второй, третьей, четвёртой и всех категорий соответственно;
  • kolPolKat1, kolPolKat2,kolPolKat3,kolPolKat4, kolPol - количество полученных абонентом сообщений первой, второй, третьей, четвёртой и всех категорий соответственно;
  • всегоОтпрКат1, всегоОтпрКат2, всегоОтпрКат3, всегоОтпрКат4, всегоОтпр - количество отправленных в сети сообщений первой, второй, третьей, четвёртой и всех категорий соответственно;
  • всегоПолКат1, всегоПолКат2, всегоПолКат3, всегоПолКат4, всегоПол - количество полученных в сети сообщений первой, второй, третьей, четвёртой и всех категорий соответственно;
  • количество отправленных сообщений каждым абонентом каждому абоненту сети;
  • количество полученных сообщений каждым абонентом от каждого абонента сети.

По этим статистическим данным рассчитываются:

  • коэффициенты пропускной способности между всеми абонентами сети;
  • коэфПропСпособ - коэффициент пропускной способности сети связи;
  • врПередачи - среднее время передачи абоненту одного сообщения;
  • врПередСооб - среднее время передачи в сети связи одного сообщения.

Коэффициенты пропускной способности определяются как отношение количества полученных сообщений к отправленным сообщениям.

В модели также для выполнения условий ограничения ёмкостей буферов необходимо использовать:

  • emkBuferVx - ёмкость входного буфера абонента, байт;
  • tekEmkBuferVx - текущую ёмкость входного буфера абонента, байт;
  • emkBufer1 - ёмкость входного буфера маршрутизатора, байт;
  • tekEmkBufer1 - текущая ёмкость входного буфера, байт;
  • emkBuferNapr1,emkBuferNapr2,emkostBuferNapr3, emkBuferNapr4 - ёмкости на входах каналов связи первого, второго, третьего и четвёртого направлений соответственно, байт;
  • tekEmkNapr1, tekEmkNapr2, tekEmkNapr3, tekEmkNapr4 - текущие ёмкости на входах каналов связи первого, второго, третьего и четвёртого направлений соответственно, байт.

Отказы и восстановление ВК и каналов связи разыгрываются по следующим данным:

  • timeOtkВК - среднее время между отказами ВК;
  • timeVosstВК - среднее время восстановления ВК;
  • timeOtkKan - среднее время между отказами канала связи;
  • timeVosstKan - среднее время восстановления канала связи.

Создание новых типов агентов

Построение модели начнём с создания активных объектов - экземпляров типов агентов. Напомним, что согласно Рис. 4.1 в сети связи выделены следующие сегменты (компоненты):

  • абонент;
  • маршрутизатор;
  • канал.

Реализуем эти сегменты средствами AnyLogic, а потом из них, как из созданных нами объектов, будем строить сеть на корневом объекте Main.

Создайте три новых типа агентов: Абонент, Канал, Маршрутизатор.

  1. Выполните команду Файл/Создать/Модель на панели инструментов. Появится диалоговое окно Новая модель.
  2. Задайте имя новой модели. В поле Имя модели введите Сеть_связи. Выберите каталог, в котором будут сохранены файлы модели. Щёлкните Готово.
  3. На панели Проекты щёлкните правой кнопкой Main и выберите из контекстного меню Создать/Тип агента.
  4. Откроется диалоговое окно Новый тип агента.
  5. Введите в поле Имя: имя нового типа агента Абонент.
  6. Щёлкните Готово.
  7. Также создайте типы агентов Канал и Маршрутизатор.

Создание областей просмотра

Последовательно переходите на типы агентов Main, Абонент, Канал, Маршрутизатор и создайте на каждом области просмотра. На них мы будем размещать элементы событийной части модели, а также исходные данные, переменные для промежуточных вычислений и результаты моделирования.

Значения свойств элементов Область просмотра установите согласно Табл. 4.1.

Для всех областей просмотра оставьте Выравнивать по: Верхнему левому углу, установите из списка Масштабирование: Подогнать под окно.

Таблица 4.1.
Свойства Объекты
Main Абонент Маршрутизатор Канал
Имя: облСеть облАбонент облМарш1 облКанал
Х: 0 0 0 0
Y: 0 0 0 0
Ширина: 770 810 740 400
Высота: 470 360 470 340
Имя: viewData viewData viewData viewData
Х: 870 0 0 0
Y: 600 700 550 700
Ширина: 470 450 330 400
Высота: 620 420 250 180
Имя: viewResult viewResult
Х: 0 0
Y: 600 1200
Ширина: 442 470
Высота: 820 432

Приступим к созданию сегментов сети связи.

Сегмент Абонент

Исходные данные
  1. Откройте тип агента Абонент.
  2. Перейдите на область просмотра viewData.
  3. Перетащите из палитры Презентация элемент Скругленный прямоугольник. На странице Основные оставьте Имя:, предложенное системой.
  4. На странице Местоположение и размер панели Свойства введите в поля X: 5, Y: 745, Ширина: 435, Высота: 365.
  5. Перетащите два элемента text и на странице Текст панели Свойства вместо text введите Исходные данные и Результаты соответственно (Рис. 4.3).
  6. Переход между областями просмотра в ходе моделирования организуйте позднее. Поэтому на относящиеся к этому элементы Сеть и Абонент1 пока не обращайте внимания.
    Размещение элементов Параметр и Переменная

    увеличить изображение
    Рис. 4.3. Размещение элементов Параметр и Переменная
  7. Перетащите из палитры Основная элементы Переменная, разместите и дайте им имена согласно Рис. 4.3. Тип всех простых переменных, кроме tekEmkBuferVx, установите double. Тип tekEmkBuferVx - int. Переменные предназначены для промежуточных вычислений и сбора статистических данных за одного абонента сети.
  8. Перетащите элементы Параметр, разместите и дайте имена как на Рис. 4.3. Тип всех элементов Параметр, кроме emkBuferVx и numAbonent, double. Тип emkBuferVx и numAbonent - int. Значения свойств установите согласно Табл. 4.2.
Таблица 4.2.
Имя Массив Размерность Значение по умолчанию
kolAbonent 6
timeAbonent 30
kolProg 100
numAbonent 1
emkBuferVx 80000
verKat Установить флажки KolKat {0.3, 0.5, 0.7, 1.0}
dlKat KolKat {53000,86000,66000,50000}
dlKatO KolKat {6100,5000,7000,500}

На Рис. 4.2 видно, что элементы verKat, dlKat, dlKatO используются как массивы, размерность которых равна числу категорий сообщений. Создайте размерность KolKat.

  1. Щёлкните правой кнопкой мышки в панели Проекты и в контекстном меню выберите Размерность.
  2. В открывшемся окне Размерность в поле Имя: введите KolKat. Если введёте kolKat, в окне Ошибки появится сообщение: По соглашению, имена типов Java обычно начинаются с заглавной буквы.
  3. Установите Тип размерности: Диапазон.
  4. В открывшееся поле Диапазон: введите 1-4.
  5. Щёлкните Готово.

Теперь создайте массив verKat.

  1. Выделите элемент Параметр (см. Рис. 4.3).
  2. На странице Основные панели Свойства установите флажок Массив. Откроется окно Размерности. Щёлкните по расположенной справа от окна и подсвеченной зелёным кнопке.
  3. Откроется окно Edit dimensions. В окошке Возможные размерности: выделите KolКат.
  4. Щёлкните по кнопке . Размерность KolКат появится в окошке Выбранные размерности.
  5. Закройте окно. Вы вернётесь на панель Свойства. В окошке Размерности вы увидите размерность KolКат.
  6. Щёлкните Редактировать значения массива. Откроется одноимённое диалоговое окно.
  7. В левой части окна стрелками показано размещение элементов массива. Оставим горизонтальное. Элементы массива имеют разные значения. Поэтому не используем [ВСЕ].
  8. В правой части окна введите значения элементов массива:
    0.3, 0.5, 0.7, 1.0
  9. Создайте также массивы dlKat, dlKatO одинаковой размерности KolKat. Данные в поле По умолчанию введите из Табл. 4.2.

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

  1. Перетащите элемент Данные гистограммы с палитры Статистика.
  2. Задайте свойства элемента:
    • измените Имя: на врПередачи;
    • сделайте Количество интервалов: равным 10;
    • задайте Нач. размер интервалов: 0.01.

Теперь можно было бы приступить к построению событийной части сегмента. Однако вы решили вывести результаты моделирования в более презентабельном виде. Поэтому целесообразнее организовать этот вывод, поскольку полученные при этом данные (имена, опции и др.) необходимы будут в дальнейшем при написании кода в событийной части сегмента.

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

Вариант размещения элементов для вывода результатов моделирования показан на Рис. 4.4.

Для вывода количественных показателей использован элемент Текстовое поле из палитры Элементы управления и элемент Гистограмма из палитры Статистика.

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

увеличить изображение
Рис. 4.4. Размещение элементов для вывода результатов моделирования
  1. В Палитре выделите Презентация. Перетащите элемент Скругленный прямоугольник в область просмотра облАбонент.
  2. На странице Основные в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
  3. На странице Местоположение и размер панели Свойства. Введите в поля X: 13, Y: 1250, Ширина: 447, Высота: 371.
  4. Перетащите элемент text. В поле Текст: введите Результаты моделирования.
  5. В Палитре выделите Элементы управления. Перетащите элементы Текстовое поле на элемент Результаты моделирования. Разместите их так, как показано на Рис. 4.4. Значения свойств установите согласно Табл. 4.3. У элементов editbox и editbox5 Ширина: 100, Высота: 31. У остальных - Ширина: 50.

Осталось поместить элемент для обработки и вывода статистической информации о времени передачи одного сообщения.

  1. В Палитре выделите Статистика.
  2. Перетащите элемент Гистограмма. Характеристики его размещения даны в Табл. 4.3.
    Таблица 4.3.
    Всего сообщений получено Получено сообщений по категориям
    editbox editbox1 editbox2 editbox3 editbox4
    X: 21 X: 177 X: 247 X: 317 X: 389
    Y: 1310 Y: 1310 Y: 1310 Y: 1310 Y: 1310
    Всего сообщений отправлено Отправлено сообщений по категориям
    editbox5 editbox6 editbox7 editbox8 editbox9
    X: 19 X: 179 X: 249 X: 319 X: 389
    Y: 1390 Y: 1390 Y: 1390 Y: 1390 Y: 1390
    Время передачи сообщения
    Минимальное Максимальное Среднее
    editbox13 editbox12 editbox15
    X: 319 X: 319 X: 319
    Y: 1470 Y: 1520 Y: 1570
    сhart-Гистограмма
    X: 19 Y: 1450 Ширина: 240 Высота: 160
  3. На странице Основные панели Свойства в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
  4. Щёлкните кнопку Добавить данные и введите в поле Данные: имя врПередачи.
  5. В поле Заголовок: введите Время передачи.
  6. Значения остальных свойств (цвет и др.) установите по собственному усмотрению.
  7. Добавьте остальные элементы презентации (номера категорий сообщений, другую текстовую информацию, например, Всего сообщений получено и др.) согласно Рис. 4.4.

И снова, прежде чем перейти к построению событийной части сегмента Абонент, разместим на корневом агенте Main необходимые элементы для сбора статистических данных, обработки, расчёта показателей качества обслуживания сети и их вывода. Это необходимо сделать по той причине, что также имена этих элементов нужны будут при написании кода в сегменте Абонент.

Показатели качества обслуживания сети связи
  1. Откройте корневой объект Main.
  2. Перейдите на область просмотра ViewData.
    Элементы для сбора и вывода данных за сеть в целом

    увеличить изображение
    Рис. 4.5. Элементы для сбора и вывода данных за сеть в целом
  3. Перетащите или скопируйте элементы Переменная, разместите и дайте имена согласно Рис. 4.5.
  4. Тип всех переменных double. Переменные отпр11…отпр66 предназначены для накопления статистических данных о количестве отправленных сообщений абонент - абонент. Например, отпр23 - количество сообщений, отправленных абонентом 2 абоненту 3, а отпр32 - количество сообщений, отправленных абонентом 3 абоненту 2. По этим данным рассчитываются коэффициенты пропускной способности кПрСп12…кПрСп66 абонент - абонент.
  5. Выровняйте элементы. Выделите нужные элементы, Щёлкните правой кнопкой мышки, выберите Выравнивание.
  6. Перетащите элемент Данные гистограммы с палитры Статистика.
  7. Задайте свойства элемента:
    • измените Имя: на врПередСооб;
    • сделайте Количество интервалов: равным 10;
    • задайте Нач. размер интервалов: 0.01.

Теперь организуем вывод в более презентабельном виде. На Рис. 4.6 показаны элементы для вывода количественных показателей качества обслуживания сети связи. Часть результатов моделирования будем выводить в таком же виде и такие же, как и для каждого абонента.

  1. Перейдите на область просмотра ViewResult.
  2. Откройте объект Абонент.
  3. Скопируйте элементы в скруглённом прямоугольнике с именем Результаты моделирования.
  4. Перейдите на корневой объект Main и вставьте скопированные элементы в верхнюю часть области просмотра ViewResult (см. Рис. 4.6).
  5. Добавьте элемент Текстовое поле (editbox10) для вывода коэффициента пропускной способности сети.
  6. Внесите правки в текстовые сообщения согласно Рис. 4.6.
  7. В Палитре выделите Статистика. Перетащите элемент Гистограмма.
  8. На странице Основные панели Свойства в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
    Вывод показателей качества обслуживания сети

    увеличить изображение
    Рис. 4.6. Вывод показателей качества обслуживания сети
  9. Щёлкните кнопку Добавить данные и введите в поле Данные: имя врПередачи.
  10. В поле Заголовок: введите Время передачи.
  11. Значения остальных свойств (цвет и др.) установите по собственному усмотрению.
  12. В Палитре выделите Презентация. Перетащите элемент Скругленный прямоугольник в область просмотра результатов ViewResult.
  13. На странице Основные в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
  14. На странице Местоположение и размер панели Свойства введите в поля X: 10, Y: 1000, Ширина: 420, Высота: 410.
  15. Перетащите элемент text. В поле Текст: введите Коэффициенты пропускной способности абонент-абонент.
  16. В Палитре выделите Элементы управления. Перетащите элемент Текстовое поле. Разместите X: 20, Y: 1078, Ширина: 48, Высота: 25. В поле Имя: введите КПрСп11. Сбросьте флажок Отображать имя.
  17. Перетащите элемент text. В поле Текст: введите КПрСп11.
  18. Скопируйте элементы text и Текстовое поле. Вставьте их пять раз согласно Рис. 4.6. При этом в полях Имя: последовательно меняются имена КПрСп12… КПрСп16. Но поле Текст: останется неизменным, т.е. КПрСп11. Внесите правки в соответствии с Рис. 4.6. Элемент text добавлен потому, что в ходе моделирования имя элемента Текстовое поле не отображается.
  19. Аналогичным образом добавьте остальные элементы text и Текстовое поле согласно Рис. 4.6.

Теперь можно перейти к построению событийной части сегмента.

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >
Игорь Маникин
Игорь Маникин

Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю?

Еще раз спасибо за прекрасный курс!

Артём Нагайцев
Артём Нагайцев

Выдает ошибку "entity cannot be resolved to a variable" при попытке запуска. В чем может быть причина? Ошибка в строках

entity.time_vxod=time(); 

time_obrabotki.add(time()-entity.time_vxod);