Агентно-ориентированное программирование - Agent-oriented programming
Агентно-ориентированное программирование (АОП) это парадигма программирования где создание программного обеспечения сосредоточено на концепции программные агенты. В отличие от объектно-ориентированного программирования в основе которого лежат объекты (предоставляющие методы с переменными параметрами), в основе АОП - агенты, заданные извне (с интерфейсами и возможностями обмена сообщениями). Их можно рассматривать как абстракции объектов. Обмениваемые сообщения интерпретируются получением «агентов» способом, специфичным для данного класса агентов.
История
Исторически концепция агентно-ориентированного программирования и идея сосредоточения программного обеспечения вокруг концепции агента были введены Йоав Шохам в его Искусственный интеллект учится в 1990 году.[1][2] Его агенты специфичны для его собственной парадигмы, поскольку у них есть только один метод с одним параметром. Процитируем Йоава Шохама из его статьи 1990 года о принципиальном различии между АОП и ООП:
- ... агентно-ориентированное программирование (АОП), которое можно рассматривать как специализацию объектно-ориентированного программирования. ...
ООП | АОП | |
---|---|---|
Базовый блок | объект | агент |
Параметры, определяющие состояние базового блока | неограниченный | убеждения, обязательства, возможности, выбор, ... |
Процесс вычисления | передача сообщений и методы ответа | передача сообщений и методы ответа |
Типы сообщений | неограниченный | сообщить, запрос, предложение, обещание, отказ, ... |
Ограничения на методы | никто | честность, последовательность, ... |
Каркасы
Существует несколько «фреймворков» АОП, также называемых платформами агентов, которые реализуют парадигму программирования Шохама. Следующие ниже примеры показывают, как базовый агент программируется как программа hello-world.
ДЖЕЙД
Для Java-платформы одним из фреймворков является JADE. [3] (https://web.archive.org/web/20100621141053/http://jade.tilab.com/ Вот очень простой пример [1] агента, который запускает код
упаковка Привет, мир;импорт jade.core.Agent;общественный учебный класс Привет расширяет Агент { защищенный пустота настраивать() { Система.из.println("Привет, мир. "); Система.из.println("Меня зовут "+ getLocalName()); } общественный Привет() { Система.из.println("Конструктор называется"); }}
В основе модели АОП JADE лежит ее API поддерживает стандарт ФИПА Язык общения агента
Говорящий агент (Джейсон)
Для дословного перевода агентно-ориентированных концепций в схему, не запутанную, как JADE, за Java и объектно-ориентированностью, Agent Speak [4] (Джейсон) обеспечивает «естественный» язык для агентов.
началось. +началось <- .Распечатать("Привет, мир. ").
ЦЕЛЬ
ЦЕЛЬ агент язык программирования для программирования когнитивные агенты. ЦЕЛЕВЫЕ агенты выбирают действия из своих убеждений и целей. Язык предоставляет базовые строительные блоки для разработки и реализации когнитивных агентов с помощью программных конструкций, которые позволяют и облегчают манипуляции с убеждениями и целями агента, а также структурируют его принимать решение. Язык предоставляет интуитивно понятную среду программирования, основанную на здравый смысл или же практическое рассуждение.
SARL язык
SARL[5] (Сайт SARL ) предоставляет фундаментальные абстракции для кодирования многоагентных систем. Он использует синтаксис, подобный скрипту (вдохновлен Scala и Ruby).
упаковка Привет, миримпорт io.sarl.core.Initializeагент HelloWorldAgent { на Инициализировать { println("Привет, мир.") }}
Промежуточное ПО
Одним из способов реализации модульной или расширяемой поддержки АОП является определение стандартного АОП. API к промежуточное ПО функции, которые реализованы как программные агенты. Например, служба каталогов может быть реализована как ФИПА помощник по справочнику или программный агент DF; Управление жизненным циклом для запуска, остановки, приостановки и возобновления работы агентов может быть реализовано в виде службы управления агентом FIPA или агента AMS.[6] Преимущество подхода АОП состоит в том, что он поддерживает более динамичные роли между разными пользователями и поставщиками приложений, услуг и сетей. Например, традиционно сети и услуги обычно управлялись поставщиком сети и услуг от имени клиента и предлагались как единая виртуальная сетевая услуга, но сами клиенты получают больше возможностей для интеграции и управления своими собственными услугами. Этого можно достичь с помощью AOP и API-интерфейсов для агентов промежуточного программного обеспечения, которые могут гибко и динамически управлять обменом данными.[7]
Смотрите также
Рекомендации
- ^ Шохам, Ю. (1990). Агентно-ориентированное программирование (Технический отчет STAN-CS-90-1335). Стэнфордский университет: факультет компьютерных наук.
- ^ Шохам, Ю. (1993). «Агентно-ориентированное программирование». Искусственный интеллект. 60 (1): 51–92. CiteSeerX 10.1.1.123.5119. Дои:10.1016/0004-3702(93)90034-9.
- ^ Bellifeminee, Фабио; Агостино Погги; Джованни Римасса (2001). JADE: среда разработки агентов, совместимая с FIPA2000. Материалы пятой международной конференции по автономным агентам. С. 216–217. Дои:10.1145/375735.376120.
- ^ Ананд С. Рао, 1996. AgentSpeak (L): Агенты BDI говорят на логически вычислимом языке. Труды седьмого европейского семинара по моделированию автономных агентов в многоагентном мире (MAAMAW-96).
- ^ Родригес, Себастьян; Гауд, Николас; Галланд, Стефан (2014). «SARL: язык программирования общего назначения, ориентированный на агентов». 2014 Совместные международные конференции IEEE / WIC / ACM по веб-аналитике (WI) и технологиям интеллектуальных агентов (IAT). С. 103–110. Дои:10.1109 / Wi-iat.2014.156. ISBN 978-1-4799-4143-8.
- ^ Послад, С (2007). «Определение протоколов для взаимодействия с мультиагентной системой». Транзакции ACM в автономных и адаптивных системах. 2 (4): 15 – es. Дои:10.1145/1293731.1293735.
- ^ Послад, S; Дж. Питт; А. Мамдани; Р. Хадингем; П. Бакл (1999). Агентно-ориентированное промежуточное ПО для интеграции сетевых сервисов клиентов. В: Программные агенты для будущих систем связи, Hayzelden A, Bigham J Eds.. С. 221–242. Дои:10.1007/978-3-642-58418-3_9.