Продукционный диалект RIF

реклама
Продукционный диалект RIF
Г.В. Лезин
Санкт-Петербургский экономикоматематический институт РАН
RIF PRD-конформизм производителя и потребителя
систем PR продукционных правил
Производитель PR
Lp – язык правил
Трансляция (Lp  RIF PRD)
Передача
Трансляция (RIF PRD  Lc )
Потребитель PR
Lc – язык правил
Продукционная система
WM0
PR
Рабочая память
Продукционные
(Исходн. Состоян.)
правила
Интерпретация
правил
WM
Рабочая память
(Результат)
Правило: (*имя*) IF (условие) ThenDo
(последовательность действий)
Атомы условий
Атомарные действия
1.
T(t1, …, tn) n-местная позиционная 1.
формула.
2.
T = S эквивалентность
3.
T # S принадлежность классу
4.
T ## S подкласс класса
5.
O[p1v1 … pnvn] фрейм
Составная формула условия
строится на основе отрицания,
конъюнкции и дизъюнкции
Семантика правил определяется на
основе представления формулы в
дизъюнктивной нормальной форме
2.
Assert(), пополнить WM фактом
, где  - позиционный атом,
фрейм, принадлежность классу.
Retract(), удалить факт из WM;
 - позиционный атом, фрейм.
3.
Retract(O, P), у объекта O удалить
все значения v слота P.
4.
Retract(O), удалить объект O вместе
со всеми фактами, непосредственно
связанными с этим объектом
Составное действие
Modify(o[pv]) эквивалентно
последовательности
Retract(o, p) Assert (o[pv])
Пример
(* ex1:GoldRule *)
(Forall ?customer such that
And( ?customer#ex1:Customer ?customer[ex1:status->"Silver"]
(Forall ?shoppingCart such that
(?customer[ex1:shoppingCart->?shoppingCart])))
(If Exists ?value
(And( ?shoppingCart[ex1:value->?value]
pred:numeric-greater-than-or-equal(?value 2000))
Then Do( Modify( ?customer[ex1:status->"Gold"] ) ) ) )
(* ex1:DiscountRule *)
( Forall ?customer such that (And( ?customer # ex1:Customer ) )
(If Or (?customer[ex1:status->"Silver"] ?customer[ex1:status->"Gold"] )
Then Do( (?s ?customer[ex1:shoppingCart->?s])
(?v ?s[ex1:value->?v])
Modify( ?s[ex1:value->func:numeric-multiply(?v 0.95)] ) ) ) )
Структура RIF PRD-правил
Общая структура:
(* имя правила *)
Forall описания селектирующих шаблонов
If условие
ThenDo блок действий
декларация переменных блока
последовательность действий
Виды правил:
- безусловные;
- условные;
- содержащие описания шаблонов.
Сеть условий для системы правил
P1=?x1#Customer
?x1[status”Gold”]
P2=?x1[status”Silver”]
P3=?x1[shoppingCard?x2]
?s ?x1[ex1:shoppingCart->?s
?v ?s[ex1:value->?v]
?v x2[valuev] v  2000
Modify(?x1[value(t3*0.95)]
Var={x1}
Modify(x1[status”Gold”]
Var={x1, x2}
Схема интерпретации системы правил PR
PR
Построение сети селектирующих шаблонов
0-ой
шаг
Построение сети условий
(в дизъюнктивной нормальной форме);
проверка системы на безопасность
Заполнение сетей фактами из WM0
Переход
системы в
очередное
состояние
Выбор правила (состояние системы)
Исполнение правила
Коррекция сетей и
рабочей памяти WM
Состояния системы правил RS
Текущее состояние s системы правил RS характеризуется:
-
состоянием базы фактов facts(s);
-
конфликтным множеством экземпляров правил conflictSet(RS,s) готовых к
исполнению в условиях facts(s);
-
функцией previous(s), определяющей состояние из которого система перешла
в s в результате последнего атомарного действия.
Предшествующие текущему s состояния дополнительно характеризуются
функцией picked(ps), значением которой является экземпляр правила из
conflictSet(RS, ps), активизированный в состоянии ps.
Различают три вида состояний правил:
-
состояния перехода, в которых conflictSet(RS, s)=1;
-
циклические состояния, в которых conflictSet(RS, s) содержит более одного
экземпляра правила;
- финальные состояния, в которых conflictSet(RS, s)=0.
Характеристики конфликтных ситуаций в системе правил
Конфликтные ситуации возникают в циклических состояниях s.
recency(ri, s) – характеристика «новизны» использования экземляра
правила ri в состоянии s:
if previous(s) = NIL, then recency(ri, s) = 1;
else if ri  conflictSet(RS, previous(s)), then recency(ri, s) = 1 +
recency(ri, previous(s));
•else, recency(ri, s) = 1.
•lastPicked(ri, s) – характеристика дистанции от состояния s до
состояния, в котором экземпляр правила ri был активизирован
последний раз:
•if previous(s) = NIL, then lastPicked(ri, s) = 1;
•else if ri  picked(previous(s)), then lastPicked(ri, s) = 1;
•else, lastPicked(ri, s) = 1 + lastPicked(ri, previous(s)).
Правила разрешения конфликных ситуаций
Рефракция:
if ri  cs and lastPicked(ri, s) < recency(ri, s), then cs = cs - ri;
Приоритет:
if ri  cs and ri'  cs and priority(ri) < priority(ri'), then cs = cs - ri;
Правило новизны:
if ri  cs and ri'  cs and recency(ri, s)>recency(ri', s), then cs = cs -ri;
Разрыв связей: if ri  cs, then cs = {ri}.
RIF-PRD не определяет последнее правило более точно: способ
выбора единственного экземпляра правила из оставшейся части
множества cs отдан на откуп конкретной реализации продукционной
системы.
rif:forwardChaining - стандартный алгоритм
разрешения конфликтной ситуации в состоянии s
1. Инициализируется исходное множество picked(s) экземпляров
правил, подлежащих анализу :
picked(s) = conflictSet(RS, s);
2. Ко всем элементам множества picked(s) применяется правило
рефракции.
3.Затем к оставшейся части picked(s) применяется правило
приоритета.
4. На следующем шаге к оставшимся элементам picked(s)
применяется правило новизны.
5. Далее, если оставшаяся часть picked(s) содержит более одного
элемента, осуществляется разрыв связей
Результ алгоритма - picked(s), содержащее единственный экземляр
правила, отобранный для активизации.
Расстановка приоритетов (пример)
Document (
Prefix( ex2 <http://example.com/2009/prd3#> )
(* ex2:ExampleRuleSet *)
Установлен priority=0
Group (
(* ex2:Rule_1 *) Forall ...
Наследован priority=0
(* ex2:HighPriorityRules *)
Установлен priority=10
Group 10 (
(* ex2:Rule_2 *) Forall ...
Наследован priority=10
(* ex2:Rule_3 *)
Group 9 (Forall ... ) )
Установлен priority=9
(* ex2:NoPriorityRules *)
Наследован priority=0
Group (
(* ex2:Rule_4 *) Forall ...
Наследован priority=0
(* ex2:Rule_5 *) Forall ... ) )
Наследован priority=0
Семантически защищенное отображение
Отображение множества RIF PRD-правил R во множество правил RL,
представленное на языке L является семантически защищенным, если и только
если:
- для любого начального состояния базы фактов,
- заданной стратегии разрешения конфликтов и
- заданного множества конечных состояний
каждая формула из RL в свою очередь отображается в набор базовых формул
из R.
Отображение множества правил RL, выраженных на языке L, во множество RIF
PRD правил R является семантически защищенным, если и только если:
- для любого начального состояния базы фактов,
- заданной стратегии разрешения конфликтов и
- заданного множества конечных состояний
-каждое множество базовых RIF-PRD атомарных формул в свою очередь
отображается в формулу из RL.
Благодарю за внимание!
Скачать