- •Бакалаврская работа
- •Пояснительная записка
- •Аннотация
- •Определения, обозначения, сокращения
- •1 Аналитический обзор и постановка задачи
- •1.1 Структурные характеристики случайных графов
- •1.2 Некоторые модели случайных графов
- •1.2.1 Модель графа Барабаши ‑ Альберт
- •1.2.2 Модель графа Уаттса – Строгатца
- •1.2.3 Модель графа Эрдеша-Реньи
- •1.3 Модель графа с нппс
- •1.4 Обзор аналогов
- •1.4.1 Ускоренный метод генерации графа ба и графа с нппс
- •1.4.2 Метод сепарабельной реконфигурации по коэффициенту кластеризации
- •1.5 Выводы по главе и постановка задачи вкр
- •2 Разработка алгоритма генератора графа с нппс с возможностью калибровки по коэффициенту кластеризации
- •2.1 Алгоритм генерации графа с нппс с возможностью калибровки по коэффициенту кластеризации
- •2.2. Модификация разработанного алгоритма
- •2.3 Демонстрация работы алгоритма
- •3 Аспекты программной реализации в системе имитационного моделирования Simbigraph
- •Заключение
- •Список использованных источников
- •Приложение а
3 Аспекты программной реализации в системе имитационного моделирования Simbigraph
Разработанный алгоритм реализован в системе моделирования SIMBIGRAPH, ориентированный на моделирование больших сетей. Ориентированность системы согласуется с выводами Европейского сообщества по развитию агентных вычислений AgentLink III, в соответствии с которыми приоритетным направлением развития теории агентного моделирования является разработка сетевых структур взаимодействия между агентами. В SIMBIGRAPH такие структуры реализуются и поддерживаются разнообразными графовыми моделями среды взаимодействия агентов. Система SIMBIGRAPH используется для анализа сложных процессов в сетях. Архитектура системы основывается на имеющихся в области имитационного моделирования подходах и разработках российских и зарубежных исследователей. Аналогами системы моделирования SIMBIGRAPH являются такие известные системы имитационного моделирования, как SWARM, ASCAPE (Бруклинский институт, США), МАSON (Университет Джорджа Мейсона), NETLOGO (Северо-западный университет, США), RepastLogo (Чикагский университет, Аргонская национальная лаборатория, США), а также система имитационного моделирования AnyLogic (XJ Technologic, Россия). Все перечисленные аналоги обеспечивают некоторый уровень работы со структурами взаимодействия агентов, как правило, позволяя задавать такие структуры, как случайные графы и решетки.
Как и большинство перечисленных систем моделирования языком написания системы, а также внутренним языком разработки агентных моделей в разрабатываемой системе имитационного моделирования Simbigraph является язык программирования высокого уровня Java. Для программирования агентов приложений пользователю доступны классы сторонних библиотек: JAVA3D, JUNG, JFreeChart.
В отличие от перечисленных систем агентного моделирования сетевых структур SIMBIGRAPH предоставляет:
– широкий набор средств моделирования решёток (реализованы взаимодействия агентов в гексагональной, квадратной, треугольной, кубической решетках);
– широкий набор генераторов случайных графов, средства калибровки генерируемых графовых моделей по имеющимся статистическим данным о моделируемых реальных сетях;
– импорт/экспорт файлов с использованием широко распространенных форматов представления графов, широкий набор методов для анализа характеристик графов.
На рисунке 9 представлена диаграмма пакетов системы имитационного моделирования системы Simbigraph. Представлены следующие пакеты:
1) engine – пакет, содержащий календарь событий для управления модельным временем имитации;
2) graphs – пакет для поддержки моделирования случайных графов;
3) gui – пакет, реализующий основные графические интерфейсы;
4) core – пакет для реализации базовых математических функций (случайные величины);
5) projections – пакет для реализации иерархий проекций.
Рисунок 9 – Диаграмма классов (пакет projection) в системы Simbigraph, сгенерированная в среде разработки BlueJ
На рисунке 10 представлена диаграмма, сгенерированная для пакета, содержащего Проекции системы Simbigraph. Интерфейс Projection отвечает за конкретное представление структуры взаимодействия, с которым работает система. Это Проекции для работы с сетевыми структурами, генерируемыми в результате триангуляции Делоне (TriangulationDelaneyProjection), для работы с решетками (Lattice2D, Lattice3D), графами Кроннекера (KronnekerGraphProjection), графами предпочтительного связывания (ProjGraphPA) и другими типами случайных графов (NetworkProjection).
Рисунок 10 – Диаграмма классов (пакет projection) в системы Simbigraph, сгенерированная в среде разработки BlueJ
Разработанный алгоритм можно внедрить как отдельный тип генератора в проекцию ProjGraphPA или путем модификации ProjGraphPA, с заменой используемого генератора графов предпочтительного связывания на новый генератор, который использует калибровку по коэффициенту кластеризации, а в остальном работает как оригинальный генератор. Был выбран 2-й вариант. На рис. 11 представлена диаграмма классов пакета graph.generators, в котором содержатся классы основных генераторов графов в системе Simbigraph.
Рисунок 11 – Диаграмма классов Simbigraph пакета generators
Класс GeneratorClastPA, который реализует алгоритм генерации графа представлен на рисунке 12. Интерфейс Factory передается в конструктор класса GeneratorClastPA и используется для создания узлов и рёбер. Интерфейс Map используется для хранения значений пар смежных узлов, со степенями связности, которые хранятся в объектах класса Para.
Рисунок 12 – Диаграмма классов Simbigraph для разработанного класса
Моделирование сетей в SIMBIGRAPH удобно описать с позиций двухэтапного подхода: на первом этапе формируется графовая модель, а на втором сформированная графовая модель используется для организации имитационного моделирования, т.е. моделирования передачи информации, ресурсов и так далее.
Первый этап – генерация графовых моделей сетей осуществляется путем генерации случайных графов и задания размеров и типов грида (рисунок 13). Именно здесь представлены модели сл.г. с НППС, граф Эрдеша–Реньи, граф Эпштейна и т.д. На втором этапе происходит непосредственное моделировани.
Правило предпочтительного связывания инкапсулируется в реализациях интерфейса PrefferentialAttachment. Пример правила предпочтительного связывания для реализации линейного правила представлено ниже.
class prefRule implements PrefferentialAttachment {
public double f(int k) {
return k;
}
}
Рисунок 13 – Диаграмма классов Simbigraph для разработанного класса