Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_по_jason_(итог).doc
Скачиваний:
79
Добавлен:
21.03.2016
Размер:
1.79 Mб
Скачать

2) Функция «.Plan_label»

Получает код плана данного агента по его метке. Имеет 2 параметра. Первый – переменная, в которую будет считан код плана, второй – метка плана в виде атома.

Примеры использования

a) .plan_label(P,p1): в переменную P будет считан план с меткой «p1», включая саму метку.

3) Функция «.Relevant_plans»

Получает список планов, относящихся к обработке заданного события. Используется, например, для обработки запроса «askHow». Имеет 2 параметра. Первый – имя отслеживаемого события, второй – имя переменной, в которую будет помещен список с кодами подходящих планов.

Примеры использования

а).relevant_plans("+!go(X,Y)",L): в переменную L будет помещен список с кодами планов для обработки события «+!go(X,Y)».

4) Функция «.Remove_plan»

Удаляет план или несколько планов из библиотеки планов агента. Обладает 2мя параметрами. Первый – метка или список меток планов, которые необходимо удалить. Второй – источник планов. Если второй параметр опущен, то предполагается, что источник удаляемых планов сам агент. Команда полезна для удаления планов, полученных в результате запроса «tellHow».

Примеры использования

a) .remove_plan(l1): удаляет план, обладающий меткой «l1» с аннотацией «[source(self)]».

b) .remove_plan(l1,bob): удаляет план, обладающий меткой «l1» с аннотацией «[source(bob)]».

c) .remove_plan([l1,l2,l3]): удаляет 3 плана «l1[source(self)]», «l2[source(self)]», и «l3[source(self)]».

d) .remove_plan([l1,l2,l3],bob): удаляет 3 плана, полученных от агента bob

«l1[source(bob)]», «l2[source(bob)]», и «l3[source(bob)]».

BDI-Функции

1) Функция «.Current_intention»

Возвращает описание текущих намерений агента. Полезно для случаев, когда агент должен проконтролировать собственные намерения.

Описание намерений имеет следующую форму.

intention(<id>,<стек намерений>), а каждое из намерений описывается так:

im(<метка плана>,<список операций плана>).

Например:

intention(1,

[

im("l__6",[".current_intention(I)"]),

im("l__5",[".fail"]),

im("l__4",["!g5(X)",".print(endg4)"]),

...

]).

Пример использования

a) .current_intention(X): в переменную Х будет помещено описание текущих намерений в соответствии в указанной выше структурой.

2) Функция «.Desire»

Проверяет, является ли аргумент желанием агента. Аргумент является желанием, если он отслеживается как событие по достижению цели «+!<desire >».

Пример использования

a) .desire(go(1,3)): возвращает true, если отслеживается событие «+!go(1,3)».

3) Функция «.drop_all_desires»

Сбрасывает все желание агента, включая те, которые перешли в стадию намерений (т.е. приняты на реализацию). Иначе говоря, очищается список зарегистрированных, но еще не обработанных событий, а также очищаются все стеки намерений.

Пример использования

a) .drop_all_desires.

4) Функция «.drop_all_events»

Обнуляет только все желания агента, не затрагивая намерения, т.е. необработанные события сбрасываются, а операции, принятые на выполнение, продолжают реализовываться.

Пример использования

а) .drop_all_events

5) Функция «.drop_all_intentions»

Обнуляет намерения агента, включая отложенные по причине ожидания, а также внутренние события, т.к. они были порождены обрабатываемыми намерениями.

Пример использования

a) .drop_all_intentions.

6) Функция «.drop_desire»

Сбрасывает желание агента, заданное аргументом, даже если оно уже перешло в стадию намерений. Аргумент представляет собой имя события.

Пример использования

a) .drop_desire(go(X,3)): удаляет все желания, подходящие под шаблон, например, «+!go(1,3)» вне зависимости от их источника, а также удаляет соответствующие стеки намерений.

7) Функция «.drop_event»

Удаляет заданное желание агента только из базы событий.

Пример использования

a) .drop_event(go(X,Y)): удаляет все желания, подходящие под шаблон, например, «+!go(1,3)» вне зависимости от их источника, не затрагивая тех, что перешли в стадию намерений.

8) Функция «.drop_intention»

Удаляет заданное намерение из базы намерений (включая отложенные намерения).

Пример использования

a) .drop_intention(go(1,3)).

9) Функция «.fail_goal»

Прерывает достижение цели, заданной цели аргументом, как если бы соответствующий план был прерван по причине ошибки. В результате генерируется событие отказа от цели.

Пример использования

a) .fail_goal(go(X,3)): прерывает достижение всех целей, подходящих под шаблон, например, «!go(1,3)». Генерируется событие отказа от цели, например, «-!get_gold(1,3)», которое в дальнейшем может быть обработано специальным планом.

10) Функция «.intend»

Проверяет, является ли аргумент намерением. Аргумент является намерением, если план с меткой, определяемой этим аргументом, находится на исполнении во множестве намерений.

Пример использования

a) .intend(go(1,3)): возвращает true, если план с отслеживаемым событием «+!go(1,3)» находится в множестве намерений агента.

11) Функция «.succeed_goal»

Функция обратная функции «.fail_goal». Прекращает намерения по достижению цели, заданной аргументом, как если бы эта цель была уже достигнута.

Пример использования

a) .succeed_goal(go(X,3)): прерывает достижение целей «!go(Х,3)», которые начинают считаться достигнутыми.

Функции определение типа термов

1) Функция «.atom»– проверяет, является ли аргумент атомом (высказыванием без отрицания), например «c». Числа, строки и свободные переменные не являются атомами.

Примеры использования

a) .atom(b(10)): возвращает false.

b) .atom(b): возвращает true.

c) .atom(~b): возвращает false.

d) .atom(10): возвращает false.

e) .atom("home page"): возвращает false.

f) .atom(X): возвращает true только если X конкретизировано атомом.

g) .atom(a(X)): возвращает false.

h) .atom(a[X]): возвращает false.

i) .atom([a,b,c]): возвращает false.

j) .atom([a,b,c(X)]): возвращает false.