Разработка интеллектуальных информационных систем с использованием CLIPS. Дякин В.Н. - 14 стр.

UptoLike

Составители: 

Во-первых, для решения задачи экспертной системе необходимо знать, в каком состоянии находится машина, диагно-
стика которой производится. Эксперт выделил три возможных состояния: нормальная работа двигателя, двигатель работает
неудовлетворительно, не заводится (см. правило 1).
Во-вторых, большинство приведенных правил, помимо состояния двигателя в целом, используют понятие состояния
вращения двигателя. Согласно этим правилам двигатель может находиться в одном из двух состояний, которые определяют-
ся в зависимости от того,
способен он вращаться (работать) или нет.
В-третьих, в некоторых правилах (см. правила 4, 7, 8, 10) используется понятие состояния системы зажигания. Систе-
ма зажигания может быть в одном из трех состояний: нормальное состояние, нерегулярная работа и нерабочее состояние.
В-четвертых, в правилах 6 и 8 используется понятие состояния аккумулятора. Аккумулятор может быть в одном из
двух состояний: заряженным и разряженным.
Таким образом, можно выделить следующие факты, описывающие состояние автомобиля и его узлов:
Группа фактов, описывающая состояние машины:
working-state engine normal нормальная работа;
working-state engine unsatisfactory неудовлетворительная работа;
working-state engine does-not-start не заводится.
Группа фактов, описывающая состояние двигателя:
rotation-state engine rotates двигатель вращается;
rotation-state engines does-not-rotate двигатель не вращается.
Группа фактов, описывающая состояние системы зажигания:
spark-state engine normal зажигание в порядке;
spark-state engine irregular-spark искра не регулярна;
spark-state engine does-not-spark искры нет.
Группа фактов, описывающая состояние системы питания:
charge-state battery charged аккумулятор заряжен;
charge-state battery dead аккумулятор разряжен.
Обратите внимание, что факты, входящие в одну группу (содержат одинаковое первое поле), являются взаимоисклю-
чающими, т.е. наличие в системе сразу двух фактов из одной группы лишено смысла.
Из постановки задачи следует, что наша экспертная система должна предоставлять пользователю рекомендации, позво-
ляющие устранить найденную неисправность. Из приведенных выше правил можно выделить следующие рекомендации:
добавить топливо (правило 5); зарядить аккумулятор (правило 6); заменить или почистить контакты (правило 7 или 12); за-
менить катушку зажигания или распределительные провода (правило 8); прочистить топливную систему (правило 9); отре-
гулировать зазоры между контактами (правило 10); отрегулировать зажигание (правило 11). Необходимо помнить также о
двух крайних случаях: ремонт не требуется в принципе; экспертная система не смогла поставить диагноз.
Таким образом, получатся следующие рекомендации:
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 "Timing adjustment";
repair "No repair needed";
repair "Take your car to a mechanic".
Обратите также внимание, что одни и те же рекомендации могут выводиться как правилом 7, так и правилом 12. Одна-
ко состояние машины при этой поломке отличается. Для того, чтобы иметь возможность обрабатывать эту ситуацию с по-
мощью одного правила CLIPS, введем еще два дополнительных факта:
symptom engine low-output низкая мощность;
symptom engine not-low-output нормальная мощность.
Как упоминалось выше, для работы нашей системы можно заставить пользователя вручную вводить факты, описываю-
щие проявление возникшей неисправности. Однако такой метод имеет ряд серьезных недостатков: пользователь может за-
быть о каких-нибудь существенных деталях или, наоборот, указать слишком много информации, что может помешать нор-
мальной работе системы. Кроме того, факты, описывающие проявление неисправности, должны иметь строго определенный
формат, и система не сможет их обработать в случае ошибки со стороны пользователя.
В нашей экспертной системе мы реализуем правила диагностики, которые в зависимости от той или иной ситуации бу-
дут задавать пользователю необходимые вопросы и получать ответ в строго заданной форме. Дальнейшая диагностика будет
производиться с учетом предыдущих ответов на вопросы, заданные пользователю. Эти ответы будут формировать описание
текущей ситуации с помощью фактов, приведенных выше.
Для реализации подобной архитектуры будет необходимо реализовать функцию, задающую пользователю произволь-
ный вопрос и получающую ответ из заданного набора корректных ответов. Далее приведена одна из возможных реализаций
такой функции.