ДЕЙСТВИЯ, СИТУАЦИИ И СОБЫТИЯ

Формирование рассуждений о результатах действий является центральным звеном в функционировании агента, основанного на знаниях. В главе 7 приведены примеры пропозициональных высказываний, описывающих, как действия влияют на мир вампуса, например, в уравнении 7.3 на с. 325 указано, как изменяется местонахождение агента в результате движения вперед. Одним из недостатков пропозициональной логики является необходимость иметь отдельную копию описания действия для каждого момента времени, в который может быть выполнено это действие. В данном разделе описан метод представления с использованием логики первого порядка, позволяющий избежать возникновения этой проблемы.
Онтология ситуационного исчисления
Один из очевидных способов предотвращения необходимости создавать многочисленные копии аксиом состоит в том, чтобы применить квантификацию по времени и использовать примерно такие высказывания: " Vt (для всех t) то-то и то-то является полученным в момент времени t+1 результатом выполнения такого-то действия в момент времени t". Но в этом разделе вместо применения таких явных обозначений времени, как t+1, мы сосредоточимся на описании ситуаций, которые обозначают состояния, возникающие в результате выполнения действий. Такой подход, называемый ситуационным исчислением, предусматривает использование описанной ниже онтологии.
• Как и в главе 8, действия представляют собой логические термы, такие как Forward, и Turn (Right). В данном разделе предполагается, что среда содержит только одного агента. (Если количество агентов больше одного, может быть вставлен дополнительный параметр для указания на то, какой агент выполняет это действие.)
• Ситуации представляют собой логические термы, состоящие из начальной ситуации (обычно называемой s0) и всех ситуаций, которые создаются в результате применения некоторого действия в некоторой ситуации. Функция Resul t (a, s) (иногда называемая Do) обозначает ситуацию, возникающую в результате выполнения действия а в ситуации s. Эта идея иллюстрируется на рис. 10.2.

• Флюентными называются функции и предикаты, которые изменяются от одной ситуации к другой, такие как местонахождение агента или наличие живого вампуса. Этот термин происходит от английского слова fluent, о котором в словаре сказано, что оно обозначает нечто текучее, как жидкость. В данном контексте термином "флюентный" обозначается все, что перетекает, или изменяется от одной ситуации к другой. В соответствии с общепринятым соглашением ситуация — это всегда последний параметр флюентного высказывания. Например, во флюентном высказывании —iHolding(Glr S0) сообщается о том, что агент не владеет золотом G1 в начальной ситуации 50, а в высказывании Аде (Wumpus, S0) обозначается возраст вампуса в ситуации S0.
• Допускается также использовать вневременные, или неизменные предикаты и функции. В качестве соответствующих примеров можно указать предикат GoldiGx) и функцию LeftLegOf (Wumpus) .
Кроме единственных действий, имеет также смысл рассуждать о последовательностях действий. Мы можем определять результаты последовательностей действий в терминах результатов отдельных действий. Прежде всего необходимо отметить, что выполнение пустой последовательности оставляет ситуацию неизменной:
Result([], s) = s
Выполнение непустой последовательности равносильно выполнению первого действия, а затем выполнению остальной ее части в результирующей ситуации:
Result([а\seq] , s) = Result(seq, Result(a, s))
Агент, действующий на основе ситуационного исчисления, должен быть способен определять итог некоторой конкретной последовательности действий посредством логического вывода; в этом состоит задача проектирования (нахождения проекции действий на будущее). При наличии подходящего конструктивного алгоритма логического вывода он должен также обладать способностью находить последовательность действий, позволяющую достичь желаемого эффекта; в этом состоит задача планирования.
Мы будем использовать пример из модифицированной версии мира вампуса, в которой можно не задумываться об ориентации агента и в которой агент может переходить с помощью действия Go из одного места в соседнее. Предположим, что агент находится в квадрате [1,1], а золото — в квадрате [1,2]. Задача состоит в том, чтобы перенести золото в квадрат [1,1]. Флюентными предикатами являются At{o,x, s) и Holdingio, s). В таком случае первоначальная база знаний может включать следующее описание:
At (Agent, [1,1] , So) л At (Glf [1, 2] , S0)
Но этого описания совершенно недостаточно, поскольку в нем не сказано о том, какие предикаты не являются истинными в состоянии S0. (Дальнейшее обсуждение этой темы продолжается на с. 484.) Полное описание состоит в следующем:
At (о, х, S0) <=> [(о = Agent л х = [1,1]) v (о = Gi л х = [1,2])] —iHolding(o, S0)
Необходимо также указать, что G± — золото и что квадраты [1,1] и [1,2] являются соседними:
Gold(G1) л Adjacent([1,1], [1,2]) л Adjacent([1,2], [1,1])
Неплохо было бы иметь возможность доказать, что агент достигнет цели, перейдя в квадрат [1,2], схватив золото и возвратившись в квадрат [1,1], следующим образом:
At(Glt [1,1] , Result ( [Go( [1, 1] , [1, 2] ) , Grab(Gi) , Go( [1, 2 ] , [1,1] ) ] , S0) )
Но гораздо интереснее составить план приобретения агентом золота и решать эту задачу, получая ответ на показанный ниже запрос, который словесно формулируется таким образом: "Какая последовательность действий seq приведет к тому, что золото окажется в квадрате [1,1]?"
3seq At(Gi, [1,1] , Resul t(seq, S0) )
Рассмотрим, что должно войти в базу знаний, с помощью которой можно было бы получать ответы на такие запросы.







Материалы

Яндекс.Метрика