![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Если: Имеется решение менее радикальное, чем
Замена ТО: Информировать пользователя и отметить, что неисправность (проблема) может быть устранена путем ремонта, (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. До какого уровня детализации, по вашему мнению, можно спроектировать экспертную систему, не зная, как она будет внедряться? Какие опасности, по-вашему, подстерегают разработчика, который слишком рано принимает решение о способе внедрения экспертной системы?
|
||||||
Последнее изменение этой страницы: 2021-07-18; просмотров: 53; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.105.59 (0.012 с.) |