Язык SARL - Википедия - SARL language
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
В SARL язык программирования - это модульный агентно-ориентированное программирование язык. Он направлен на обеспечение фундаментальных абстракций для работы с параллелизмом, распределением, взаимодействием, децентрализацией, реактивностью, автономностью и динамической реконфигурацией.[1]
SARL не зависит от платформы и архитектуры агента. Он предоставляет набор агентно-ориентированных абстракций первого класса непосредственно на уровне языка (см. Раздел о концепции ). Тем не менее, он поддерживает интеграцию и отображение концепций, предоставляемых другими агентно-ориентированными метамоделями. Сам SARL использует этот механизм расширения для определения своих собственных расширений (организационных, событийных и т. Д.).
Важной особенностью языка программирования SARL является его встроенная поддержка «холонических многоагентных систем» и «рекурсивных агентов» (также называемых «холоны ").
Обзор
Метамодель SARL основана на четырех основных концепциях: агент, емкость, пространство и навыки.[1]Основная метамодель SARL представлена на рисунке 1, а основные концепции выделены голубым цветом. Каждая из них подробно описана в следующих разделах, а также в соответствующей части кода SARL для иллюстрации их практического использования.
В SARL многоагентная система (MAS) - это совокупность агентов, взаимодействующих друг с другом в совместно используемых распределенных пространствах. Каждый агент имеет набор возможностей, описывающих то, что он может выполнять, и его личные компетенции.[2][3]Каждая емкость может быть реализована / реализована с помощью различных навыков. Для понимания взаимосвязи между концепциями емкости и навыка можно провести параллель с концепциями интерфейса и их классов реализации на объектно-ориентированных языках. Для реализации конкретных архитектур (например, BDI, рассуждающий, реактивный, гибридный и т. д.) разработчики должны развивать свои собственные возможности и навыки, предоставляя агентам новые возможности использования.
Несмотря на свой открытый характер, SARL устанавливает некоторые фундаментальные принципы, которые должны соблюдаться различными виртуальными машинами (ВМ), которые хотят его поддерживать. Прежде всего, реализация Space должна быть полностью распределена, а уровень выполнения должен быть отделен от агентов. SARL поощряет массовое параллельное выполнение агентов и поведений. SARL полностью совместим с Java, чтобы легко повторно использовать весь вклад сообщества Java, а также облегчить интеграцию и развитие унаследованных систем. Один из ключевых принципов, регулирующих SARL, состоит в том, чтобы не навязывать агентам заранее определенный способ взаимодействия в пространстве. Точно так же способ идентификации агентов зависит от типа рассматриваемого пространства. Это позволяет определять различные типы механизмов и моделей взаимодействия в пространствах.
Метамодель и синтаксис языка программирования SARL были вдохновлены такими языками, как Scala, Clojure, и Рубин Инструменты SARL были разработаны на основе Xtext, что позволяет легко создавать предметно-ориентированные языки, которые напрямую интегрируются в Фреймворк Eclipse. Полное определение синтаксиса SARL доступно на GitHub.
Концепции
Язык программирования SARL основан на агентно-ориентированной метамодели, основанной на следующих концепциях.
Эмоциональные программные агенты
Агент - это автономная сущность, обладающая набором навыков для реализации возможностей, которые он демонстрирует. У агента есть набор встроенных способностей, которые считаются необходимыми для уважения общепринятых компетенций агентов, таких как автономия, реактивность, проактивность и социальные способности. Среди этих встроенных способностей (BIC) есть способность к «поведению», которая определяет его глобальное поведение. Агент также имеет поведение по умолчанию, прямо описанное в его определении.
Поведение отображает набор восприятий, представленных событиями, в последовательность действий. Событие - это спецификация некоторого вхождения в Пространстве, которое потенциально может вызвать эффекты со стороны слушателя (например, агент, поведение и т. Д.).
Этот язык не навязывает определенный цикл управления агентом. Программист может реализовать любой протокол управления или полномочий для своего собственного сценария приложения, за исключением событий инициализации и уничтожения. Действительно, когда агенты созданы, виртуальная машина, которая выполняет эмоциональная программа отвечает за создание экземпляров агента и установку навыков, связанных со встроенными возможностями, в агент. Затем, когда агент готов начать свое выполнение, он запускает событие Initialize. Когда агент принял решение чтобы остановить собственное выполнение, виртуальная машина запускает событие Destroy, чтобы позволить агенту освободить любой ресурс, который он еще может удерживать.
Емкость и навыки
Действие - это спецификация преобразования части проектируемой системы или ее среды. Это преобразование гарантирует результирующие свойства, если система до преобразования удовлетворяет набору ограничений. Действие определяется в терминах предварительных и постусловий.
Емкость - это спецификация набора действий. Эта спецификация не делает никаких предположений о ее реализации. Ее можно использовать для определения того, что может делать агент и что поведение требует для его выполнения.
Навык - это возможная реализация емкости, удовлетворяющая всем ограничениям данной спецификации. Агент может динамически развиваться, изучая / приобретая новые возможности, но он также может динамически изменять Навык, связанный с данной емкостью.[2][3]Приобретение новых возможностей также позволяет агенту получить доступ к новому поведению, требующему этих возможностей. Это предоставляет агентам механизм самоадаптации, который позволяет им динамически изменять свою архитектуру в соответствии с их текущими потребностями и целями.
Контекст и пространство
Контекст определяет периметр / границу подсистемы и собирает коллекцию пространств. В каждом контексте существует по крайней мере одно конкретное пространство, называемое пространством по умолчанию, к которому принадлежат все агенты в этом контексте. Это обеспечивает существование общего общее пространство для всех агентов в одном контексте. Затем каждый агент может создавать определенные общедоступные или частные пространства для достижения своих личных целей. С момента своего создания агенты включаются в контекст, называемый контекстом по умолчанию. Понятие контекста имеет полный смысл, когда агенты считаются составными или холоническими (см. ниже).
Пространство - это поддержка взаимодействия между агентами, соблюдающими правила, определенные в Спецификации пространства. Спецификация пространства определяет правила (включая действие и восприятие) для взаимодействия в пределах данного набора пространств, соблюдая эту спецификацию.
Рекурсивный агент или программный агент эмоций
Агенты могут состоять из других агентов для определения иерархических многоагентных систем. Каждый агент определяет свой собственный контекст, называемый внутренним контекстом, и является частью одного или нескольких внешних контекстов.
Пример: обмен сообщениями между двумя агентами
Для иллюстрации синтаксиса языка SARL Схема пинг-понга Кодируется ниже. Агент A отправляет сообщение PING агенту B, чтобы определить, жив ли он еще. Агент B отвечает сообщением PONG.
Во-первых, два сообщения должны быть определены как события (без атрибута):
мероприятие ПИНГ мероприятие ПОНГ
Агент A определяется с помощью
агент A { использует DefaultContextInteraction, ведение журнала на Инициализировать {emit (новый пинг)} на Понг {println ("Агент" + вхождение.source + "жив.")}}
В предыдущем коде ключевое слово использует позволяет агенту использовать ранее определенные возможности: способность взаимодействовать с другими агентами в контексте по умолчанию (DefaultContextInteraction) и способность регистрировать сообщения (ведение журнала). на ключевое слово позволяет определить действия, когда наступление указанного события получено агентом A. Когда агент A получает событие Initialize, он посылает событие Ping всем существующим агентам. Когда агент A получает событие Pong, он регистрирует сообщение с идентификатором источника события внутри.
Агент B определяется с помощью
агент B { использует DefaultContextInteraction, ведение журнала на Ping {println ("Агент" + вхождение.source + "хочет знать, жив ли я.) emit (new Pong, Scopes addresses (instance.source))}}
Когда агент B получает сообщение Ping, он регистрирует сообщение и отвечает сообщением Pong. Чтобы избежать трансляции сообщения Pong, получатель этого сообщения ограничен областью действия, соответствующей адресу отправителя Ping.
Платформа Janus: среда выполнения SARL
Язык SARL определяет набор понятий и их взаимосвязи. Однако язык SARL не навязывает особую инфраструктуру выполнения для обеспечения независимости от платформы.
Тем не менее Янус Проект предоставляет инфраструктуру для запуска агентов SARL. Janus - это мультиагентная платформа с открытым исходным кодом, полностью реализованная в Java 1.7. Она реализует всю необходимую инфраструктуру для выполнения MAS, запрограммированного на языке SARL. Поддерживаются основные предположения, сделанные на уровне языка SARL. с помощью этой среды выполнения: полностью распределенное, параллельное выполнение поведений агентов. Кроме того, платформа Janus предоставляет инструменты, помогающие программисту развернуть свой MAS, например, с автоматическим обнаружением ядер Janus.
Технически платформа Janus следует лучшим практикам в текущей разработке программного обеспечения, таким как Инверсия контроля и прибыль от новых технологий, таких как распределенные структуры данных (сетка данных в памяти, например Hazelcast ).
Рекомендации
- ^ а б Родригес, С., Гауд, Н., & Галланд, С. (2014). SARL: агентно-ориентированный язык программирования общего назначения. На Международной конференции IEEE / WIC / ACM 2014 года по технологии интеллектуальных агентов. Варшава, Польша: Издательство IEEE Computer Society Press.
- ^ а б Родригес С., Гауд Н., Хиллер В., Галланд С. и Кукам К. (2006). Анализ и концепция дизайна для самоорганизации в холонических многоагентных системах. В Международном семинаре по разработке самоорганизующихся приложений (ESOA’06), страницы 62–75. Springer-Verlag.
- ^ а б Cossentino M., Gaud N., Hilaire V., Galland S. & Koukam K. 2010. ASPECS: агентно-ориентированный программный процесс для разработки сложных систем - как проектировать сообщества агентов с холонической точки зрения. В Int. Журнал автономных агентов и мультиагентных систем, 2 (2): 260–304, март 2010 г. DOI: 10.1007 / s10458-009-9099-4.