Язык программирования агента GOAL
![]() | в этой статье Использование внешних ссылок может не соответствовать политике и рекомендациям Википедии . ( Май 2018 г. ) |
GOAL — агентный язык программирования для программирования когнитивных агентов . Агенты ЦЕЛИ выбирают действия исходя из своих убеждений и целей. Язык предоставляет основные строительные блоки для проектирования и реализации когнитивных агентов посредством программных конструкций, которые позволяют и облегчают манипулирование убеждениями и целями агента, а также структурируют процесс принятия им решений . Язык предоставляет интуитивно понятную среду программирования, основанную на здравом смысле или практическом рассуждении .
Обзор
[ редактировать ]К основным особенностям GOAL относятся:
- Декларативные убеждения : агенты используют символический логический язык для представления имеющейся у них информации, а также своих убеждений или знаний об окружающей среде, в которой они действуют для достижения своих целей. Этот язык представления знаний не фиксирован GOAL, но, в принципе, может варьироваться в соответствии с потребностями программиста.
- Декларативные цели . Агенты могут иметь несколько целей, определяющих, чего агент хочет достичь в определенный момент в ближайшем или отдаленном будущем. Декларативные цели определяют состояние среды, которое хочет установить агент, но не определяют действия или процедуры, как достичь такого состояния.
- Стратегия слепого обязательства : агенты берут на себя обязательства по достижению своих целей и отказываются от них только тогда, когда они достигнуты. Эта стратегия обязательств, называемая слепого в литературе стратегией обязательства, является стратегией по умолчанию, используемой агентами GOAL. Предполагается, что у когнитивных агентов нет целей, которые, по их мнению, уже достигнуты, и это ограничение встроено в агентов GOAL, поскольку цель отбрасывается, когда она полностью достигнута.
- на основе правил Выбор действий . Агенты используют так называемые правила действий для выбора действий с учетом своих убеждений и целей. Такие правила могут недостаточно уточнять выбор действия в том смысле, что несколько действий могут быть выполнены в любое время с учетом правил действий агента. В этом случае агент GOAL выберет для выполнения произвольное разрешенное действие.
- Модули намерений, основанные на политике : агенты могут сосредоточить свое внимание и приложить все свои усилия на достижении подмножества своих целей, используя подмножество своих действий, используя только знания, необходимые для достижения этих целей. GOAL предоставляет модули для структурирования правил действий и знаний, предназначенных для достижения конкретных целей. Неофициально модули можно рассматривать как намерения, основанные на политике в смысле Майкла Брэтмана .
- Общение на уровне знаний . Агенты могут общаться друг с другом для обмена информацией и координации своих действий. Агенты GOAL общаются, используя язык представления знаний, который также используется для представления их убеждений и целей.
- Тестирование . Вы также можете писать тесты для GOAL.
Агентская программа GOAL
[ редактировать ]![]() |
![]() |
Пример блокирует мировую проблему
|
Другой пример: многоагентный контроллер лифта GOAL. [1]
|
Программа агента GOAL состоит из шести различных разделов, включая знания , убеждения , цели , правила действий , спецификации действий и правила восприятия соответственно. Знания, убеждения и цели представлены на языке представления знаний, таком как Пролог , программирование набора ответов , SQL (или журнал данных ) или язык определения предметной области планирования , например. Ниже мы иллюстрируем компоненты программы-агента GOAL с использованием Пролога.
Общая структура агентской программы GOAL выглядит следующим образом:
main: <agentname> { <sections> }
Код агента GOAL, используемый для иллюстрации структуры агента GOAL, представляет собой агент, который способен решать мировые проблемы Blocks . Убеждения агента представляют текущее состояние мира блоков, тогда как цели агента представляют целевое состояние. Перечисленный ниже раздел знаний содержит дополнительные концептуальные или предметные знания, связанные с доменом мира блоков.
knowledge{
block(a), block(b), block(c), block(d), block(e), block(f), block(g).
clear(table).
clear(X) :- block(X), not(on(Y,X)).
tower([X]) :- on(X,table).
tower([X,Y|T]) :- on(X,Y), tower([Y|T]).
}
Обратите внимание, что все блоки, перечисленные в разделе знаний, снова появляются в разделе убеждений , поскольку положение каждого блока необходимо указать, чтобы охарактеризовать полную конфигурацию блоков.
beliefs{ on(a,b), on(b,c), on(c,table), on(d,e), on(e,table), on(f,g), on(g,table). }
Все известные блоки также присутствуют в разделе целей , который определяет конфигурацию цели, которая повторно использует все блоки.
goals{ on(a,e), on(b,table), on(c,table), on(d,c), on(e,b), on(f,d), on(g,table). }
Агент GOAL может иметь несколько целей одновременно. Эти цели могут даже противоречить друг другу, поскольку каждая из целей может быть реализована в разное время. Например, у агента может быть цель посмотреть фильм в кинотеатре, а потом оказаться дома.
В ЦЕЛИ различают разные понятия цели. Примитивная цель — это утверждение, которое следует из базы целей в сочетании с концепциями, определенными в базе знаний. Например, tower([a,e,b])
это примитивная цель и мы пишем goal(tower([a,e,b])
чтобы обозначить это. Изначально, tower([a,e,b])
также является целью достижения , поскольку агент не верит, что a находится над e, e находится над b, а b находится на столе. Цели достижения — это примитивные цели, в существование которых агент не верит, и которые обозначаются a-goal(tower([a,e,b])
. Также полезно иметь возможность выразить, что цель достигнута . goal-a(tower([e,b])
используется, например, для выражения того, что башня [e,b]
было достигнуто с помощью блока e поверх блока b. Как цели достижения, так и понятие достигнутой цели можно определить:
a-goal(formula) ::= goal(formula), not(bel(formula)) goal-a(formula) ::= goal(formula), bel(formula)
В литературе по агентам имеется обширная литература по определению концепции достижения цели (см. ссылки).
GOAL — это язык программирования, основанный на правилах. Правила структурированы в модули. Основной модуль агента GOAL задает стратегию выбора действий посредством правил действий. Первое правило ниже гласит, что перемещение блока X поверх блока Y (или, возможно, стола) является вариантом, если такое перемещение является конструктивным, то есть перемещает блок на место. Второе правило гласит, что перемещение блока X на стол возможно, если блок X находится не на своем месте.
main module{ program{ if a-goal(tower([X,Y|T])), bel(tower([Y|T])) then move(X,Y). if a-goal(tower([X|T])) then move(X,table). } }
Действия, такие как действие перемещения, использованное выше, определяются с использованием STRIPS спецификации предусловий и постусловий в стиле . Предварительное условие указывает, когда действие может быть выполнено (включено). Постусловие определяет , каковы последствия выполнения действия.
actionspec{ move(X,Y) { pre{ clear(X), clear(Y), on(X,Z), not(X=Y) } post{ not(on(X,Z)), on(X,Y) } }
Наконец, модуль событий состоит из правил обработки событий, таких как сообщения, полученные из окружающей среды. Приведенное ниже правило определяет, что для всех полученных восприятий, указывающих на то, что блок X находится на блоке Y, и считается, что X находится на вершине Z, не равного Y, новый факт on(X,Y) должен быть добавлен к базе убеждений. и атом на (X,Z) необходимо удалить.
event module{ program{ forall bel( percept(on(X,Y)), on(X,Z), not(Y=Z) ) do insert(on(X,Y), not(on(X,Z))). } }
Сопутствующие языки программирования агентов
[ редактировать ]Язык программирования агентов GOAL связан с другими языками программирования агентов, такими как AGENT0 , AgentSpeak , 2APL , Golog , JACK Intelligent Agents , Jadex и, например, Jason , но отличается от них . Отличительной особенностью GOAL является концепция декларативной цели. Цели агента GOAL описывают, чего агент хочет достичь, а не как этого достичь. В отличие от других языков, агенты GOAL преданы своим целям и удаляют цель только тогда, когда она полностью достигнута. GOAL предоставляет среду программирования с упором на декларативное программирование и возможности рассуждения, необходимые когнитивным агентам.
См. также
[ редактировать ]- Язык общения агента
- Автономный агент
- Когнитивная архитектура
- Декларативное программирование
- Практическое рассуждение
- Рациональный агент
Ссылки
[ редактировать ]- ^ Симулятор лифта изначально написан Крисом Дэйли и Нилом МакКелларом и доступен в исходной форме по адресу http://sourceforge.net/projects/elevatorsim .
- Примечания
Литература о понятии цели:
- Ларс Браубах, Александр Покар, Дэниел Молдт и Винфрид Ламерсдорф (2004). Представление целей для агентных систем BDI, в: Второй международный семинар по программированию мультиагентных систем.
- Филип Р. Коэн и Гектор Дж. Левеск (1990). Намерение — это выбор, основанный на обязательствах. Искусственный интеллект 42, 213–261.
- Андреас Херциг и Д. Лонгин (2004). Пересмотр намерения C&L. В: Учеб. 9-го Межд. Конференция «Принципы представления и рассуждения знаний» (KR'04), 527–535.
- Коэн В. Хиндрикс, Франк С. де Бур, Вибе ван дер Хук, Джон-Жюль Ч. Мейер (2000). Агентное программирование с декларативными целями. В: Учеб. 7-го Межд. Семинар по интеллектуальным агентам VII (ATAL'00), стр. 228–243.
- Ананд С. Рао и Майкл П. Джорджефф (1993). Намерения и рациональные обязательства. Тех. Представитель 8, Австралийский институт искусственного интеллекта .
- Бирна ван Римсдейк, Мехди Дастани, Джон-Жюль Ч. Мейер (2009). Цели в конфликте: семантические основы целей в агентном программировании. Международный журнал автономных агентов и мультиагентных систем.