4.6. Агентное программирование
Понятие интеллектуального и программного агентов появи-
лось более 20 лет назад, их роль в программной инженерии все вре-
мя возрастает. Так, Джекобсон отметил перспективу использования
агентов в качестве менеджеров проектов, разработчиков архитекту-
ры с помощью диаграмм use case и др.
Основной теоретический базис данного программирования –
темпоральная, модальная и мультимодельная логики, дедуктивные
методы доказательства правильности свойств агентов и др.
С точки зрения программной инженерии агент – это самодо-
статочная программа, способная управлять своими действиями в
информационной среде функционирования для получения результа-
тов выполнения поставленной задачи и изменения текущего состоя-
ния среды. Агент обладает следующими свойствами:
– автономность – это способность действовать без внешнего
управляющего воздействия;
– реактивность – это способность реагировать на изменения
данных и среды и воспринимать их;
– активность – это способность ставить цели и выполнять за-
данные действия для достижения этой цели;
– способность к взаимодействию с другими агентами (или
людьми).
115
Основными задачами программного агента являются:
– самостоятельная работа и контроль своих действий;
– взаимодействие с другими агентами;
– изменение поведения в зависимости от состояния внешней
среды;
– выдача достоверной информации о выполнении заданной
функции и т.п.
С интеллектуальным агентом связаны знания типа убеждение,
намерение, обязательства и т.п. Эти понятия входят в концептуаль-
ную модель и связываются между собой операционными планами
реализации целей каждого агента. Для достижения целей интеллек-
туальные агенты взаимодействуют друг с другом, устанавливают
связь между собой через сообщения или запросы и выполняют за-
данные действия или операции в соответствии с имеющимися зна-
ниями.
Агенты могут быть локальными и распределенными (рис. 4.8).
Процессы локальных агентов протекают в клиентских серверах се-
ти, выполняют заданные функции и влияют на общее состояние
среды функционирования. Распределенные агенты располагаются
в разных узлах сети, выполняют автономно (параллельно, синхрон-
но, асинхронно) предназначенные им функции и могут влиять на
общее состояние распределенной среды.
Рис. 4.8. Пример взаимодействия агентов в разных средах
Характер взаимодействия между агентами зависит от совме-
стимости целей, компетентности и т.п.
Основу агентно-ориентированного программирования состав-
ляют:
– формальный язык описания ментального состояния агентов;
– язык спецификации информационных, временных, мотива-
ционных и функциональных действий агента в среде функциониро-
вания;
116
– язык интерпретации спецификаций агента;
– инструменты конвертирования любых программ в соответ-
ствующие агентные программы.
Агенты взаимодействуют между собой с помощью разных ме-
ханизмов, а именно координации, коммуникации, кооперации или
коалиции.
Под
координацией агентов
понимается процесс обеспечения
последовательного функционирования при согласованности их по-
ведения и без взаимных конфликтов. Координация агентов опреде-
ляется:
– взаимозависимостью целей других агентов-членов коалиции,
а также от возможного влияния агентов друг на друга;
– ограничениями, которые принимаются для группы агентов
коалиции в рамках общего их функционирования;
– компетенцией – знаниями условий среды функционирования
и степени их использования.
Главное средство коммуникации агентов – транспортный про-
токол ТСР/IP или протокол агентов ACL (Agent Communication
Languages). Управление агентами (Agent Management) выполняется
с помощью сервисов: передача сообщений между агентами, доступ
агента к серверу и т.п.
Коммуникация
агентов базируется на общем
протоколе, языке HTML и декларативном или процедурном (Java,
Telescript, ACL и т.п.) языке описания этого протокола.
Примером активной и скоординированной деятельности аген-
тов по поиску необходимой информации является среда Интернет.
В нем агенты обеспечивают доступ к информационным ресурсам, а
также выполняют ее анализ, интеграцию, фильтрацию и передачу
результата запроса пользователю.
Каждый агент выполняет определенную функцию, передает
друг другу задание на последующее действие по доступу к инфор-
мационному ресурсу, извлечению необходимой информации и пе-
редачи ее для обработки следующим агентам. При этом могут воз-
никать нерегулярные состояния (тупики, отсутствие ресурса и др.).
Одной из систем построения агентов, основанной на обмене
сообщениями в АСL, является JATLite, которая с помощью Java-
классов создает новых агентов, вычисляющих определенные функ-
ции в распределенной среде. Система Agent Builder предназначена
для конструирования программных агентов, которые описываются в
языке Java и могут взаимодействовать на языке
KQML
(Knowledge
Guery and Manipulation Language).
Построенные агенты выполняют функции менеджера проекта
и онтологий, визуализации, отладки и др. Реализацию механизмов
117
взаимодействий агентов обеспечивают система JAFMAS, ряд дру-
гих мультиагентных систем.
Современные направления в области проверки правильности
программ – формальные спецификации и методы доказательства их
правильности. Для доказательства того, что
спецификация програм-
мы
задает правильное решение некоторой задачи, для которой она
разработана, привлекается математический аппарат.
В формальных методах нет рутинного написания спецификации
на ЯП, а есть анализ текста и описание поведения программы в стиле,
близком математической нотации, путем рассуждений и доказа-
тельств, принятых в математике. Формальные методы в программиро-
вании появились одновременно с самим программированием, на ко-
торое повлияли работы по теории алгоритмов А. А. Маркова,
А. А. Ляпунова, схемы Ю. И. Янова, формальные нотации языка опи-
сания взаимодействующих процессов К. А. Хоара и др.
В 70-х гг. прошлого столетия появились формальные специфи-
кации, которые близки ЯП и предоставляют средства, облегчающие
проводить рассуждение о свойствах формальных тестов и сближа-
ющие их с математической нотацией. Несмотря на это, исследования
формальных методов носили в основном академический, теоретиче-
ский характер, поскольку извлечь из них практическую пользу в
программировании не удавалось в силу огромных затрат на фор-
мальную спецификацию программ и разработку дополнительных ак-
сиом, утверждений и условий, называемых предварительными усло-
виями (предусловиями) и постусловиями, определяющими заключи-
тельные правила получения правильного результата.
Под спецификацией понимается формальное описание функ-
ций и данных программы, с которыми эти функции оперируют. Раз-
личают видимые данные, т.е. входные и выходные параметры, а
также скрытые данные, которые не привязаны к реализации и опре-
деляют интерфейс с другими функциями.
Предусловия – это ограничения на совокупность входных па-
раметров; постусловия – ограничения на выходные параметры.
Предусловие и постусловие задаются предикатами, т.е. функциями,
результатом которых будет булева величина (true/false). Предусло-
вие истинно тогда, когда входные параметры входят в область до-
пустимых значений данной функции. Постусловие истинно тогда,
когда совокупность значений удовлетворяет требованиям, задаю-
щим формальное определение критерия правильности получения
результата.
Do'stlaringiz bilan baham: |