Язык программирования агента GOAL - GOAL agent programming language
GOAL - это язык программирования агентов для программирования когнитивных агентов . ЦЕЛЕВЫЕ агенты выбирают действия, исходя из своих убеждений и целей. Язык предоставляет базовые строительные блоки для разработки и реализации когнитивных агентов с помощью программных конструкций, которые позволяют и облегчают манипулирование убеждениями и целями агента и структурируют его принятие решений . Язык предоставляет интуитивно понятную структуру программирования, основанную на здравом смысле или практических соображениях .
Обзор
Основные особенности GOAL включают в себя:
- Декларативные убеждения : агенты используют символический, логический язык для представления имеющейся у них информации, а также своих убеждений или знаний об окружающей среде, в которой они действуют для достижения своих целей. Этот язык представления знаний не фиксируется Целью, но, в принципе, может быть изменен в соответствии с потребностями программиста.
- Декларативные цели : агенты могут иметь несколько целей, которые определяют, чего агент хочет достичь в какой-то момент в ближайшем или отдаленном будущем. Декларативные цели определяют состояние среды, которое агент хочет установить, они не определяют действия или процедуры, как достичь таких состояний.
- Стратегия слепой приверженности : агенты привержены своим целям и отбрасывают цели только после того, как они были достигнуты. Эта стратегия приверженности, называемая в литературе стратегией слепой приверженности, является стратегией по умолчанию , используемой агентами GOAL. Предполагается, что у когнитивных агентов нет целей, которые, по их мнению, уже достигнуты, ограничение, которое было встроено в агентов GOAL, отбрасывая цель, когда она была полностью достигнута.
- Правило на основе выбора действия : Агенты используют так называемые правила действий для выбора действий, учитывая их убеждения и цели. Такие правила могут недооценивать выбор действия в том смысле, что несколько действий могут быть выполнены в любое время с учетом правил действий агента. В этом случае агент GOAL выберет для выполнения произвольное разрешенное действие.
- Модули намерений, основанные на политике : агенты могут сосредоточить свое внимание и направить все свои усилия на достижение подмножества своих целей, используя подмножество своих действий, используя только знания, относящиеся к достижению этих целей. GOAL предоставляет модули для структурирования правил действий и знаний, посвященных достижению конкретных целей. Неформально модули можно рассматривать как основанные на политике намерения в смысле Майкла Братмана .
- Коммуникация на уровне знаний : агенты могут общаться друг с другом для обмена информацией и координации своих действий. Агенты ЦЕЛЕЙ общаются, используя язык представления знаний, который также используется для представления их убеждений и целей.
- Тестирование : вы также можете написать тесты для GOAL.
Агентская программа GOAL
|
|
|
|
Пример блокирует мировую проблему
|
|
Программа ЗАДАЧИ агента состоит из шести различных секций, в том числе знаний , убеждений , целей , правил действий , спецификаций действий и Percept правил соответственно. Знания, убеждения и цели представлены на языке представления знаний, таком как, например, Пролог , программирование наборов ответов , SQL (или журнал данных ) или язык определения домена планирования . Ниже мы проиллюстрируем компоненты программы агента GOAL с использованием Prolog.
Общая структура агентской программы GOAL выглядит так:
main: <agentname> {
<sections>
}
Код агента GOAL, используемый для иллюстрации структуры агента GOAL, - это агент, который может решать мировые проблемы блоков . Убеждения агента представляют текущее состояние мира блоков, тогда как цели агента представляют состояние цели. Раздел знаний, указанный ниже, содержит дополнительные концептуальные или предметные знания, связанные с мировым доменом блоков.
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 - это язык программирования, основанный на правилах. Правила разбиты на модули. Основной модуль из ГОЛ агента определяет стратегию выбора действий с помощью правил действий. Первое правило ниже гласит, что перемещение блока 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, новый факт на (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 , Голог , JACK интеллектуальных агенты , Jadex , и, к примеру, Джейсон . Отличительной чертой GOAL является концепция декларативной цели. Цели ЦЕЛЕВОГО агента описывают то, чего агент хочет достичь, а не то, как этого достичь. В отличие от других языков, агенты GOAL привержены своим целям и удаляют цель только тогда, когда она полностью достигнута. GOAL предоставляет среду программирования с упором на декларативное программирование и возможности рассуждений , необходимые когнитивным агентам.
Смотрите также
- Язык общения агента
- Автономный агент
- Когнитивная архитектура
- Декларативное программирование
- Практическое рассуждение
- Рациональный агент
Рекомендации
- Заметки
Литература о понятии цели:
- Ларс Браубах, Александр Покар, Даниэль Молдт и Винфрид Ламерсдорф (2004 г.). Представление целей для агентных систем BDI, в: Второй международный семинар по программированию многоагентных систем.
- Филип Р. Коэн и Гектор Дж. Левеск (1990). Намерение - это выбор с обязательством. Искусственный интеллект 42, 213–261.
- Андреас Херциг и Д. Лонгин (2004). Снова о намерении C & l. В: Proc. 9-го Междунар. Конференция «Принципы представления знаний и рассуждений» (KR'04), 527–535.
- Коен В. Хиндрикс, Франк С. де Бур, Вибе ван дер Хук, Джон-Жюль Ч. Мейер (2000). Агентное программирование с декларативными целями. В: Proc. 7-го Междунар. Практикум по интеллектуальным агентам VII (ATAL'00), стр. 228–243.
- Ананд С. Рао и Майкл П. Джорджфф (1993). Намерения и рациональные обязательства. Tech. Представитель 8, Австралийский институт искусственного интеллекта .
- Бирна ван Римсдейк, Мехди Дастани, Джон-Жюль Ч. Мейер (2009). Цели в конфликте: семантические основы целей в агентном программировании. Международный журнал автономных агентов и многоагентных систем.