Содержание к диссертации
Введение
1 Многоагентное имитационное моделирование 18
1.1 Аналитический обзор литературы с точки зрения имитационных экспериментов 18
1.1.1 Обзор наиболее распространеных программных каркасов для многоагентного моделирования 19
1.2 Сравнение производительности систем Swarm и Repast 28
1.2.1 Результаты 30
1.2.2 Погрешность измерения 33
1.3 Распределенные вычисления 33
1.4 Выводы и определение задач работы 34
1.4.1 Обоснование необходимости новой разработки 34
1.4.2 Постановка задачи 35
2 Моделирование имитационных систем 37
2.1 Использование исполняемых моделей 38
2.1.1 Машины действий 39
2.1.2 Машины абстрактных состояний 58
2.1.3 Методология 63
2.1.4 Использование ASML - сервисы 64
2.1.5 Модель 65
2.1.6 Исследование модели 70
2.1.7 Заключение 72
2.2 Итеративный подход к созданию и анализу сложных агентных моделей 73
2.2.1 Проверка гипотез 78
2.3 Распределенные вычисления 80
2.3.1 Создание виртуальной среды взаимодействия 80
2.4 Агентный подход 81
2.4.1 Агенты 81
2.4.2 Сообщения 81
2.4.3 События 83
2.4.4 Пробинг (опрос состояния) 83
2.4.5 Наблюдатели (агрегаторы) 84
2.4.6 Асинхронность 84
2.4.7 Кодогенерация 84
2.4.8 Сравнение агентного и объектного подходов 85
3 Архитектура программного комплекса 86
3.1 Программная архитектура 86
3.2 Архитектура 89
3.3 Трансляция исполняемых спецификаций 90
3.4 Используемые библиотеки и технологии 92
3.4.1 Standard C++ 92
3.4.2 Boost 92
3.4.3 АСЕ 92
3.4.4 Python 93
3.4.5 SObjectizer 93
3.5 Прототип 93
3.5.1 Boot-strap services 96
3.5.2 Kernel services 96
3.5.3 Application support services 97
3.5.4 Application services 97
3.5.5 SimulationManager 98
3.5.6 Принцип работы 102
3.6 Анализ архитектуры 106
3.6.1 Достоинства 106
3.6.2 Недостатки 107
3.6.3 Выводы и перспективы развития 109
4 Практическое применение прототипа и метода ASF 110
4.1 Применение ASF 110
4.2 Тестовая модель HeatBugs 112
4.2.1 Реализация графики 114
4.2.2 Сравнение производительности прототипа 115
4.3 Модель FreeRiders 116
4.3.1 Теория обучения 117
4.3.2 Описание математической модели 117
4.3.3 Исполняемая модель 118
5 Заключение 134
5.1.1 Перспективы развития 134
5.1.2 Основные результаты 134
Литература 136
Работы автора 143
- Обзор наиболее распространеных программных каркасов для многоагентного моделирования
- Итеративный подход к созданию и анализу сложных агентных моделей
- Сравнение агентного и объектного подходов
- Сравнение производительности прототипа
Введение к работе
Настоящая диссертационная работа посвящена разработке новых методов создания и анализа распределенных программных комплексов для многоагентного имитационного моделирования сложных технических и социально-экономических систем. Предлагаемые в этой работе методы позволяют выполнять автоматическую верификацию многоагентных алгоритмов с использованием исполняемых спецификаций, основанных на математическом формализме машин абстрактных состояний.
Актуальность работы
Компьютерное моделирование используется во многих областях науки. Начиная с 90-х годов оно активно применяется для анализа сложных технических и социально-экономических систем. Одной из причин, из-за которых подобные системы сложны в изучении, является тот факт, что для них характерно большое количество нелинейных взаимодействий между элементами. Такие взаимодействия включают в себя передачу знаний и материалов, которые часто влияют на поведение получателей. В системном анализе такие системы называются системами с организованной сложностью. Одним из методов компьютерного моделирования и исследования таких систем является программная реализация многоагентных имитационных моделей. Многоагентная модель состоит из некоторого числа программных объектов -«агентов», взаимодействующих в виртуальной среде.
Многоагентные модели и программные комплексы на их основе сложны в проектировании и разработке. Тем более сложным является анализ безошибочности их работы и соответствия моделируемой системе. Обычно агенты программируются либо на объектно-ориентированном языке программирования, либо с помощью специальной библиотеки - программного каркаса или среды моделирования. В качестве примера таких сред можно назвать Swarm, RePast, Mimosa. Разработка комплексов имитационного моделирования в таких средах требует создания значительного объема программного кода с большим количеством неявных взаимосвязей между программными агентами. Эмпирический анализ безошибочной работы созданного программного обеспечения становится практически невыполнимым.
Многообещающим подходом, позволяющим справиться со сложностью анализа алгоритмов в многоагентных комплексах имитационного моделирования, является разработка, управляемая моделями. В этом подходе используется иерархия моделей и метамоделей, которые на различном уровне абстракции или детализации определяют поведение и структуру программной реализации; при этом также используются алгоритмы анализа и автоматической генерации программного кода по заданным моделям.
Использование моделей для построения и анализа многоагентных алгоритмов имитационного моделирования является одной из актуальных тем научных исследований. Например, работы Альбайрака и Суэрдема посвящены использованию метамоделей для многоагентного имитационного моделирования социальных систем. Некоторые программные комплексы в той или иной степени автоматизируют процесс создания программного обеспечения, с использованием модели, выраженной на специальном языке, в частности проект Mimosa использует для этой цели онтологии. Мюллер также предложил подход к построению многоагентных программных комплексов, основанный на использовании онтологии. Частным случаем моделей являются математические модели, использующие тот или иной математический аппарат. В работах Фомичева В. А. математические модели используются для представления содержания посланий интеллектуальных агентов. В работе Бабкина Э.А. с помощью специализированного языка BRIC на основе сетей Петри была построена модельно-ориентированная среда разработки для многоагентных систем.
Однако одной из серьезных проблем существующих решений, использующих модели, является отсутствие практической возможности выполнять автоматическую или автоматизированную проверку соответствия модели (спецификации) программной реализации многоагентного комплекса. Подобная проверка носит название верификации. В существующих решениях также слабо изучены методы автоматической проверки соответствия метамодели свойствам предметной области. Подобная проверка носит название валидации.
Валидация
Верификация
Исполняемая спецификация
Предметная область
-/
Тестирование
Многоагентная модель
Рисунок 1. Суть верификации и валидации
Для решения проблемы верификации и валидации в данной работе используются исполняемые спецификации, позволяющие осуществить такую проверку в автоматическом режиме.
Спецификация многоагентной модели, в данной работе, представляет собой описание поведения системы, в виде графа состояний, переходы которого соответствуют действиям. Термин действие описывается в разделе автореферата, посвященном содержанию второй главы диссертации.
Цель диссертационной работы
Целью данного исследования является разработка метода на основе формализма машин абстрактных состояний и исполняемых спецификаций, предназначенного для проектирования и верификации программных комплексов многоагентного имитационного моделирования. Ключевой характеристикой предлагаемого метода является поддержка автоматической верификации.
Предметом исследования являются исполняемые поведенческие спецификации и способы их применения для верификации многоагентных программных комплексов имитационного моделирования.
Предлагаемый метод разработки ориентирован на профессионалов, создающих многоагентные имитационные комплексы, моделирующие системы с организованной сложностью, в частности - современные технические и социально-экономические системы. Для таких многоагентных комплексов характерны сложное внутреннее состояние агентов и асинхронное
взаимодействие большого числа агентов: от десятков до десятков тысяч агентов.
Задачи работы
Достижение поставленной цели требует решения следующих взаимосвязанных задач:
Разработка метода итеративного создания и верификации многоагентных имитационных комплексов на основе применения исполняемых спецификаций с использованием формализма машин действий.
Разработка и анализ программной архитектуры, позволяющей реализовывать эффективные многоагентные комплексы и поддерживающей разработанный метод.
Создание прототипа распределенного высокопроизводительного программного комплекса многоагентного моделирования, реализующего предложенную архитектуру.
Апробация предложенного метода и программных решений в ходе моделирования социально-экономического сценария.
При изучении и анализе программной архитектуры использовались методы системного анализа. Для построения алгоритмов создания и верификации многоагентных имитационных комплеков применялись математический формализм абстрактных машин состояний ASM, предложенный Эгоном Боргером в 1995 г, а также формализм машин действий (Гриескамп и др. 2005 г), разработанный на его основе.
Формальное описание программной архитектуры и динамики создаваемого
программного прототипа проводилось с использованием языка UML.
Реализация высокопроизводительного программного комплекса
многоагентного моделирования была выполнена на языках C++, Python, , С#, Cord.
Научная новизна
Результаты диссертации являются новыми и состоят в следующем: 1. Предложены новый метод формальной спецификации и алгоритмы автоматической верификации многоагентных имитационных комплексов,
отличающиеся от аналогов применением исполняемых спецификаций на основе математического формализма машин действий.
Предложены алгоритмы автоматизированной генерации программного кода многоагентных имитационных комплексов, отличающиеся от аналогов использованием формальной модели в виде машины действий.
В поддержку предложенного метода разработана оригинальная сервис-ориентированная архитектура высокопроизводительного распределенного программного комплекса имитационного многоагентного моделирования, отличающаяся от существующих представлением отдельных компонентов программного комплекса (процессов) в виде композиции сервисов.
Для существующей имитационной модели теории коллективных действий разработана исполняемая спецификация, продемонстрирована возможность автоматической верификации соответствующего многоагентного имитационного комплекса и проведена апробация этого комплекса на практике в серии имитационных экспериментов.
Практическая ценность
Представленные в диссертации результаты использованы в ряде проектов и позволяют научно обоснованно решать важные задачи, возникающие при создании, верификации и валидации программных комплексов, такие как выбор алгоритмов функционирования и структур программной реализации, разработка средств взаимодействия с программными компонентами, а также инструментальных средств проектирования самих программных комплексов. Наиболее значимыми с практической точки зрения являются следующие, полученные в работе, результаты:
Разработаны инструменты, позволяющие проводить автоматическую верификацию многоагентных комплексов имитационного моделирования. Разработанные инструменты, поддерживают одновременную работу нескольких вариантов одной и той же имитационной модели в составе одного и того же программного комплекса имитационного моделирования, что позволяет формулировать и проверять гипотезы в ходе вычислительного эксперимента.
В соответствии с предложенной архитектурой создана программная реализация серверного компонента программного комплекса
имитационного моделирования, позволяющая организовывать распределенные многоагентные эксперименты. 3. Разработан новый алгоритм трансляции исполняемых спецификаций многоагентных имитационных моделей, описанных на языке С#, в программный код на языке C++.
Результаты, выносимые на защиту
Новый метод формальной спецификации и автоматической верификации многоагентных имитационных комплексов с использованием исполняемых спецификаций на основе формализма машин абстрактных состояний.
Оригинальная программная архитектура высокопроизводительного многоагентного программного комплекса.
Архитектура, алгоритмы и программная реализация инструментов в составе программного комплекса для создания и анализа многоагентных имитационных экспериментов.
Результаты практической аппробации, подтверждающие применимость предложенного метода и программной архитектуры.
Совокупность полученных в работе и выносимых на защиту теоретических и практических результатов решает важную научную и прикладную задачу в части математического моделирования, создания теоретического, методологического и алгоритмического основания процессов проектирования, реализации и анализа сложных программных комплексов для имитационного моделирования.
Обоснованность и достоверность результатов
Обоснованность и объективная достоверность результатов обусловлена применением строгих формальных методов описания алгоритмов и структуры программ, а также целесообразным использованием математического аппарата теории абстрактных машин состояний. Результаты подтверждены проведением серии имитационных экспериментов с последующей обработкой достоверных статистических данных, программной реализацией, тестированием и эксплуатацией наиболее важных программных компонентов.
Апробация результатов работы
Основные положения и полученные результаты диссертационной работы апробированы в докладах на следующих конференциях и семинарах:Кограф 2007 - 17-я Международная научно-практическая конференция по графическим информационным технологиям и системам (НГТУ, Нижний Новгород, 2007), Современные проблемы в области экономики, менеджмента, социологии, бизнес-информатики и юриспруденции - 5-я научно-практическая конференции студентов и преподавателей НФ ГУ-ВШЭ (Нижний Новгород, 2007), 14-я Нижегородская сессия молодых ученых (математические науки) (Министерство образования Нижегородской области,Нижний Новгород, 2009), Семинары в НФ ГУ-ВШЭ (2008-2010).
Публикации
По теме диссертации автором опубликовано 6 работ, список которых приводится в конце автореферата, в том числе в журналах входящих в список ВАК - 1 работа.
Структура и объем работы
Обзор наиболее распространеных программных каркасов для многоагентного моделирования
Программный каркас для многоагентного моделирования TAEMS (Task Analysis Environmental Modeling and Simulation language) [48] предназначен для организации- взаимодействия сложных систем. Он содержит свой язык моделирования, призванный служить чем-то вроде IDL [49] задач, решаемых многоагентными системами. При этом обычно подразумевается, что агенты решающие задачи сложны, а их количество невелико. Основной упор делается на оркестровку взаимодействия агентов, и попытку уложиться в некоторые сроки, отпущенные на решение задачи путем перераспределения нагрузки между агентами.
Каркас (среда) DimaX [41], концентрируется на обеспечении отказоустойчивости в распределенных многоагентных средах. Устойчивость к сбоям обеспечивается за счет дублирования критичных агентов, журналирования работы, введения алгоритмов оценки работы агентов и перераспределения нагрузки [42].
Система, предлагаемая в данной работе по назначению и структуре наиболее близка к каркасам многоагентного имитационного моделирования Swarm [56] и RePast [74]. Каркас Swarm позволяет построить объектно-ориентированную модель, состоящую из взаимодействующих агентов и проследить за эволюцией такой модели как с т.з. глобальных параметров, так и т.з. отдельных агентов. С точки зрения организационной структуры, Swarm представляет собой набор библиотек на языке Objective С и среду, в , которой осуществляется запуск экспериментов. 1. Код Swarm объектно-ориентирован. Swarm написан на языке Objective С. На этом же языке пишутся все описания агентов и моделей. Данный язык является потомком языка С, появившимся до языка C++. Стоит отметить, что Objective С является языком с динамической типизацией, что вносит дополнительные накладные расходы во время исполнения программы. Он предоставляет возможности пользоваться всеми преимуществами объектно-ориентированного программирования. Классы, создаваемые в ходе разработки, наследуют стандартные интерфейсы, предоставляемые Swarm, которые описывают самоограниченные сущности, которые являются наиболее подходящими и естественными единицами при создании моделей, базирующихся на поведении агентов. 2. Иерархическая структура приложений. Большинство приложений для Swarm имеют сходную общую четко просматриваемую структуру: «верхний» слой, зачастую называемый наблюдателем, и слой «модели», где находится основная логика программы. Наблюдатель отвечает за инициализацию и работу графического интерфейса, который предоставляет удобный1 пользовательский интерфейс, и отсюда же начинается создание нижнего слоя — слоя модели. Этот слой несет на себе всю идейную нагрузку модели - он занимается созданием экземпляров агентов, задействованных в модели, планирует активности агентов, собирает статистику о деятельности агентов и системы в целом, а также предоставляет достоверную информацию наблюдателю.
Swarm обеспечивает пользователя большим количеством доступных инструментов. Одной из задач систем многоагентного моделирования является удобство создания и анализа агентных моделей. Swarm предоставляет ряд инструментов, таких как средства распределения памяти, планировщик задач, инструмент поддерживания списков, и пр. Однако Swarm- предъявляет определенные требования к разработчику, который занимается разработкой агентной модели. Только при выполнении этих условий возможен успех проекта: 1. Знание языка программирования Objective С и его стандартной библиотеки. Пожалуй, именно это требование является неудобством для многих разработчиков многоагентных моделей, так как язык Objective С в наши дни не получил большой популярности и не очень распространен. 2. Использование определенной платформы для реализации. Бинарные программы, написанные на языке С, являются платформо зависимыми. Потомок С, Objective С - не исключение. Именно поэтому написание некоторой модели должно быть жестко связано с конкретной платформой, на которой происходит запуск модели. Более того, сам продукт, поставляемые библиотеки также привязаны к конкретной платформе, что несколько затрудняет переносимость моделей с одной платформы на другую. Программный каркас RePast напоминает Swarm, но в качестве языка описания модели использует С# (или любой другой CLI совместимый язык). Также существует Python-версия RePast и Java-версия. 1. Стандартные типы агентов. Repast предоставляет уже готовый набор наиболее распространенных типов агентов, которые могут потом быть 1 CLI - Common Language Interface - стандартизированное подмножество платформы .NET изменены при конкретной реализации моделей. Также Repast содержит большое количество готовых примеров работающих моделей, которые могут быть использованы при моделировании. Кроме того, пользователь получает абсолютную гибкость относительно того, как определяются свойства и поведение агентов. 2. Система полностью объектно-ориентирована. Как уже отмечалось, приложение пишется на объектно-ориентированном языке Java компании Sun Microsystems (С# и Python также объектно-ориентированы). Данный язык является одним из самых знаменитых и используемых объектно-ориентированных языков программирования, который поддерживает объектно-ориентированную парадигму разработки программного обеспечения. Это позволяет сделать структуру программы, ее логику, иерархию объектов наиболее четкой и ясной. Кривая обучения для языка Java более полога, чем для языков С, C++, Objective С.
Итеративный подход к созданию и анализу сложных агентных моделей
Исполняемая спецификация системы задается как машина абстрактных состояний, т.е. машина действий, состояния которой определяются только состоянием данных. При этом состояние данных может включать символьную часть с набором ограничений на неизвестные параметры (целочисленное х неизвестно, но больше 0). Правила обновления (изменения состояния данных), спецификации описываются исполняемом языке программирования. Состояние определяется набором значений переменных. Отношение переходов Т задается неявно, с помощью предикатов, вычисляемых в методах спецификации.
Исследование спецификации представляет собой генерирование частичного поведения - конечного подмножества состояний, путем последовательного применения правил обновления к начальному состоянию данных, ограниченного длиной последовательности вызова методов, а также сценариями.
Тестирование соответствия многоагентной модели её спецификации (верификация) основано на чередующейся имитации (бисимуляции) системы и спецификации, по аналогии с концепцией интерфейсных автоматов [27]. При этом действия разбиваются на непересекающиеся подмножества контролируемых и наблюдаемых. Вторая машина имитирует все контролируемые действия первой, в то время как первая машина имитирует все наблюдаемые действия второй.
Итеративный подход к процессу создания сложных программных комплексов в последнее время считается наиболее перспективным и обеспечивающим большую вероятность успеха. Под успехом в данном случае подразумевается адекватность системы поставленной задаче, а также реализация проекта в приемлемые сроки. Итеративный подход также предлагает способ постепенного выяснения и уточнения функциональных требований к системе, изначально сформулированных абстрактно. В пределе спецификацией системы является не всеохватывающее техническое задание, а история изменений, ошибок и запросов на изменение функциональности. Среди распространенных процессов, основанных на итеративном подходе можно назвать RUP (Rational Unified Process), семейство Agile (гибких) процессов, ХР (Extreme Programming) и MSF (Microsoft Solutions Framework). Учитывая ориентированность процесса разработки на итеративность, разработчику приходится прилагать много усилий, в случае если используемый инструмент не позволяет оставить часть системы «недописанной». Использование языка C++ для разработки сложных систем требует уже на ранних этапах, когда еще неизвестно, чем система будет заниматься, и как она это будет делать, принять много архитектурных и проектных решений которые сложно изменить в будущем. Этого недостатка лишены системы, построенные на скриптовых или «управляемых»7 языках. Принимая это во внимание, была поставлена задача создания инструмента, позволяющего совместить производительность C++ и гибкость скриптовых систем. Для решения этой задачи была разработана архитектура системы и процесс построения системы. 7 Английский термин "managed language", язык подразумевающий исполнение виртуальной машиной. Впервые предлагается систематизированный подход, предполагающий; моделирование системы для многоагентного имитационного. моделирования с помощью исполняемых, спецификаций; обеспечивающий» возможность анализа спецификации» самой; по; себе; ш автоматической, проверки соответствия (верификации);; спецификации, и реализации. Предлагаемая в данной- работе система получила название ASE (как аббревиатура от Agent Service Framework). Подход ASF представляет собой метод создания систем для; имитационного моделирования, включающий в себя процесс итеративного создания! и уточнения модели. Особенностью является возможность исследования различных аспектов системы на самых ранних этапах разработки. Использование математического формализма ASM позволяет легко выбирать, уровень, абстракции спецификации. На первых:, этапах епецификациясобладает только, самыми общими чертами, но её уже можно запустить, и; посмотреть, верны, ли самые общие; предположения о структуре системы: На. более поздних этапах подход ASE позволяет обеспечить соответствие многоагентной имитационной модели,; её ASM-спецификации. Одна итерация процесса разработки состоит из следующих шагов: 1. Разработка и ли уточнение ASM-модели (модельнойшрограммы). 2. Автоматизированное исследование ASM; модели; самой по себе; и исправление найденных ошибок. 3. Автоматическая генерация программного кода на языке С++ подключаемого модуля (plugin) для системы, имитационного моделирования и заполнение деталей, неописаных с спецификации. 4. Подключение нового модуля к ядру, возможно уже запущенному и работающему с предыдущей версией модели. При этом можно сравнить поведение новых и старых видов агентов при работе в одной среде, в рамках одного эксперимента. 5. Автоматическая проверка соответствия С++-модели и ASM модели с помощью SpecExplorer. Инструмент SpecExplorer в данном случае выступает контролером, который может не только отследить факт нарушения контракта (расхождения реализации и модели), но и показать последовательность шагов, приведших к ошибочной реакции со стороны C++ реализации. Концепция работы с многоагентной имитационной моделью, в рамках ASF, аналогична с концепции роста научного знания по Попперу. Исследователь итеративно выдвигает гипотезы, усовершенствуя свое знание о предмете исследования на основании анализа предыдущих гипотез и теорий. В поддержку предложенного метода разработаны инструменты, позволяющие проводить многоагентные имитационные эксперименты, создавать и анализировать как спецификации, так и сами многоагентные имитационные модели.
Сравнение агентного и объектного подходов
Термин программная архитектура, не имеет единого, признанного всеми определения [39]. Некоторые авторы определяют архитектуру, как набор решений, принятых на ранней стадии проекта, таких, что их изменение невозможно! без серьезной переделки системы [34]. Те не менее можно назвать несколько черт, присущих практически всем определениям: Архитектура определяет структуру. Приложение (система) разбивается на набор взаимосвязанных компонентов, модулей { объектов, или других программных артефактов. Архитектура определяет способ коммуникации между компонентами. Архитектура отвечает не-функциональным требованиям. Требования, которые не могут быть представлены в списке прецедентов использования (use cases), но влияющие на систему находят отражение в архитектуре. К таким требованиям относятся технические ограничения, бизнес-ограничения, требования к качеству системы. Для целей данной работы лучше всего подойдет определение архитектуры, взятое из стандарта ANSI/IEEE Std 1471-20008: Архитектура определяется как фундаментальная организация системы, воплощенная в её компонентах, их отношениях друг к другу и среде, а также принципов определяющих конструкцию и развитие. Концепция слоев (layers) — одна из общеупотребительных моделей, используемых разработчиками программного обеспечения для разделения, сложных систем на более простые части [34]. В архитектурах компьютерных систем, например, различают слои кода на языке программирования, функций операционной системы, драйверов устройств; наборов инструкций центрального процессора и-внутренней5 логики чипов. В среде сетевого взаимодействия протокол FTP работает на основе протокола TCP, который, в- свою очередь, функционирует "поверх" протокола IP, расположенного "над" протоколом Ethernet. Описывая систему в терминах архитектурных слоев,, удобно воспринимать составляющие ее подсистемы в виде "слоеного пирога": Слой более высокого уровня пользуется службами, предоставляемыми нижележащим слоем, но тот не "осведомлен" о наличии соседнего верхнего слоя. Более того, обычно, каждый промежуточный слой "скрывает" нижний слой от верхнего: например, слой 4 пользуется услугами слоя 3, который обращается к слою 2, но слой 4 не знает о существовании слоя 2. (Не в каждой архитектуре слои настолько "непроницаемы", но в большинстве случаев дело обстоит именно так.) Расчленение системы на слои предоставляет целый ряд преимуществ. Отдельный- слой можно воспринимать как единое самодостаточное целое, не особенно заботясь о наличии других слоев (скажем, для создание службы FTP необходимо знать протокол TCP, но не тонкости Ethernet). Можно выбирать альтернативную реализацию базовых слоев (приложения FTP способны работать без каких-либо изменений в среде Ethernet, по соединению РРР или в любой другой среде передачи информации). Зависимость между слоями можно свести к минимуму. Так, при смене среды передачи информации (при условии сохранения функциональности слоя IP) служба FTP будет продолжать работать. Каждый слой является удачным кандидатом на стандартизацию (например, TCP и IP — стандарты, определяющие особенности функционирования соответствующих слоев системы сетевых коммуникаций). Созданный слой может служить основой для нескольких различных слоев более высокого уровня (протоколы ТСРЯР используются приложениями FTP, telnet, SSH и HTTP). В противном случае для каждого протокола высокого уровня пришлось бы изобретать собственный протокол низкого уровня. Сервис-ориентированная архитектура (англ. SOA, service-oriented architecture) — модульный подход к разработке1 программного обеспечения, основанный на использовании сервисов, (служб) со стандартизированными интерфейсами. Компоненты программы могут быть распределены по разным узлам сети, и предлагаются как независимые, слабо связанные, заменяемые сервисы-приложения. Программные комплексы, разработанные в соответствии с SOA, часто реализуются как набор веб-сервисов, интегрированных при помощи известных стандартных протоколов (SOAP, WSDL, и т. п.). Интерфейс компонентов SOA-программы предоставляет инкапсуляцию деталей реализации конкретного компонента (ОС, платформы, языка программирования, производителя, и т. п.) от остальных компонентов. Таким образом, SOA предоставляет гибкий и элегантный способ комбинирования и многократного использования компонентов для построения сложных распределённых программных комплексов. После анализа работ [36] [21] [13]. Была выбрана архитектура являющаяся одной из реализаций SOA (Service Oriented Architecture).
Сравнение производительности прототипа
Метод разработки имитационного эксперимента с помощью программного каркаса ASF.Core предполагает, что работа начинается с построения спецификации. Спецификация представляет собой небольшую программу написанную на С# или любом другом .Net языке и описание нескольких машин действий (action machine) на языке Cord. Спецификация исследуется с помощью Spec Explorer. Обычно происходит несколько итераций, прежде чем модель начинает работать в соответствии с ожиданиями пользователя. После этого по спецификации генерируется программный код агентов на языке C++, который будучи скомпилированным будет выполняться в многоагентной среде.
Для демонстрации метода ASF в данном разделе подробно разобрана исполняемая спецификация реальной экономической модели из теории анализа коллективных действий.
Традиционным предположением теорий анализа коллективных действий является предпосылка неограниченной" рациональности экономических агентов. Согласно которой члены группы, принимая решения об участии в создании клубных благ, совершают выбор, основываясь на оценках издержек и выгод от участия в коллективных действиях. Однако, данное предположение имеет ограниченную применимость для анализа кооперации в повседневной жизни, поскольку, как правило, не все члены рассматриваемой группы имеют склонность, информацию или аналитические способности для оценки вклада от их инвестиций в производство клубных благ. Предложенная Майклом Мэси [54] теория обучения позволяет смягчить данную предпосылку, заменяя ее предположением о том, что индивиды принимают решения об участии в коллективных действиях, основываясь на собственном положительном или негативном опыте участия в производстве клубных благ. Модель построена исходя из следующих предпосылок: 1. Индивиды принимают решения об участии в производстве клубных благ, основываясь на собственном положительном или4 негативном опыте. 2. Выбор индивидом, той или иной стратегии не является детерминированным. Предыдущие результаты кооперации между членами группы влияют лишь на склонность индивидов к участию в коллективных действиях. При моделировании принятия экономическими агентами того или иного решения учитывается фактор случайности. 3. Благо, производимое в ходе коллективных действий, может быть конкурентным в потреблении. Компьютерное моделирование социальных моделей позволяет получить агрегированные численные и качественные характеристики моделей и сделать вывод и ох применимости в реальной жизни. Ввиду того что количество параметров модели велико, важно иметь возможность не только анализировать статистические данные, но и проводить имитационные эксперименты с помощью соответствующего ПО. Многоагентное моделирование позволяет более детально проанализировать модель за счет возможности проследить значения параметров как отдельного агента, так и произвольно выбранных групп агентов. Программный каркас ASF.Core позволяет динамически строить графики параметров любого агента, а также строить двухмерную картину распределения агентов по произвольно выбранным параметрам. Рассмотрим модель FreeRiders. Зачастую простых «шагов» работы многоагентной системы недостаточно, поэтому на каждый шаг работы системы агенты и пространство производят некоторое количество внутренних шагов. Это реализуется за счет сообщений и состояний специального агента Space, который реализует абстракцию виртуальной среды взаимодействия. Каждый шаг работы системы разбивается на следующие этапы: 1. Агент Space, получив от системного агента сообщение «step», рассылает всем заинтересованным агентам сообщение «msg_step». 2. В обработчике сообщения «msg_step» агенты-индивиды принимают решение, будут ли они участвовать в построении общественного блага на этом шаге и посылают эту информацию агенту Space. 3. Агент Space, собрав всю информацию о решения всех индивидов, посылает результат — уровень достигнутого блага на данном шаге. 4. Индивиды, обработав полученную информацию, посылают сообщение «msg_end_step», сигнализируя, что обработка закончена. 5. Как только все индивиды обработают информацию о результатах шага, агент Space посылает системному агенту сообщение «step_end», что означает готовность системы к дальнейшей работе. Системный агент в зависимости от выбранного режима или сразу же генерирует следующее сообщение «step», или ждет действий пользователя, в случае если система запущена в пошаговом режиме. Схема взаимодействия агентов приведена на (рис. 24).