Агентное программирование

Понятие интеллектуального и программного агента появилось более 20 лет назад, их роль в программной инженерии все время возрастает [25-–29]. Так, в [30] Джекобсон отметил перспективу для использования агентов в качестве разработчиков архитектуры системы из вариантов использования, менеджеров проекта и др. Использование агентов в этих ролях в ближайшем будущем будет способствовать повышению производительности, качества и ускорению разработки ПС.

Основным теоретическим базисом данного программирования являются темпоральная, модальная и мультимодельная логики, дедуктивные методы доказательства правильности свойств агентов и др. Рассмотрим сущность основных прикладных аспектов агентной тематики.

С точки зрения программной инженерии, агент это самодостаточная программа, способная управлять своими действиями в информационной среде функционирования для получения результатов выполнения поставленной задачи и изменения текущего состояния среды.

Агент может обладать такими свойствами:

– автономность – это. способность действовать без внешнего управляющего воздействия;

– реактивность – это способность реагировать на изменения данных и среды, и воспринимать их;

– активность – это способность ставить цели и выполнять заданные действия для достижения этой цели;

– социальность – это способность к взаимодействию с другими агентами (или людьми).

В задачи программного агента входят:

– самостоятельная работа и контроль своих действий;

– взаимодействие с другими агентами;

– изменение поведения в зависимости от состояния внешней среды;

– выдача достоверной информации о выполнении заданной функции и т.п.

С интеллектуальным агентом связываются знания типа: убеждение, намерение, обязательства и т.п. Эти понятия входят в концептуальную модель и связываются между собой операционными планами реализации целей каждого агента. Для достижения целей интеллектуальные агенты взаимодействуют друг с другом, устанавливают связь между собой через сообщения или запросы и выполняют заданные действия или операции в соответствии с имеющимися знаниями.

Агенты могут быть локальными и распределенными. Процессы локальных агентов протекают в клиентских серверах сети, выполняют заданные функции и не влияют на общее состояние среды функционирования. Распределенные агенты, расположенные в разных узлах сети, выполняют автономно (параллельно, синхронно, асинхронно) предназначенные им функции и могут влиять на общее состояние среды. В обоих случаях характер взаимодействия между агентами зависит от таких факторов: совместимость целей, компетентность, не стандартные ситуации т.п. [27] (рис.5.5).

Агентное программирование - student2.ru

Рис.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].

Наши рекомендации