ТОП 10:

ЕСЛИ: Имеется решение менее радикальное, чем



Замена

ТО: Информировать пользователя и отметить, что неисправность (проблема) может быть устранена путем ремонта,

(defrule check-repair ?rep <-

(repair (part ?part) (action ?actions~replace)

(subpart ?sub&~nil&~?part))

(problem (part ?part) (symptom ?sym))

=>

(printout t crlf

"If you " ?action "the " ?sub "that should "

"fix the " ?sym "problem with the," ?part crlf)

;; "Если вы " ?action ?sub "то это' должно "

;; "устранить " ?sym "проблемы с " ?part crlf)

(modify ?rep (check done))

)

Правило CHECK-REPLACE:

ЕСЛИ:

Решение требует замены узла

ТО:

Информировать пользователя и отметить, что неисправность (проблема) устранена. Для этого добавить в рабочую память пустой вектор и запросить у пользователя наименование модели

;; изделия,

(defrule check-replace

(repair (part ?part) (action replace))

(not (model ?mod&~nil))

?prob <- (problem (part ?part)

(symptom ?sym)) =>

(printout t crlf

"You have to replace the "

?part "to fix the " ?sym "problem" crlf)

;; "Вам потребуется заменить" ?part

;; "чтобы устранить " ?sym "проблемы " crlf)

(assert (model nil)) )

;; Правило REPLACE:

;; ЕСЛИ: Пользователю необходимо заменить узел

;; ТО: Запросить у пользователя наименование

;; модели изделия,

(defrule replace

?rep <- (repair (action replace))

?mod <- (model nil) =>

(printout t crlf

"What model of revolver do you have ?" crlf)

;; "Какой модели ваш револьвер?"

(kind-list)

(prompt)

(bind ?answer(read))

(retract ?mod)

(assert (model ?answer))

(modify ?rep (check part-no))

)

;; Правило PART-NO:

;; ЕСЛИ: Пользователю необходимо заменить узел

;; ТО: Выяснить номер узла, отослав сообщение

;; объекту, представляющему данную модель

;; изделия,

(defrule part-no

(model ?mod£Tnil)

?rep <- (repair (part ?part)

(action replace) (check part-no)) =>

(bind ?no (send (symbol-to-instance-name ?mod)

Part-no ?part))

(printout t crlf

"The part number of the " ?mod " " ?part "

is " ?no crlf) ;; "Номер узла " ?mod " " ?part ?no

(modify ?rep (check done)) )

;; Правила BARREL (ствол)

;; Правило BARREL-SYMPTOM

;; ЕСЛИ: Неисправность не имеет признаков

;; ТО: Выяснить признак (симптом),

(defrule barrel-symptom

?prob <- (problem (part barrel)

(symptom nil) (subpart nil))

=>

(printout t crlf

"Is there a problem inside barrel? " crlf)

;; "Есть ли повреждения внутри ствола?"

(prompt)

(bind ?answer(read))

(if (eq ?answer yes)

Then (modify ?prob (subpart bore))

) )

;; Правило BARREL-INSIDE

;; ЕСЛИ: Имеется повреждение канала ствола

;; ТО: Выяснить у пользователя,

;; какое (и предложить помощь).

(defrule barrel-inside

?prob <- (problem (part barrel) (symptom nil) (subpart bore))

=>

(printout t crlf

"What is the problem inside the barrel? " crlf)

;; "Характер повреждения канала ствола?"

(choose-list) (printout t crlf "

leading rust jam" crlf)

;; " наличие ржавчины"

(prompt)

(bind ?answer (read))

(modify ?prob (symptom ?answer)) )

;; Правило BARREL-RUST

;; ЕСЛИ: Имеется ржавчина в канапе ствола

;; ТО: Проверить наличие раковин.

(defrule barrel-rust

?prob <- (problem (part barrel) (symptom rust) =>

(printout t crlf

"Are there pits inside the barrel? " crlf)

;; "Нет ли раковин в канале ствола?" (prompt)

(bind ?answer (read))

(if (eq ?answer yes) then (assert (repair

(action replace) (part barrel) (subpart bore))

(remark "Please consult your local dealer")))

;; Проконсультируйтесь с местным дилером

Else (assert (repair

(action clean) (part barrel) (subpart bore))

(remark "Gun should be kept clean and dry"))

;; Оружие нужно содержать в чистоте и

;; предохранять от сырости

) )

;; Правило BARREL-LEADING

;; ЕСЛИ: Имеется налет свинца в канале ствола

;; ТО: Проверить качество патронов,

(defrule barrel-leading

?prob .<- (problem (part barrel) (symptom

Leading) (check nil))

=>

(modify ?prob (check ammo))

(printout t crlf

"You may be using the wrong ammunition " crlf)

;; "Возможно, вы пользуетесь некачественными

;; патронами" )

;; Правило BARREL-LEADING-CHECK

;; ЕСЛИ: Имеется налет свинца в канале ствола

;; ТО: Проверить качество патронов,

(defrule barrel-leading-check

Pprob <- (problem (part barrel) (symptom

Leading) (check ammo))

=>

(assert (repair (part barrel)

(action clean) (subpart bore)

(remark "Use Lewis Lead Remover"))

;; Воспользуйтесь средством для удаления свинца

;; фирмы Lewis )

Если посчитаете нужным, скопируйте из этой программы вспомогательные функции и структуры определения правил, но используйте знания из другой предметной области, которые были приобретены при выполнении предыдущего упражнения.

3. Рассмотрите ситуацию, которая возникает при планировании покупки какой-нибудь дорогостоящей вещи. Пусть, например, у вас появилась идея приобрести новый автомобиль. Эту проблему можно будет считать хорошо определенной только после того, как вы решите, какую сумму можно потратить на эту покупку, для каких поездок будет в основном использоваться новый автомобиль, какой изготовитель и какая модель для вас предпочтительны, и т.п. Для подобных упражнений можно использовать не только пример с автомобилем, но и с другими видами дорогостоящих покупок, — загородный дом, высококачественная электронная аппаратура и т.д. Далее уточните спецификацию покупки следующим образом.

I) Составьте список ключевых концепций и отношений между ними, которые нужно учитывать при решении проблемы. В случае с автомобилем такой список, очевидно, будет включать атрибуты фирмы-изготовителя и модели автомобиля, разнообразные эксплуатационные характеристики (мощность двигателя, расход топлива), связи между этими атрибутами и параметрами, определяющими ваш "стиль жизни", — частота и продолжительность поездок, предполагаете ли вы брать в поездку каких-либо экзотических попутчиков (лошадь или собаку) или необычный груз (например, лодку, домик на колесах) и т.п.

II) Попробуйте найти способ формального представления перечисленных концепций и отношений между ними. Например, изготовитель автомобиля и его модель могли бы быть выбраны из существующего набора классов — седан, спортивное авто, микроавтобус и т.д. Проанализируйте, не нужно ли при этом использовать многомерную классификацию концепций, при которой придется использовать множественное наследование.

III) Обратите внимание на важность учета приоритета разных свойств рассматриваемого объекта и необходимость использования средств разрешения конфликтов между ними. Если, например, хочется купить автомобиль, который, с одной стороны, имеет мощный двигатель, а с другой стороны, потребляет мало бензина, то нужно подумать над тем, как найти компромисс между этими противоречивыми требованиями.

4. Составьте на языке CLIPS несложную консультационную программу, которая помогла бы пользователю в решении проблемы целесообразности покупки, сформулированной при выполнении предыдущего упражнения. При разработке программы главное внимание нужно уделить тому, как представить сформулированные ранее концепции и отношения между ними в виде структур данных. Нужно также продумать и режимы управления, которые учитывали бы как структуру пространства состояний (например, способ классификации автомобилей), так и механизм обработки приоритетов свойств и разрешения конфликтов между ними.

5. До какого уровня детализации, по вашему мнению, можно спроектировать экспертную систему, не зная, как она будет внедряться? Какие опасности, по-вашему, подстерегают разработчика, который слишком рано принимает решение о способе внедрения экспертной системы?

ГЛАВА 11. Эвристическая классификация (I)

Классификация задач экспертных систем

Классификация методов решения проблем

Эвристическое сопоставление

Общность эвристической классификации

Классификация или конструирование?

Рекомендуемая литература

Упражнения

ГЛАВА 11. Эвристическая классификация (I)

Классификация задач экспертных систем

Классификация методов решения проблем

Классификация или конструирование?

Рекомендуемая литература

Упражнения

В предыдущей главе мы уже упоминали о том, что базовые компоненты экспертных систем, хорошо зарекомендовавшие себя на практике (машина логического вывода и подсистема представления знаний), могут быть использованы для построения аналогичных систем для других областей приложения. Так, архитектура оболочки EMYCIN явилась результатом дальнейшего развития принципов, положенных в основу ранней и узкоспециализированной системы MYCIN.

В этой главе мы рассмотрим вопросы применения тех методов решения проблем, которые используются на практике при построении экспертных систем разного назначения, и постараемся увязать характерные черты этих методов со спецификой областей применения. В идеальном случае хотелось бы получить ответы на следующие вопросы.

Можно ли классифицировать области применения экспертных систем на основе характеристик задач, решаемых в этой области?

Можно ли сформулировать хорошо дифференцированный набор методов решения проблем, которые приложимы для определенных классов областей применения?

Можно ли определить, какие стили представления знаний и правил логического вывода наиболее подходят для данного метода решения проблем?

Мы попытаемся дать ответы на эти вопросы, основываясь на том опыте построения экспертных систем, который накопило научное сообщество на сегодняшний день. Не следует ожидать, что эти ответы будут обладать исчерпывающей полнотой и четкой аргументацией, но, тем не менее, они представляют большой интерес как в теоретическом, так и в практическом плане. Если уж технология экспертных систем должна иметь солидный теоретический базис, то необходимо представлять себе, почему эта технология оказывается работоспособной при решении одних задач и неработоспособной при решении других. С практической точки зрения ответы на поставленные вопросы помогут разработчикам экспертных систем принять правильное решение и таким образом избавят их от крушения надежд и разочарования, которыми часто сопровождается ошибочный выбор. В этой главе читатель найдет следующий материал.







Последнее изменение этой страницы: 2016-04-07; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.237.51.159 (0.01 с.)