Язык программирования агента GOAL - GOAL agent programming language

GOAL - это язык программирования агентов для программирования когнитивных агентов . ЦЕЛЕВЫЕ агенты выбирают действия, исходя из своих убеждений и целей. Язык предоставляет базовые строительные блоки для разработки и реализации когнитивных агентов с помощью программных конструкций, которые позволяют и облегчают манипулирование убеждениями и целями агента и структурируют его принятие решений . Язык предоставляет интуитивно понятную структуру программирования, основанную на здравом смысле или практических соображениях .

Обзор

Основные особенности GOAL включают в себя:

  • Декларативные убеждения : агенты используют символический, логический язык для представления имеющейся у них информации, а также своих убеждений или знаний об окружающей среде, в которой они действуют для достижения своих целей. Этот язык представления знаний не фиксируется Целью, но, в принципе, может быть изменен в соответствии с потребностями программиста.
  • Декларативные цели : агенты могут иметь несколько целей, которые определяют, чего агент хочет достичь в какой-то момент в ближайшем или отдаленном будущем. Декларативные цели определяют состояние среды, которое агент хочет установить, они не определяют действия или процедуры, как достичь таких состояний.
  • Стратегия слепой приверженности : агенты привержены своим целям и отбрасывают цели только после того, как они были достигнуты. Эта стратегия приверженности, называемая в литературе стратегией слепой приверженности, является стратегией по умолчанию , используемой агентами GOAL. Предполагается, что у когнитивных агентов нет целей, которые, по их мнению, уже достигнуты, ограничение, которое было встроено в агентов GOAL, отбрасывая цель, когда она была полностью достигнута.
  • Правило на основе выбора действия : Агенты используют так называемые правила действий для выбора действий, учитывая их убеждения и цели. Такие правила могут недооценивать выбор действия в том смысле, что несколько действий могут быть выполнены в любое время с учетом правил действий агента. В этом случае агент GOAL выберет для выполнения произвольное разрешенное действие.
  • Модули намерений, основанные на политике : агенты могут сосредоточить свое внимание и направить все свои усилия на достижение подмножества своих целей, используя подмножество своих действий, используя только знания, относящиеся к достижению этих целей. GOAL предоставляет модули для структурирования правил действий и знаний, посвященных достижению конкретных целей. Неформально модули можно рассматривать как основанные на политике намерения в смысле Майкла Братмана .
  • Коммуникация на уровне знаний : агенты могут общаться друг с другом для обмена информацией и координации своих действий. Агенты ЦЕЛЕЙ общаются, используя язык представления знаний, который также используется для представления их убеждений и целей.
  • Тестирование : вы также можете написать тесты для GOAL.

Агентская программа GOAL

граница = 0 Elevatorworld.png
Пример блокирует мировую проблему
Другой пример: многоагентный контроллер лифта 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). Цели в конфликте: семантические основы целей в агентном программировании. Международный журнал автономных агентов и многоагентных систем.

Внешние ссылки