Агентное программирование
Понятие интеллектуального и программного агента появилось более 20 лет назад, их роль в программной инженерии все время возрастает [25-–29]. Так, в [30] Джекобсон отметил перспективу для использования агентов в качестве разработчиков архитектуры системы из вариантов использования, менеджеров проекта и др. Использование агентов в этих ролях в ближайшем будущем будет способствовать повышению производительности, качества и ускорению разработки ПС.
Основным теоретическим базисом данного программирования являются темпоральная, модальная и мультимодельная логики, дедуктивные методы доказательства правильности свойств агентов и др. Рассмотрим сущность основных прикладных аспектов агентной тематики.
С точки зрения программной инженерии, агент это самодостаточная программа, способная управлять своими действиями в информационной среде функционирования для получения результатов выполнения поставленной задачи и изменения текущего состояния среды.
Агент может обладать такими свойствами:
– автономность – это. способность действовать без внешнего управляющего воздействия;
– реактивность – это способность реагировать на изменения данных и среды, и воспринимать их;
– активность – это способность ставить цели и выполнять заданные действия для достижения этой цели;
– социальность – это способность к взаимодействию с другими агентами (или людьми).
В задачи программного агента входят:
– самостоятельная работа и контроль своих действий;
– взаимодействие с другими агентами;
– изменение поведения в зависимости от состояния внешней среды;
– выдача достоверной информации о выполнении заданной функции и т.п.
С интеллектуальным агентом связываются знания типа: убеждение, намерение, обязательства и т.п. Эти понятия входят в концептуальную модель и связываются между собой операционными планами реализации целей каждого агента. Для достижения целей интеллектуальные агенты взаимодействуют друг с другом, устанавливают связь между собой через сообщения или запросы и выполняют заданные действия или операции в соответствии с имеющимися знаниями.
Агенты могут быть локальными и распределенными. Процессы локальных агентов протекают в клиентских серверах сети, выполняют заданные функции и не влияют на общее состояние среды функционирования. Распределенные агенты, расположенные в разных узлах сети, выполняют автономно (параллельно, синхронно, асинхронно) предназначенные им функции и могут влиять на общее состояние среды. В обоих случаях характер взаимодействия между агентами зависит от таких факторов: совместимость целей, компетентность, не стандартные ситуации т.п. [27] (рис.5.5).
Рис.5.5 Пример взаимодействия агентов в разных средах
Основу агентно–ориентированного программирования составляют:
– формальный язык описания ментального состояния агентов;
– язык спецификации информационных, временных, мотивационных и функциональных действий агента в среде функционирования;
– язык интерпретации спецификаций агента;
– инструменты конвертирования любых программ в соответствующие агентные программы.
Агенты взаимодействуют между собой с помощью разных механизмов взаимодействия, а именно, координация, коммуникация, кооперация или коалиция.
Под координацией агентов понимаетсяпроцесс обеспечения последовательного функционирования при согласованности их поведения и без взаимных конфликтов. Координация агентов определяется:
– взаимозависимостью целей других агентов–членов коалиции, а также от возможного влияния агентов друг на друга;
– ограничениями, которые принимаются для группы агентов коалиции в рамках общего их функционирования;
– компетенцией – знаниями условий среды функционирования и степени их использования.
Главным средством коммуникации агентов является транспортный протокол ТСР/IP или протокол агентов ACL (Agent Communication Languages). Управления агентами (Agent Management) выполняется с помощью таких сервисов: передача сообщений между агентами, доступ агента к серверу и т.п.
Коммуникация агентов базируется на общем протоколе, языке HTML и декларативном или процедурном (Java, Telescript, ACL и т.п.) языке описания этого протокола.
Примером активного использования агентов является Интернет. В нем агенты обеспечивают доступ к информации, расположенной в информациооных ресурсах Интернет, анализ, фильтрацию и передачу клиенту результат запроса. В результате выполнения этих функций агенты создают некоторое поведение среды, которое в любой момент времени находится в некотором состоянии, а агент, выполняя заданные действия, изменяет его в целевое состояние и учитывает возможность возникновения нерегулярных состояний (тупиков, отсутствия ресурса и др.).
Одной из систем построения агентов, основанной на обмене сообщениями в АСL, является JATLite. Она включает Java–классы для создания новых агентов, ориентированных на вычисление функций в распределенной среде. Система Agent Builder предназначена для конструирования программных агентов, которые описываются в языке Java и могут взаимодействовать на основе языка KQML (Knowledge Guery and Manipulation Language). Построенные агенты выполняют функции: менеджера проекта и онтологий, визуализации, отладки и др. На реализацию механизмов взаимодействий агентов ориентирована и система JAFMAS. Ряд мультиагентных систем описано в [44].