Коллеги, спасибо за очень информативный и полезный курс. Прошёл три лекции. Столкнулся с проблемой, что обе модели не могут закончить расчёт по причине ограничения бесплатной версии "создано максимально допустимое число динамически создаваемых агентов (50000)". По скриншотам Лекции 2 видно, что да, модель создает гораздо больше 50000 агентов. В принципе, мне то и диплом не особо нужен. Но хотелось бы выполнить практические работы. Нет ли возможности откорректировать эту проблему? Или может я чего не так делаю? Еще раз спасибо за прекрасный курс! |
Модель функционирования сети связи
Модель в AnyLogic
Постановка задачи
В сети связи имеются абонентов, обменивающихся между собой сообщениями. Адресация сообщений организована посредством маршрутизаторов. На маршрутизатор поступают сообщения через случайные промежутки времени от абонентов со средними интервалами времени .
Сообщения могут быть категорий с вероятностями их появления и вычислительными сложностями обработки операций соответственно.
Маршрутизатор имеет k входов и k выходов, входной буфер 1 ёмкостью байт для хранения сообщений, ожидающих обработки. В маршрутизаторе сообщения обрабатываются вычислительным комплексом (ВК) с производительностью Q операций/с. В случае полного заполнения буфера 1 поступающие на маршрутизатор сообщения теряются. Принято допущение, что одна операция вычислительной сложности соответствует одному байту при размещении сообщения в буфере.
После обработки сообщения в зависимости от направления передачи поступают в соответствующие буферы, стоящие на входах каждого i-го направления связи, . Каждый буфер имеет ёмкость байт, . В случае полного заполнения буфера направления поступающее сообщение теряется.
Из буферов сообщения передаются по своим направлениям. Каждое направление имеет основной и резервный каналы связи. Скорость передачи сообщений по основному и резервному каналам связи каждого из направлений бит/с, .
ВК и основные каналы связи имеют конечную надёжность. Интервалы времени и между отказами ВК и каналов связи случайные. Длительности восстановления ВК и каналов связи и также случайные.
При отказе обрабатываемые ВК и передаваемые по каналам связи сообщения теряются.
Исходные данные
Задание на исследование
Разработать имитационную модель функционирования сети связи. Исследовать влияние ёмкостей буферов, интервалов времени поступления сообщений, их вычислительных сложностей и других параметров на показатели функционирования сети с целью их оценки и принятия решений при необходимости по улучшению качества обслуживания сети.
Формализованное описание модели
Сообщения поступают от источников. Интервалы поступления сообщений, интервалы между отказами и время восстановления работоспособности распределяются по экспоненциальному закону (exponential), а вычислительные сложности сообщений в зависимости от категорий - по нормальному закону (normal). Для некоторых одинаковых параметров с целью упрощения принято, что они имеют равные значения, например, средние значения интервалов поступления сообщений. Модель же будет построена в некотором приближении универсальной так, что все эти значения могут быть любыми.
Вариант сети связи при принятых исходных данных (в том числе количестве входов и выходов маршрутизатора) может быть представлен в следующем виде (Рис. 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).
В маршрутизаторе выделены блок контроля 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.
Создайте три новых типа агентов: Абонент, Канал, Маршрутизатор.
- Выполните команду Файл/Создать/Модель на панели инструментов. Появится диалоговое окно Новая модель.
- Задайте имя новой модели. В поле Имя модели введите Сеть_связи. Выберите каталог, в котором будут сохранены файлы модели. Щёлкните Готово.
- На панели Проекты щёлкните правой кнопкой Main и выберите из контекстного меню Создать/Тип агента.
- Откроется диалоговое окно Новый тип агента.
- Введите в поле Имя: имя нового типа агента Абонент.
- Щёлкните Готово.
- Также создайте типы агентов Канал и Маршрутизатор.
Создание областей просмотра
Последовательно переходите на типы агентов Main, Абонент, Канал, Маршрутизатор и создайте на каждом области просмотра. На них мы будем размещать элементы событийной части модели, а также исходные данные, переменные для промежуточных вычислений и результаты моделирования.
Значения свойств элементов Область просмотра установите согласно Табл. 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 |
Приступим к созданию сегментов сети связи.
Сегмент Абонент
Исходные данные
- Откройте тип агента Абонент.
- Перейдите на область просмотра viewData.
- Перетащите из палитры Презентация элемент Скругленный прямоугольник. На странице Основные оставьте Имя:, предложенное системой.
- На странице Местоположение и размер панели Свойства введите в поля X: 5, Y: 745, Ширина: 435, Высота: 365.
- Перетащите два элемента text и на странице Текст панели Свойства вместо text введите Исходные данные и Результаты соответственно (Рис. 4.3).
- Переход между областями просмотра в ходе моделирования организуйте позднее. Поэтому на относящиеся к этому элементы Сеть и Абонент1 пока не обращайте внимания.
- Перетащите из палитры Основная элементы Переменная, разместите и дайте им имена согласно Рис. 4.3. Тип всех простых переменных, кроме tekEmkBuferVx, установите double. Тип tekEmkBuferVx - int. Переменные предназначены для промежуточных вычислений и сбора статистических данных за одного абонента сети.
- Перетащите элементы Параметр, разместите и дайте имена как на Рис. 4.3. Тип всех элементов Параметр, кроме emkBuferVx и numAbonent, double. Тип emkBuferVx и numAbonent - int. Значения свойств установите согласно Табл. 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.
- Щёлкните правой кнопкой мышки в панели Проекты и в контекстном меню выберите Размерность.
- В открывшемся окне Размерность в поле Имя: введите KolKat. Если введёте kolKat, в окне Ошибки появится сообщение: По соглашению, имена типов Java обычно начинаются с заглавной буквы.
- Установите Тип размерности: Диапазон.
- В открывшееся поле Диапазон: введите 1-4.
- Щёлкните Готово.
Теперь создайте массив verKat.
- Выделите элемент Параметр (см. Рис. 4.3).
- На странице Основные панели Свойства установите флажок Массив. Откроется окно Размерности. Щёлкните по расположенной справа от окна и подсвеченной зелёным кнопке.
- Откроется окно Edit dimensions. В окошке Возможные размерности: выделите KolКат.
- Щёлкните по кнопке . Размерность KolКат появится в окошке Выбранные размерности.
- Закройте окно. Вы вернётесь на панель Свойства. В окошке Размерности вы увидите размерность KolКат.
- Щёлкните Редактировать значения массива. Откроется одноимённое диалоговое окно.
- В левой части окна стрелками показано размещение элементов массива. Оставим горизонтальное. Элементы массива имеют разные значения. Поэтому не используем [ВСЕ].
- В правой части окна введите значения элементов массива:
0.3, 0.5, 0.7, 1.0
- Создайте также массивы dlKat, dlKatO одинаковой размерности KolKat. Данные в поле По умолчанию введите из Табл. 4.2.
Для получения стандартной статистической информации о времени передачи сообщений по каждому абоненту добавьте элемент сбора статистики.
- Перетащите элемент Данные гистограммы с палитры Статистика.
- Задайте свойства элемента:
- измените Имя: на врПередачи;
- сделайте Количество интервалов: равным 10;
- задайте Нач. размер интервалов: 0.01.
Теперь можно было бы приступить к построению событийной части сегмента. Однако вы решили вывести результаты моделирования в более презентабельном виде. Поэтому целесообразнее организовать этот вывод, поскольку полученные при этом данные (имена, опции и др.) необходимы будут в дальнейшем при написании кода в событийной части сегмента.
Результаты моделирования по каждому абоненту
Вариант размещения элементов для вывода результатов моделирования показан на Рис. 4.4.
Для вывода количественных показателей использован элемент Текстовое поле из палитры Элементы управления и элемент Гистограмма из палитры Статистика.
- В Палитре выделите Презентация. Перетащите элемент Скругленный прямоугольник в область просмотра облАбонент.
- На странице Основные в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
- На странице Местоположение и размер панели Свойства. Введите в поля X: 13, Y: 1250, Ширина: 447, Высота: 371.
- Перетащите элемент text. В поле Текст: введите Результаты моделирования.
- В Палитре выделите Элементы управления. Перетащите элементы Текстовое поле на элемент Результаты моделирования. Разместите их так, как показано на Рис. 4.4. Значения свойств установите согласно Табл. 4.3. У элементов editbox и editbox5 Ширина: 100, Высота: 31. У остальных - Ширина: 50.
Осталось поместить элемент для обработки и вывода статистической информации о времени передачи одного сообщения.
- В Палитре выделите Статистика.
- Перетащите элемент Гистограмма. Характеристики его размещения даны в Табл. 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 - На странице Основные панели Свойства в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
- Щёлкните кнопку Добавить данные и введите в поле Данные: имя врПередачи.
- В поле Заголовок: введите Время передачи.
- Значения остальных свойств (цвет и др.) установите по собственному усмотрению.
- Добавьте остальные элементы презентации (номера категорий сообщений, другую текстовую информацию, например, Всего сообщений получено и др.) согласно Рис. 4.4.
И снова, прежде чем перейти к построению событийной части сегмента Абонент, разместим на корневом агенте Main необходимые элементы для сбора статистических данных, обработки, расчёта показателей качества обслуживания сети и их вывода. Это необходимо сделать по той причине, что также имена этих элементов нужны будут при написании кода в сегменте Абонент.
Показатели качества обслуживания сети связи
- Откройте корневой объект Main.
- Перейдите на область просмотра ViewData.
- Перетащите или скопируйте элементы Переменная, разместите и дайте имена согласно Рис. 4.5.
- Тип всех переменных double. Переменные отпр11…отпр66 предназначены для накопления статистических данных о количестве отправленных сообщений абонент - абонент. Например, отпр23 - количество сообщений, отправленных абонентом 2 абоненту 3, а отпр32 - количество сообщений, отправленных абонентом 3 абоненту 2. По этим данным рассчитываются коэффициенты пропускной способности кПрСп12…кПрСп66 абонент - абонент.
- Выровняйте элементы. Выделите нужные элементы, Щёлкните правой кнопкой мышки, выберите Выравнивание.
- Перетащите элемент Данные гистограммы с палитры Статистика.
- Задайте свойства элемента:
- измените Имя: на врПередСооб;
- сделайте Количество интервалов: равным 10;
- задайте Нач. размер интервалов: 0.01.
Теперь организуем вывод в более презентабельном виде. На Рис. 4.6 показаны элементы для вывода количественных показателей качества обслуживания сети связи. Часть результатов моделирования будем выводить в таком же виде и такие же, как и для каждого абонента.
- Перейдите на область просмотра ViewResult.
- Откройте объект Абонент.
- Скопируйте элементы в скруглённом прямоугольнике с именем Результаты моделирования.
- Перейдите на корневой объект Main и вставьте скопированные элементы в верхнюю часть области просмотра ViewResult (см. Рис. 4.6).
- Добавьте элемент Текстовое поле (editbox10) для вывода коэффициента пропускной способности сети.
- Внесите правки в текстовые сообщения согласно Рис. 4.6.
- В Палитре выделите Статистика. Перетащите элемент Гистограмма.
- На странице Основные панели Свойства в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
- Щёлкните кнопку Добавить данные и введите в поле Данные: имя врПередачи.
- В поле Заголовок: введите Время передачи.
- Значения остальных свойств (цвет и др.) установите по собственному усмотрению.
- В Палитре выделите Презентация. Перетащите элемент Скругленный прямоугольник в область просмотра результатов ViewResult.
- На странице Основные в поле Имя: оставьте имя, предложенное системой. Сбросьте флажок Отображать имя.
- На странице Местоположение и размер панели Свойства введите в поля X: 10, Y: 1000, Ширина: 420, Высота: 410.
- Перетащите элемент text. В поле Текст: введите Коэффициенты пропускной способности абонент-абонент.
- В Палитре выделите Элементы управления. Перетащите элемент Текстовое поле. Разместите X: 20, Y: 1078, Ширина: 48, Высота: 25. В поле Имя: введите КПрСп11. Сбросьте флажок Отображать имя.
- Перетащите элемент text. В поле Текст: введите КПрСп11.
- Скопируйте элементы text и Текстовое поле. Вставьте их пять раз согласно Рис. 4.6. При этом в полях Имя: последовательно меняются имена КПрСп12… КПрСп16. Но поле Текст: останется неизменным, т.е. КПрСп11. Внесите правки в соответствии с Рис. 4.6. Элемент text добавлен потому, что в ходе моделирования имя элемента Текстовое поле не отображается.
- Аналогичным образом добавьте остальные элементы text и Текстовое поле согласно Рис. 4.6.
Теперь можно перейти к построению событийной части сегмента.