Пример 9.2. Факты, описывающие рекомендации по ремонту автомобиля
repair “Add gas.”
repair “Charge the battery.”
repair “Replace the points.”
repair “Clean the points.”
repair “Replace the ignition coil.”
repair “Repair the distributor lead wire.”
repair “Clean the fuel line.”
repair “Point gap adjustment.”
repair “No repair needed.”
repair “Take your car to a mechanic.”
Все приведенные факты, использующиеся для предоставления пользователю рекомендаций по ремонту, во втором поле содержат текстовое значение с рекомендацией по ремонту.
Обратите внимание, что одни и те же рекомендации могут выводиться как правилом 7, так и правилом 12. Однако состояние машины при этой поломке отличается. Для того чтобы иметь возможность обрабатывать эту ситуацию с помощью одного правила CLIPS, введем еще два дополнительных факта.
Пример 9.3. Факты, описывающие мощность работы двигателя
symptom engine low-output ;низкая мощность
symptom engine not-low-output ;нормальная мощность
Кроме описанных выше фактов системе могут понадобиться факты, описывающие проявления неисправности. Однако в нашей версии экспертной системы таких фактов не будет. О том, как обойтись без них, вы узнаете в следующем разделе. Приведенный выше список фактов вполне достаточен для решения поставленной задачи. Приступим к следующему этапу — сбору исходной информации для диагностики.
Сбор информации
Как упоминалось выше, для работы нашей системы можно заставить пользователя вручную вводить факты, описывающие проявление возникшей неисправности. Однако такой метод имеет ряд серьезных недостатков: пользователь может забыть о каких-нибудь существенных деталях или, наоборот, указать слишком много информации, что может помешать нормальной работе системы. Кроме того, факты, описывающие проявление неисправности, должны были бы иметь строго определенный формат, и система не смогла бы их обработать в случае ошибки со стороны пользователя.
В нашей экспертной системе мы реализуем правила диагностики, которые в зависимости от той или иной ситуации будут задавать пользователю необходимые вопросы и получать ответ в строго заданной форме. Дальнейшая диагностика будет производиться с учетом предыдущих ответов на вопросы, заданные пользователю. Эти ответы будут формировать описание текущей ситуации с помощью фактов, приведенных выше.
Для реализации подобной архитектуры будет необходимо реализовать функцию, задающую пользователю произвольный вопрос и получающую ответ из заданного набора корректных ответов. В примере 9.4 приведена одна из возможных реализаций такой функции.
Дата добавления: 2021-12-14; просмотров: 273;