SARL (язык программирования)
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Язык 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 и Ruby . Инструменты SARL были разработаны на основе Xtext , что позволяет легко создавать языки для конкретной предметной области, которые напрямую интегрируются в среду Eclipse . Полное определение синтаксиса SARL доступно на GitHub .
Концепции
[ редактировать ]Язык программирования SARL основан на агентно-ориентированной метамодели, основанной на следующих концепциях.
Эмоциональные программные агенты
[ редактировать ]Агент — это автономная сущность, имеющая набор навыков для реализации своих способностей. Агент обладает набором встроенных способностей, которые считаются необходимыми для уважения общепринятых компетенций агентов, таких как автономия, реактивность, проактивность и социальные способности. Среди этих встроенных способностей (BIC) есть способность «поведения», которая определяет ее глобальное поведение. Агент также имеет поведение по умолчанию, прямо описанное в его определении.
Поведение отображает совокупность восприятий, представленных событиями, в последовательность действий. Событие — это спецификация некоторого события в Пространстве, которое потенциально может вызвать эффекты слушателя (например, агента, поведения и т. д.).
Этот язык не навязывает цикл управления конкретному агенту. Программист может реализовать любой протокол управления или полномочий для своего сценария приложения, за исключением событий инициализации и уничтожения. Действительно, при создании агентов виртуальная машина, на которой выполняется эмоциональное программное обеспечение, отвечает за создание экземпляров агента и установку в агент навыков, связанных со встроенными возможностями. Затем, когда агент готов начать выполнение, он запускает событие Initialize. Когда агент решает остановить свое выполнение, виртуальная машина запускает событие Destroy, чтобы позволить агенту освободить любой ресурс, который он еще может удерживать.
Способность и навыки
[ редактировать ]Действие — это спецификация преобразования части проектируемой системы или ее среды. Это преобразование гарантирует результирующие свойства, если система до преобразования удовлетворяет набору ограничений. Действие определяется с точки зрения пред- и пост-условий.
Емкость — это спецификация набора действий. Эта спецификация не делает никаких предположений относительно ее реализации. Его можно использовать для указания того, что может делать агент и какое поведение требуется для его выполнения.
Навык — это возможная реализация мощности, удовлетворяющая всем ограничениям данной спецификации. Агент может динамически развиваться, изучая/приобретая новые Возможности, но он также может динамически изменять Навык, связанный с данной способностью. [2] [3] Приобретение новых возможностей также позволяет агенту получить доступ к новым моделям поведения, требующим этих возможностей. Это предоставляет агентам механизм самоадаптации, который позволяет им динамически изменять свою архитектуру в соответствии с их текущими потребностями и целями.
Контекст и пространство
[ редактировать ]Контекст определяет периметр/границу подсистемы и собирает коллекцию пространств. В каждом контексте существует по крайней мере одно конкретное пространство, называемое пространством по умолчанию, которому принадлежат все агенты в этом контексте. Это гарантирует существование общего общего пространства для всех агентов в одном контексте. Затем каждый агент может создавать определенные общественные или частные пространства для достижения своих личных целей. С момента своего создания агенты включаются в контекст, называемый контекстом по умолчанию. Понятие контекста имеет полный смысл, когда агенты считаются составными или холоническими (см. ниже).
Пространство — это поддержка взаимодействия между агентами с соблюдением правил, определенных в спецификации пространства. Спецификация Пространства определяет правила (включая действия и восприятие) взаимодействия внутри заданного набора Пространств с соблюдением этой спецификации.
Рекурсивный агент или эмоциональный программный агент
[ редактировать ]Агенты могут состоять из других агентов, образуя иерархические мультиагентные системы. Каждый агент определяет свой собственный контекст, называемый внутренним контекстом, и он является частью одного или нескольких внешних контекстов.
Примеры
[ редактировать ]package helloworld
import io.sarl.core.Initialize
agent HelloWorldAgent {
on Initialize {
println("Hello, World!")
}
}
Обмен сообщениями между двумя агентами
[ редактировать ]Для иллюстрации синтаксиса языка SARL схема пинг-понга ниже приведена . Агент A отправляет сообщение PING агенту B, чтобы определить, жив ли он еще. Агент B отвечает сообщением PONG.
Во-первых, два сообщения должны быть определены как события (без атрибута):
event PING event PONG
Агент A определяется как
agent A { uses DefaultContextInteraction, Logging on Initialize { emit(new Ping) } on Pong { println("Agent " + occurrence.source + " is alive.") } }
В предыдущем коде ключевое слово Использование позволяет агенту использовать ранее определенные возможности: возможность взаимодействовать с другими агентами внутри контекста по умолчанию (DefaultContextInteraction) и возможность регистрировать сообщения (ведение журнала). Ключевое слово on позволяет определить действия при получении агентом А возникновения указанного события. Когда агент A получает событие Initialize, он отправляет событие Ping всем существующим агентам. Когда агент А получает событие Pong, он регистрирует сообщение с идентификатором отправителя события внутри.
Агент B определяется как
agent B { uses DefaultContextInteraction, Logging on Ping { println("Agent " + occurrence.source + " wants to know if I'm alive.) emit(new Pong, Scopes addresses(occurrence.source)) } }
Когда агент B получает сообщение Ping, он регистрирует сообщение и отвечает сообщением Pong. Чтобы избежать широковещательной рассылки сообщения Pong, получатель этого сообщения ограничен областью действия, соответствующей адресу отправителя Ping.
Платформа Janus: среда выполнения SARL
[ редактировать ]Язык SARL определяет набор понятий и их отношений. Однако язык SARL не налагает особой инфраструктуры выполнения, обеспечивающей независимость от платформы.
Тем не менее, проект Janus предоставляет инфраструктуру для работы агентов SARL. Janus — это платформа с открытым исходным кодом мультиагентная , полностью реализованная на Java 1.7. Он реализует всю необходимую инфраструктуру для выполнения MAS, запрограммированного на языке SARL. Основное предположение, сделанное на уровне языка SARL, поддерживается этой средой выполнения: полностью распределенное, параллельное выполнение поведения агента. Кроме того, платформа Janus предоставляет инструменты, помогающие программисту развернуть MAS, например, с автоматическим обнаружением ядер Janus.
Технически платформа Janus следует лучшим практикам современной разработки программного обеспечения, таким как инверсия управления , и использует преимущества новых технологий, таких как распределенные структуры данных (In-Memory Data Grid, например Hazelcast ).
См. также
[ редактировать ]- Интеллектуальный агент
- ДЖЕК Интеллектуальные агенты
- Платформа разработки агентов Java (JADE)
- АгентГовори
- ЦЕЛЬ
Ссылки
[ редактировать ]- ^ Jump up to: а б Родригес С., Гауд Н. и Галланд С. (2014). SARL: агентно-ориентированный язык программирования общего назначения. На Международной конференции IEEE/WIC/ACM 2014 года по технологиям интеллектуальных агентов. Варшава, Польша: Издательство компьютерного общества IEEE.
- ^ Jump up to: а б Родригес С., Гауд Н., Хилари В., Галланд С. и Кукам К. (2006). Концепция анализа и проектирования самоорганизации в холонных мультиагентных системах. На Международном семинаре по инженерным самоорганизующимся приложениям (ESOA'06), стр. 62–75. Спрингер-Верлаг.
- ^ Jump up to: а б Коссентино М., Гауд Н., Хилари В., Галланд С. и Кукам К. 2010. ASPECS: агентно-ориентированный программный процесс для разработки сложных систем - как проектировать агентские общества в холонической перспективе. В Интер. Журнал автономных агентов и многоагентных систем, 2(2):260–304, март 2010 г. doi: 10.1007/s10458-009-9099-4.