Модель A12 Anylogic. Сеть пятого поколения 5g

 

Структура проекта


Тип агента Base является описанием базовых станций, с которыми соединяются устройства абонентов сети (звонилки,смартфоны, авто, устройства интернета вещей iot)

Тип агента DataCenter является описанием центров, которые предоставляют услуги абонентам (телефония,моб.интернет,iot,automotive)

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

Тип агента SubToСenter описывает все подключения абонентов к датацентрам. Для появления нового соединения с датацентром очередного абонента создается отдельный агент по типу SubToСenter, который заключается в агенте соответствующего датацентра.

Simulation – описание параметров запуска модели. В данной программе simulation запускает эксперимент по типу агента Main


Simulation

Для запуска эксперимента можно использовать одну из кнопок

– системную


– Либо запрограммированную разработчиком


В свойствах кнопки содержится код, необходимый для запуска эксперимента и для смены названия в ходе запуска


Код

Пояснение

Если функция getState возвращает состояние эксперимента IDLE (когда не запущен), то надпись на кнопке -«Запустить», при любом другом состоянии – «Агент верхнего уровня»

Если при клике по кнопке функция getState возвращает состояние эксперимента IDLE (когда не запущен), то функция run запустит эксперимент по типу агента Main

Справочная информация по используемым в кнопке функциям


 


 

ТИП АГЕНТА MAIN


Интерфейс и логика модели в типе Main

Рабочая область включает графику различных уровней сети 5g и логическую цепь компонентов библиотеки моделирования процессов и производственных систем.

На уровне сети базовых станций размещаются агенты типа Base ,имитирующие базовые станции RAT. Агенты данного типа объединены в популяцию base и имеют своё расположение. Координаты берутся из двумерного массива baseLoc и подставляются в свойства популяции base


Популяция базовых станций


Двумерный массив с координатами

Где index в обращении к массиву baseLoc[index][]–это порядковый номер агента в популяции. Таким образом, у каждой станции появляются свои координаты, потому что размер массива совпадает с размером популяции и равен 16 элементам.

На уровне сети виртуализации используются простые картинки сетевого оборудования и группы линий разных цветов, которые появляются или исчезают в зависимости от появления в системе соответствующих определённому цвету абонентов(например, устройства ioT имеют серый цвет, а значит в гранимации сети виртуализации появятся серые соединения, когда транзакт доберётся до конца первой конвейерной линии,где синее облако находится )

На третьем уровне – дата центров-также используется графика карты мира с размещением на ней анимации агентов типа DataCenter. По мере продвижения транзактов(то, что бегает по блокам лог.цепи) по 2-й конвейерной линии между ними и датацентрами возникают соединения, показанные как и на нижнем уровне линиями с цветами, соответствующими типу устройства. Агенты данного типа в количестве 16 экземпляров объединены в популяцию dataCenter. Местоположение задаётся тем же самым массивом baseLoc с той лишь разницей, что координата y уменьшается на 215px для каждого агента, т.к. карта мира датацентров находятся ближе к началу координат на 215px.

На последнем графическом уровне- облаке услуг— отображаются услуги, которые в данный момент предоставляются абонентом. Чем больше квадратик услуги, тем ,значит ,большее количество устройств в данный момент её получают через датацентр.

Через логическую цепь задаётся создание агентов абонентов(транзактов) и их перемещение в анимации с помощью конвейерных линий.


Лог.цепь продвижения транзактов в модели

Для создания абонентов используется блок generateSub со свойствами


Свойства источника новых абонентов

Каждый агент абонента заносится в популяцию агентов subs, чтобы накапливать статистику по количеству абонентов того или иного типа (сколько абонентов iOT, сколько смартфонов, сколько автомобильных устройств и т.д.) на данный момент времени соединенных с датацентрами (абоненты имеют параметр stage=2 на данной стадии)


Свойства популяции агентов абонентов

 

ТИП АГЕНТА BASE


Содержит анимацию из картинок вышек, коммутатора и белых 6-угольников для обозначения активных сот. За видимость 6-угольника соты отвечает переменная ceil, которая принимает значения от1 до 6, если связь с абонентом установлена. Отображается та сота, чей порядковый номер совпадёт с переменной ceil. Эта логика задаётся кодом в свойстве видимости мноугольников, например, для 4-й соты прописано вот так


Переменная links содержит количество соединений с абонентами на текущий момент.

В популяции агентов base используется данный тип Base и задан один элемент статистики, в котором суммируются переменные links всех 16 станций.


Свойства популяции base

Базовые станции распределены по карте мира благодаря свойству популяции base «расположение агентов: в заданной точке»

 

ТИП АГЕНТА DataCenter

 


Содержимое типа агента DataCenter

Здесь есть фигурка датацентра и кружок, принимающие разные цвета, в зависимости от предоставляемой дата-центром услуги (параметр trafficType принимает значения от 0 до 3). Переменная хранит в себе порядковый номер датацентра в популяции dataCenter


Свойства кружка-индикатора услуги

subToCenter — популяция агентов типа SubToCenter, включает в себя все линии на презентации модели, которые соединяют датацентр и абонентов. Для создании этой популяции, как и любой другой, нужно перетащить тип агента SubToCenter из области проекта, щелкнув правой кнопкой по нему.


Рис. Отсюда перетаскивать на поле типа агента DataCenter

Для отрисовки данных линий и занесения их в популяцию subToCenter используется функция drawLine

Таблица Код функции drawLine

ShapeLine newline = new ShapeLine(

        SHAPE_DRAW_2D3D, true, 0, 0, 0.0, main.colorList.get(trafficType),

        dx,    dy, 0.0, 1.0, 10.0, LINE_STYLE_SOLID );

Создать новую линию с координатами 0,0 в начале и dx,dy(крайняя правая точка 2-й конвейерной линии) в конце. Также задаём цвет, для этого обращаемся к коллекции для получения из неё того цвета, порядковый номер которого соответствует типу услуги main.colorList.get(trafficType)

presentation.add(newline);

Размещаем на презентации модели новую линию

return add_subToCenter(newline);

Добавляем в популяцию новую линию для того, чтобы потом можно было бы её стереть из анимации, когда абонент достигнет конца 2-й конвейерной линии

Аргументы функции drawLine

dX

Координата x крайней правой точки 2-й конвейерной линии

dY

Координата y крайней правой точки 2-й конвейерной линии

Возвращаемым результатом работы функции будет агент типа SubToCenter

 

ТИП АГЕНТА SUB


Содержимое типа агента Sub

 

Переменные и параметры

line

Содержит ссылку на объект линии соединения базовой станции и абонента

stage

Может принимать значения 1 или 2 в зависимости по какой конвейерной линии едет

main

Хранит ссылку на агент типа Main, чтобы можно было получить доступ к массиву координат

x,y

Хранит координаты положения фигурок анимации абонентов

colorList

Коллекция из четырех цветов для окрашивания линий соединений

type

Тип абонента влияет на выбираем элемент из коллекции цветов

myDataCe

Для сохранения ссылки на дата-центр, с которым будет установлена связь

corner

Угол поворота фигурки абонента. Необходим чтобы развернуть в исходное положение(180градусов) фигурки на второй конвейрной линии

linkToDataCe

Для хранения ссылки на агент типа SubToCenter,чтобы можно было стереть линию связи с датацентром при уходе абонента из системы

myBase

Для хранения ссылки на агент базовой станции, с которой установлено соединение

  


Рис.Свойства диаграммы состояния Sub

 

Диаграмма состояния имеет один переход transition,который срабатывает каждые 0.1 секунды, чтобы конец линии связи от абонента возвращать в точку местоположения базовой станции. В коде действия перехода прописано, что если линия отрисована, то нужно с помощью функции setDx изменить координату x её конца, примыкающего к фигурке базовой станции. Это необходимо из-за того, что фигурки абонентов перемещаются по конвейеру вправо и линки тоже смещаются. Направление и скорость перемещения (2м/с) конвейера (задаётся через свойства) определяют знак и значение слагаемого -1.9499070602. Это в десять раз уменьшенное число 19.499… пикселей, которое успевает пройти фигурка за 1секунду при скорости конвейера 2м/с. Интервал перехода взят 0.1,чтобы возвращение конца линии в исходное положение было более плавное.

Функция drawLine() отвечает за отрисовку линий связи и имеет код почти как в типе агента DataCenter у диаграммы состояния

ShapeLine newline = new ShapeLine(

        SHAPE_DRAW_2D3D, true, 0, 0, 0.0,colorList.get(type-1),

        dx,    dy, 0.0, 1.0, 10.0, LINE_STYLE_SOLID );

presentation.add(newline);

line=newline;

 

ТИП АГЕНТА SUBTOCENTER


Содержимое типа агента SUBTOCENTER

 

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

 

ЛОГИЧЕСКАЯ ЦЕПЬ В MAIN


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

Компонент конвейера связан с полосой на графике благодаря заданным свойствам


Cвойства конвейера

После прохождения конвейра фигурка переместится к синему облаку и исчезнет ненадолго из области видимости. В этот момент выполнится код (свойство компонента queue1)

DataCenter dtc = getNearestAgent(filter(dataCenter,t->t.trafficType==agent.type-1));

Поиск датацентра, который предоставляет услугу под тип абонента

int number = uniform_discr(0,dataCenter.size()-1);

Получаем случайное число от 0 до 15

if(dtc !=null) number = dtc.number;

Если поиск необходимого датацентра закончились цспехом, то в переменную number записываем порядковый номер найденного датацентра

agent.myDataCe = dataCenter.get(number);

Записываем ссылку на найденный датацентр внутри агента абонента в параметре myDataCe

agent.presentation.remove(agent.line);

Удаляем из анимации линию соединения с базовой станцией

agent.stage=2;

Переводим абонента на второй этап

agent.corner=-3.14;

Вовращаем фигурку в иходное положение, потому что при попадание на второй конвейер её закрутит на 180градусов

agent.x=15;

agent.y=15;

Ликвидируем последствия поворота, возвращаем в начало системы координат

agent.myBase.links—;

Уменьшаем счетчик соединений в базовой станции, на прошлом этапе связанной с данным абонентом

double dX = baseLoc[number][0];

Получаем координату х линии соединения с датацентром

double dY = baseLoc[number][1]-215;

Получаем координату у линии соединения с датацентром

agent.myBase.ceil = 7;

Ставим значении 7 переменной агента, чтобы сота базовой станции потухла

agent.myDataCe.trafficType = agent.type-1;

Устанавливаем тип услуги,которую предоставляет датацентр

agent.linkToDataCe = dataCenter.get(number).drawLine(450-dX,570-360-180-dY+330);

Отрисовываем линию соедитнения с датацентром

 

 

В конце логической цепи в блоке sink выполнится код

agent.myDataCe.presentation.remove(agent.linkToDataCe.line);

Удаление из анимации линии связи абонента и датацентра

agent.myDataCe.remove_subToCenter(agent.linkToDataCe);

Удаление агента из популяции линий связи

if(agent.myDataCe.subToCenter.size() == 0)

    agent.myDataCe.trafficType = 5

Если в популяции линий связи не остались агенты, тогда скрываем кружок услуги в датацентре, установив переменную trafficType в значение 5

  
  
  

 

Во всех блоках логической цепи в качестве типа агента указывается Sub


ВИРТУАЛИЗАЦИЯ ИЛИ «СЕТЬ ПО ЗАПРОСУ»


Группы линий различных цветов видны или скрыты в зависимости от показателей популяции subs


Здесь подсчитывается сколько абонентов каждого типа находятся на этапе 2, т.е.сколько агентов абонентов миновали блок лог.цепи queue1

А вот так задаётся видимость, например, зелёных линий в сети виртуализации для автомобильных абонентов

 

ОБЛАКО УСЛУГ


 

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

 



Свойства надписи усулуга1



Свойства надписи услуга16

 

Во всех 4-х текстах свойства текст и цвета имеют динамическое значение, зависящее от показателей популяции dataСenter. В данных показателях суммируется количество сколько абонентов обратилось за той или иной услугой. Чем больше эти показатели, тем больше будут фоновые прямоугольники каждой услуги.

 

 

Свойства прямоугольника за текстом услуга1

 


 

Облако услуг

guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

СТАТЬИ БЛОГА ПО РУБРИКЕ И МЕТКАМ

img

А61. Транспортная логистика в туризме. Модель перевозок людей турфирмы.

Создать имитационную модель в среде Anylogic по заданию: есть расписание автобусных рейсов, где указывается дата отправки и город прибытия; в указанное время автобусы отправляются в путь; перед этим выбирается автобус, который поедет. Точка отправления г. Астрахань. Точки прибытия: Анапа, Лазаревское, Геленджик, Сочи, Сухум.

Согласно логистики пассажирских перевозок передвигаются автобусы по маршрутам:

Астрахань- Анапа- Астрахань,
Астрахань-Лазаревское- Астрахань,
Астрахань-Геленджик — Астрахань,
Астрахань-Сочи- Астрахань,
Астрахань-Сухум- Астрахань,

Цель моделирования: получить статистические графики логистического процесса по перевозке людей турфирмы.

А61. Транспортная логистика в туризме. Модель перевозок людей турфирмы.

Создать имитационную модель в среде Anylogic по заданию: есть расписание автобусных рейсов, где указывается дата отправки и город прибытия; в указанное время автобусы отправляются в путь; перед этим выбирается автобус, который поедет. Точка отправления г. Астрахань. Точки прибытия: Анапа, Лазаревское, Геленджик, Сочи, Сухум.

Согласно логистики пассажирских перевозок передвигаются автобусы по маршрутам:

Астрахань- Анапа- Астрахань,
Астрахань-Лазаревское- Астрахань,
Астрахань-Геленджик - Астрахань,
Астрахань-Сочи- Астрахань,
Астрахань-Сухум- Астрахань,

Цель моделирования: получить статистические графики логистического процесса по перевозке людей турфирмы.

img

А61 Выбросы загрязняющих веществ г.Луга Ленинградской области. Модель Anylogic

Модель позволяет осуществлять мониторинг за состоянием атмосферного воздуха в г. Луга. Разработана модель методом системной динамики.

Мониторинг осуществляется по следующим загрязняющим веществам:

Оксиды азота NO,оксид углерода CO, сажа C, фенол C5H6O, диоксид серы SO2, бенз(а)пирен, фторид водорода HF, углеводороды СН, формальдегид СН2О

А61 Выбросы загрязняющих веществ г.Луга Ленинградской области. Модель Anylogic

Модель позволяет осуществлять мониторинг за состоянием атмосферного воздуха в г. Луга. Разработана модель методом системной динамики.

Мониторинг осуществляется по следующим загрязняющим веществам:

Оксиды азота NO,оксид углерода CO, сажа C, фенол C5H6O, диоксид серы SO2, бенз(а)пирен, фторид водорода HF, углеводороды СН, формальдегид СН2О

img

А56 Сетевое планирование строительных работ

Ниже представлен график выполнения работ бригадой рабочих. Узел 1 определяет начало выполнения комплекса работ, узел 7 – завершение работ. Узел 2 определят завершение работы 1-2, для выполнения которой требуются 4 рабочих и 14 плюс – […]

А56 Сетевое планирование строительных работ

Ниже представлен график выполнения работ бригадой рабочих. Узел 1 определяет начало выполнения комплекса работ, узел 7 – завершение работ. Узел 2 определят завершение работы 1-2, для выполнения которой требуются 4 рабочих и 14 плюс – […]
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x