Агент-ориентированное программирование
Часть серии о |
Мультиагентные системы |
---|
Мультиагентное моделирование |
Агент-ориентированное программирование |
Связанный |
Агент-ориентированное программирование ( АОП ) — это парадигма программирования , в которой создание программного обеспечения основано на концепции программных агентов . В отличие от объектно-ориентированного программирования , в основе которого лежат объекты (предоставляющие методы с переменными параметрами), в основе АОП лежат внешне заданные агенты (с интерфейсами и возможностями обмена сообщениями). Их можно рассматривать как абстракции объектов. Сообщения, которыми обмениваются, интерпретируются получающими «агентами» способом, специфичным для этого класса агентов.
История [ править ]
Исторически концепция агентно-ориентированного программирования и идея сосредоточения программного обеспечения на концепции агента были представлены Йоавом Шохамом в рамках его исследований искусственного интеллекта в 1990 году. [1] [2] Его агенты специфичны для его собственной парадигмы, поскольку у них есть только один метод с одним параметром. Процитируем Йоава Шохама из его статьи 1990 года о базовой разнице между АОП и ООП:
... агентно-ориентированное программирование (АОП), которое можно рассматривать как специализацию объектно-ориентированного программирования.
ОТКРЫТЬ | АОП | |
---|---|---|
Базовый блок | объект | агент |
Параметры, определяющие состояние базового блока | неограниченный | убеждения, обязательства, возможности, выбор,... |
Процесс вычислений | методы передачи сообщений и ответа | методы передачи сообщений и ответа |
Типы сообщений | неограниченный | информировать, просить, предлагать, обещать, отклонять, ... |
Ограничения на методы | никто | честность, последовательность,... |
Фреймворки [ править ]
Существует множество «фреймворков» АОП, также называемых агентскими платформами, которые реализуют парадигму программирования Шохама. Следующие примеры иллюстрируют, как базовый агент программируется как программа hello world.
ДЖЕЙД [ править ]
Для Java-платформы одним из фреймворков является JADE . [3] Вот очень простой пример [4] агента, выполняющего код.
package helloworld;
import jade.core.Agent;
public class Hello extends Agent {
protected void setup() {
System.out.println("Hello World. ");
System.out.println("My name is "+ getLocalName());
}
public Hello() {
System.out.println("Constructor called");
}
}
В основе модели AOP JADE лежит . поддержка стандартного FIPA языка связи агентов
Агент Спик (Джейсон) [ править ]
AgentSpeak — это агентно-ориентированный язык программирования, основанный на логическом программировании и архитектуре «вера-желание-намерение» (BDI).
Для буквального перевода агентно-ориентированных концепций в простую схему, такую как JADE, лежащую в основе Java и объектно-ориентированности, Agent Speak [5] (Джейсон) предоставляет агентам «естественный» язык.
started.
+started <- .print("Hello World. ").
ЦЕЛЬ [ править ]
GOAL — агентный язык программирования для программирования когнитивных агентов . Агенты ЦЕЛИ выбирают действия исходя из своих убеждений и целей. Язык предоставляет основные строительные блоки для проектирования и реализации когнитивных агентов посредством программных конструкций, которые позволяют и облегчают манипулирование убеждениями и целями агента, а также структурируют процесс принятия им решений . Язык предоставляет интуитивно понятную среду программирования, основанную на здравом смысле или практическом рассуждении .
Язык SARL [ править ]
САРЛ [6] предоставляет фундаментальные абстракции для кодирования мультиагентных систем. [7] Он использует синтаксис, подобный скрипту (вдохновленный Scala и Ruby).
package helloworld
import io.sarl.core.Initialize
agent HelloWorldAgent {
on Initialize {
println("Hello World.")
}
}
PADE (среда разработки агентов Python) [ править ]
ВСТРЕТИТЬСЯ [8] — это пакет Python для разработки интеллектуальных агентов на языке Python. Эта структура соответствует стандартам FIPA и ACL.
class AgenteHelloWorld(Agent):
def __init__(self, aid):
super(AgenteHelloWorld, self).__init__(aid=aid)
display_message(self.aid.localname, 'Hello World!')
Промежуточное программное обеспечение [ править ]
Одним из способов реализации модульной или расширяемой поддержки АОП является определение стандартных API-интерфейсов АОП для функций промежуточного программного обеспечения , которые сами по себе реализуются как программные агенты . Например, служба каталогов может быть реализована как посредник каталогов FIPA или программный агент DF; управление жизненным циклом для запуска, остановки, приостановки и возобновления работы агентов может быть реализовано в виде службы управления агентами FIPA или агента AMS. [9] Преимущество подхода АОП заключается в том, что он поддерживает более динамичные роли между различными пользователями и поставщиками приложений, услуг и сетей. Например, традиционно сети и услуги обычно управлялись поставщиком сетей и услуг от имени клиента и предлагались как единая виртуальная сетевая услуга, но у самих клиентов появляется больше возможностей для интеграции и управления своими собственными услугами. Этого можно достичь с помощью АОП и API для агентов промежуточного программного обеспечения, которые могут гибко и динамически управлять связью. [10]
См. также [ править ]
- Программный агент - Компьютерная программа, действующая от имени пользователя.
- NetLogo - страницы языка программирования
- Модель актера – Модель параллельных вычислений.
- ЦЕЛЬ – агентный язык программирования для программирования когнитивных агентов.
Ссылки [ править ]
- ^ Шохам, Ю. (1990). Агент-ориентированное программирование (Технический отчет STAN-CS-90-1335). Стэнфордский университет: факультет компьютерных наук.
- ^ Шохам, Ю. (1993). «Агентно-ориентированное программирование». Искусственный интеллект . 60 (1): 51–92. CiteSeerX 10.1.1.123.5119 . дои : 10.1016/0004-3702(93)90034-9 .
- ^ Беллифемини, Фабио; Агостино Поджи; Джованни Римасса (2001). JADE: среда разработки агентов, соответствующая требованиям FIPA2000 . Материалы пятой международной конференции по автономным агентам. стр. 216–217. дои : 10.1145/375735.376120 .
- ^ «Рутдев» . rootdev.nl . Архивировано из оригинала 2 июля 2011 года . Проверено 18 сентября 2022 г.
- ^ Ананд С. Рао, 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 . S2CID 15508257 .
- ^ Веб-сайт SARL
- ^ «Среда разработки агентов Python — документация Pade 1.0» .
- ^ Послад, С (2007). «Определение протоколов взаимодействия многоагентных систем». Транзакции ACM в автономных и адаптивных системах . 2 (4): 15–с. дои : 10.1145/1293731.1293735 . S2CID 9477595 .
- ^ Послад, С.; Питт, Дж.; Мамдани, А.; Хадингем, Р.; Бакл, П. (1999). Хейзелден, А.; Бигэм, Дж. (ред.). Агент-ориентированное промежуточное программное обеспечение для интеграции сетевых сервисов клиентов. В: Программные агенты для будущих систем связи . стр. 221–242. дои : 10.1007/978-3-642-58418-3_9 .