если
давление в v-01 достигло уровня открытия выпускного клапана
то
выпускной клапан в v-01 открылся
[N=0.005, S=400]
если
давление в v-01 не достигло уровня открытия выпускного клапана и выпускной клапан в v-01 открылся
то
преждевременное открытие выпускного клапана (сместилась установка порогового давления)
[N=0.001, S=2000]
Рис. 14.3. Два правила из демонстрационной базы знаний системы AL/X для диагностики неисправностей (Reiter 1980). N и S — величины "необходимости" и "достаточности", детально описанные в разд. 14.7. Величина S указывает степень, с которой условие влечет за собой заключение (вывод). Величина N указывает, до какой степени истинность условия необходима для того, чтобы заключение было истинным.
если
1 существует гипотеза H , что план P ведет к успеху, и
2 существуют две гипотезы
H1 , что план P1 опровергает план P , и
Н2 , что план Р2 опровергает план P , и
3 имеют место факты:
гипотеза H1 ложна и
гипотеза Н2 ложна
то
1 породить гипотезу Н3 , что составной план "P1 или Р2" опровергает план P , и
2 породить факт: из Н3 следует не( H)
Рис. 14.4. Правило уточнения плана из системы AL3 для решения шахматных задач (Bratko 1982).
Правила, содержащиеся в базе знаний, имеют вид
ИмяПравила : если Условие то Заключение
где Заключение
— это простое утверждение, а Условие
— это набор простых утверждений, соединенных между собой операторами и
и или
. Мы также разрешим в части условия использовать оператор не
, хотя и с некоторыми оговорками. При надлежащем прологовском определении этих операторов (как это сделано на рис. 14.5) правила станут синтаксически верными предложениями Пролога. Заметим, что оператор и
связывает операнды сильнее, чем или
, что соответствует обычным соглашениям.
% Небольшая база знаний для идентификации животных
:- op( 100, xfx, [имеет, 'кормит детенышей',
'не может', ест, откладывает, это]).
:- op( 100, xf, [плавает, летает, хорошо]).
прав1: если
Животное имеет шерсть
или
Животное 'кормит детенышей' молоком
то
Животное это млекопитающее.
прав2: если
Животное имеет перья
или
Животное летает и
Животное откладывает яйца
то
Животное это птица.
прав3: если
Животное это млекопитающее и
( Животное ест мясо
или
Животное имеет 'острые зубы' и
Животное имеет когти и
Животное имеет
'глаза, направленные вперед' )
то
Животное это хищник.
прав4: если
Животное это хищник и
Животное имеет
'рыжевато-коричневый цвет' и
Животное имеет 'темные пятна'
то
Животное это гепард.
прав5: если
Животное это хищник и
Животное имеет
'рыжевато-коричневый цвет' и
Животное имеет 'черные полосы'
то
Животное это тигр.
прав6: если
Животное это птица и
Животное 'не может' летать и
Животное плавает
то
Животное это пингвин.
прав7: если
Животное это птица и
Животное летает хорошо
то
Животное это альбатрос.
факт: X это животное :-
принадлежит( X, [гепард, тигр, пингвин, альбатрос]).
можно_спросить( _ 'кормит детенышей' _,
'Животное' 'кормит детенышей' 'Чем').
можно_спросить( _ летает, 'Животное' летает).
можно_спросить( _ откладывает яйца,
'Животное' откладывает яйца).
можно_спросить( _ ест _, 'Животное' ест 'Что').
можно_спросить( _ имеет _,'Животное' имеет 'Нечто').
можно_спросить( _ 'не может' _,
'Животное' 'не может' 'Что делать').
можно_спросить( _ плавает, 'Животное' плавает).
можно_спросить( _ летает хорошо,
'Животное' летает хорошо).
Рис. 14.5. Простая база знаний для идентификации животных. Заимствовано из Winston (1984). Отношение "можно_спросить" определяет вопросы, которые можно задавать пользователю. Операторы если
, то
, и
, или
определены на рис. 14.10.
Рассмотрим еще одну небольшую базу знаний, которая может помочь локализовать неисправности в простой электрической схеме, состоящей из электрических приборов и предохранителей. Электрическая схема показана на рис. 14.6. Вот одно из возможных правил:
Читать дальше