Рекомендуемая литература. Упражнения.
AIRWAIS OBSTRUCTION существует, если: RATI01 < PRED-2SD отсутствует RTB, если: RATI02 < PRED-2SD хороший показатель RTB, если: RATI02 > PRED-2SD SLIGHT AIRWAIS OBSTRUCTION существует, если: 801 < RATI01 < 100% (PRED-2SD) отсутствует RTB, если: IFV1 < FEV1/10 IFVC < FVC/10 хороший показатель RTB, если: FEV1 > (PRED-2SD)/4 FEV1/3 < IFEV1 MODERATE AIRWAIS OBSTRUCTION существует, если: 55% < RATI01 < 80% (PRED-2SD) SEVERE AIRWAIS OBSTRUCTION существует, если: RATI01 <= 55% (PRED-2SD) RESTRICTIVE DEFECT существует, если: RV < PRED+2SD TLC <= 80% (PRED-2SD) RATI01 > 80% (PRED-2SD) EARLY RESTRICTIVE DEFECT существует, если: TLC < (PRED-2SD) RATI01 > (PRED-2SD) MILD RESTRICTIVE DEFECT существует, если: RATI01 > (.PRED-2SD) 80% < TLC < 100% (PRED-2SD) MODERATE RESTRICTIVE DEFECT существует, если: RATI01 > (PRED-2SD) 60% < TLC < 80 (PRED-2SD) SEVERE RESTRICTIVE DEFECT существует, если: RATI01 > (PRED-2SD) TLC < 60 (PRED-2SD)
Вам понадобятся процедуры для накопления диагностических знаний, связанных с этими заболеваниями.
В каждом фрейме нужно предусмотреть слоты для хранения ожидаемых среднестатистических значений и стандартных отклонений. Так, слот PRED-RATI01 будет хранить ожидаемое значение параметра RATI01, а слот SD-RATI01 – стандартное отклонение этого параметра. Конечно, для этого упражнения можно подставить любые значения в эти слоты, поскольку главное, что от вас требуется, – правильно организовать связи между слотами.
Например, фрейм-объект SEVERE-RESTRICTIVE-DEFECT может включать метод (процедуру LISP) PRESENT, который определен следующим образом:
SEVERE-RESTRICTIVE-DEFECT.PRESENT (and(> RATI01 (– PRED-RATI01 (SD-RATI01 2))) (< TLC (/ (6 (– PRED-TLC (*SD-TLC 2))) 10)))
Эта процедура возвращает значение Т, если соблюдаются специфицированные в ней условия.
II) Представьте диагностические знания, связанные с этими фреймами, в виде порождающих правил, а не в виде процедур. Как и в предыдущем случае, правила должны ссылаться на значения слотов.
Упражнение 6
Разработайте и реализуйте простую программу извлечения знаний, которая позволила бы пользователю передать сведения о неисправностях в некотором устройстве и перечислить их возможные причины. Например, если вас привлекает предметная область обслуживания автомобиля, то программа должна принимать сведения о таких видах отказов (в терминологии TDE), как "двигатель не заводится", уточнять причину отказа, например "подается ли ток на электродвигатель стартера?", и связывать возможные причины с каждым таким уточнением.
Естественно ожидать, что отказ "двигатель не заводится" будет связан с такими причинами, как "неисправна аккумуляторная батарея" и "неисправен соленоид стартера", а узлы отказов вроде "неисправна аккумуляторная батарея" должны требовать дальнейшего уточнения – "разряжена аккумуляторная батарея" и "недостаточный уровень электролита в аккумуляторной батарее". Программа должна сохранять всю полученную информацию в древовидной структуре, которая была описана в разделе 13.4.
Упражнение 7
Протестируйте разработанную в упр. 6 программу либо самостоятельно, либо пригласите коллегу, которого считаете специалистом в соответствующей предметной области. Если не удастся найти никого, кто помог бы вам в этом деле, воспользуйтесь доступной технической литературой. Например, для ввода знаний о возможных неисправностях автомобиля вполне достаточно руководства, которое выдают к каждому автомобилю при покупке.