3АПЛ
Язык программирования абстрактных агентов или язык программирования искусственных автономных агентов или 3APL (произносится как тройной APL) — это экспериментальный инструмент и язык программирования для разработки, реализации и тестирования нескольких когнитивных агентов с использованием подхода «Убеждение-Желание-Намерение » (BDI).
Обзор
[ редактировать ]3APL был разработан и поддерживается командой факультета Утрехтского информатики университета в Нидерландах . Он облегчает спецификацию поведения когнитивного агента с использованием действий, убеждений, целей, планов и правил. Он был предметом по крайней мере 15 статей и конференций и по крайней мере 4 тезисов .
Платформа
[ редактировать ]3APL Платформа имеет визуальный интерфейс для мониторинга и отладки запущенных на ней агентов, а также синтаксиса раскраски редактор для редактирования исходного кода . Он был выпущен как Java на основе программное обеспечение , которое поставляется с некоторыми спецификациями интерфейсов Java , которые можно использовать для разработки подключаемых модулей и библиотек на основе Java . Их можно использовать, например, для обеспечения видимого представления виртуальной среды. Платформа 3APL также может подключаться в роли клиента или сервера к другим платформам 3APL по сети , чтобы обеспечить связь между агентами 3APL на каждой платформе. облегченная версия 3APL для мобильных приложений , получившая название 3APL-M « Toymaker Также выпущена ».
Язык
[ редактировать ]Язык 3APL относительно прост. Синтаксис содержит базовые логические операторы AND , OR и NOT IF-THEN-ELSE , с условными операторами и структуры цикла управления WHILE-DO . Хотя временные переменные не могут быть созданы, кроме как путем вызова подключаемых методов или условий убеждения/цели, итеративные циклы счетчиков могут быть созданы с использованием комбинации циклов WHILE-DO, убеждений и возможностей.
Агент 3APL содержит формальные определения убеждений, способностей, целей и планов агента. В частности, необходимо определить шесть скелетных блоков.
PROGRAM "agent" BELIEFBASE {} CAPABILITIES {} GOALBASE {} PLANBASE {} PG-RULES {} PR-RULES {}
Убеждения, определенные с использованием синтаксиса Пролога , используются для запоминания информации и выполнения логических вычислений . Убеждения можно читать друг по другу, редактировать по способностям и читать по условным утверждениям в планах. Исходные убеждения агента могут быть определены в его базе убеждений.
BELIEFBASE { status(standby). at(0,0). location(r1,2,4). location(r5,6,1). dirty(r1). dirty(r5). }
Возможности определяют предпосылки и последствия действий в формате, подобном STRIPS , считывая ранее существовавшие убеждения, удаляя некоторые с помощью оператора NOT и добавляя новые путем их утверждения.
CAPABILITIES { {status(S1)} SetStatus(S2) {NOT status(S1), status(S2)}, {at(X1,Y1)} NowAt(X2,Y2) {NOT at(X1,Y1), at(X2,Y2)}, {dirty(R)} Clean(R) {NOT dirty(R)} }
Цели также определяются с использованием синтаксиса Пролога, и новые цели могут быть приняты во время выполнения. Первоначальные цели определяются в базе целей.
GOALBASE { cleanRoom(r1). cleanRoom(r5). }
В идеале каждая цель имеет связанные с ней правила планирования целей, свои правила PG, которые служат абстрактными планами и вызываются из целей, пока соблюдаются их охранные условия.
PG-RULES { cleanRoom(R) <- dirty(R) | { SetStatus(cleaning(R)); goTo(R); clean(R); SetStatus(standby); } }
Правила PG, в свою очередь, могут вызывать правила пересмотра плана или правила PR, которые служат подпрограммами и могут вызываться для выполнения низкоуровневых и/или повторяющихся задач, пока соблюдаются их защитные условия. Первоначальные планы определяются в базе планов, выполняемых в начале цикла обсуждения .
PLANBASE { SetStatus(started); } PR-RULES { goTo(R) <- location(R,X,Y) AND NOT at(X,Y) | { NowAt(X,Y); } clean(R) <- location(R,X,Y) AND at(X,Y) | { Clean(R); } }
Внешние методы могут быть вызваны для доступа к средам, смоделированным в плагинах. Однако параметры не могут быть переданы методам напрямую, а это означает, что известная среда должна быть соответствующим образом смоделирована с учетом убеждений агента. агента Вызов возвращает список Пролога, который затем может быть обработан собственной логикой предикатов .
Java("JanitorWorld", moveNorth(), M);
Агенты также могут общаться друг с другом с помощью команд отправки . Когда часть информации X отправляется с перформативом P от агента A к агенту B, действие отправки записывается в базе убеждений A как отправленное (B,P,X) и регистрируется в базе убеждений B как полученное (A,P ,Х) .
Send(Partner,inform,dirty(R));
Скачать
[ редактировать ]3APL доступен для загрузки на веб-сайте 3APL Университета Утрехта, в комплекте с образцами одиночных и коммуникативных агентов, а также дискретным подключаемым модулем мультиагентной среды переднего плана под названием BlockWorld .