Многоагентные системы и сообщества искусственного интеллекта традиционно содействовали разработке программ, ориентированных на агентов и логику.
Как правило, они связаны с академическими программами по искусственному интеллекту и интеллектуальным агентам, а также с исследовательскими проектами в области искусственного интеллекта. Тем не менее, растущий практический интерес к этим темам проявляется и в коммутируемости программной инженерии, которая фокусируется на надежных методологиях разработки программного обеспечения, в частности, демонстрируя формальные подходы, основанные на вычислительной логике.
Для решения различных инженерно-технических задач, таких как тестирование, верификация, символическое исполнение и обеспечение качества, были предложены различные варианты логического программирования, включая, например, программирование ограничений (CLP) или проверку соответствия (SAT).
С другой стороны, практика агентоориентированного логического программирования гораздо менее развита и недостаточно представлена с точки зрения программной инженерии, чем другие парадигмы программирования, например, объектно-ориентированные. Основной вклад данной работы состоит в том, чтобы представить сложные результаты нескольких небольших агентоориентированных программных проектов, основанных на логическом обосновании. Такие подходы традиционно находятся в центре внимания исследований искусственного интеллекта.
Вычислительная логика имеет довольно давнюю традицию в области классического искусственного интеллекта, которая пропагандирует использование логики для представления и рассуждения знаний. Это привело к развитию множества методов искусственного интеллекта и языков, которые позволяют овладеть когнитивными и способностями интеллектуальных агентов для решения проблем.
Логическое программирование
Логическое программирование - это парадигма программирования, состоящая из набора декларативных языков программирования, использующих логику в качестве основного вычислительного механизма интеллектуальных агентов. Прототипом языка этого класса является Prolog, в то время как современные расширения относятся к программированию с набором ответов и ограничительной логикой.
Логическая программа - это совокупность фактов и правил. В контексте интеллектуальных агентов логическую программу иногда называют базой знаний. Фактами являются атомные формулы, состоящие из предикатного названия и ряда аргументов.
- Аргументами могут быть константы, переменные или сложные термины.
- Факты могут быть использованы для описания ситуации, проблемного случая или базы убеждений агента.
- Правила работы с прологами являются логическими формулами, эквивалентными определенным положениям. Определенная оговорка - это дезориентация литералов таким образом, что один литерал является положительным. Правила могут быть использованы для захвата шаблонов рассуждений стратегий решения проблем интеллектуальных агентов.
Оперативная информация извлекается, анализируется и применяется с использованием запросов, адресованных базе знаний агента. Запрос может исходить извне от другого агента или человека, ищущего консультацию у интеллектуального агента или изнутри, от самого интеллектуального агента через механизмы самоанализа, в процессе решения проблемы.
CLP вообще и ECLiPSe-CLP в частности различают нормальные предикаты Prolog, используемые стандартным Prolog, и ограничения, специфичные для CLP. Такое разделение является обязательным, так как ограничения обрабатываются специальными алгоритмами удовлетворения ограничений, которые обеспечивают более эффективные методы решения проблем, чем стандартный поиск в Prolog's backtracking.
Агентоориентированное программирование с использованием AgentSpeak(L)/Jason
AgentSpeak(L) - это абстрактный агент-ориентированный язык программирования. Jason является реализацией на основе Java, а также расширением AgentSpeak(L).
AgentSpeak(L) следует парадигме практического рассуждения, т.е. рассуждения, направленного на действия, и обеспечивает реализацию архитектуры Belief-Desire-Intention (BDI) программных агентов. Согласно этой точке зрения, агент представляет собой программный модуль, который обеспечивает программный интерфейс с внешним миром и содержит три компонента:
- базу убеждений,
- библиотеку планов,
- механизм логического мышления.
Внешний мир агента состоит из внешней среды, а также, возможно, и из других агентов. Интерфейс агента содержит три элемента:
- интерфейс датчика,
- интерфейс управления,
- интерфейс связи.
Интеграция агентов с их внешней средой может быть осуществлена с помощью Java API. База убеждений определяет то, что агент "знает" или "верит" об окружающей среде в определенный момент времени.
Архитектура BDI не навязывает конкретную структуру базы убеждений, кроме как в виде общего контейнера убеждений. По умолчанию AgentSpeak(L) и Jason используют логическую модель убеждений, структурируя базу убеждений как логическую программу, состоящую из фактов и правил. Таким образом, агент может рассуждать о своих убеждениях, используя логическое программирование.
Библиотека планов определяет "ноу-хау" агента, структурированное как набор поведенческих элементов, называемых планами. План следует общей схеме правил действий в зависимости от состояния события и состоит из трех элементов:
- инициирующего события,
- контекста,
- органа.
События вызваны обновлением убеждений и целей. AgentSpeak(L) проводит различие между целями тестирования и целями достижения.
Цели тестирования тесно связаны с запросами логического программирования, адресованными базе убеждений оператора. Кроме того, контекст плана, соответствующий убеждениям оператора, также использует запросы логического программирования.
Механизм логического мышления реализует цикл обновления электронного акта, который включает в себя несколько действий: восприятие и коммуникацию, обработку событий и выбор плана, а также выбор и выполнение действий.