Я борюсь со следующей проблемой программирования CLIPS:
Задача : напишите набор правил для определения семейных отношений, таких как:
(брат? X? Y) (т. е. «х - брат у»)
(сестра? х? у) (т. е. «х - сестра у»)
(сын? х? у) (т. е. «х - сын y»)
(дочь? x? y) (т. е. «x - дочь y»)
Ограничение в этой задаче состоит в том, что правила могутбыть построенным только из следующих посылок:
(отец? x? y) (т. е. «х есть отец у»)
(мать? х? у) (то есть «х естьмать y ")
(мужчина? x) (то есть" x - мужчина ")
(женщина? y) (то есть" y - женщина ")
В задании также предполагается, что должны быть предоставлены некоторые исходные факты и что для проверки правильности должна быть реализована возможность отображения информации о полученных выводах.
Моя попытка
Я создал шаблоны и исходные факты следующим образом:
(deftemplate father-of
(slot father)
(slot child)
)
(deftemplate mother-of
(slot mother)
(slot child)
)
(deftemplate male
(slot person)
)
(deftemplate female
(slot person)
)
(deffacts family
(mother-of(mother Anna) (child Tracy)
(mother-of(mother Anna) (child Cindy)
(female Anna)
(female Tracy)
(female Cindy)
)
Моя попыткаНаписание правила проверки того, является ли определенный человек сестрой другого человека, было следующим:
(defrule sister-of
(and
(female (person ?x))
(female (person ?y))
(female (person ?z))
(mother-of (mother ?x) (child ?y))
(mother-of (mother ?x) (child ?z))
)
=>
(assert (sister ?y ?z))
(printout t ?y " is a sister of " ?z crlf)
)
Ошибка вывода
После загрузки файла .clp я последовательнополучить следующее сообщение об ошибке такой формы:
CLIPS (6.30 3/17/15)
CLIPS> (reset)
CLIPS> (clear)
CLIPS> (load family.clp)
Defining deftemplate: father-of
Defining deftemplate: mother-of
Defining deftemplate: male
Defining deftemplate: female
Defining deffacts: family
[PRNTUTIL2] Syntax Error: Check appropriate syntax for deftemplate pattern.
ERROR:
(deffacts MAIN::family
(mother-of (mother Anna) (child Markus))
(female Anna
FALSE
CLIPS>
Мои попытки
Я проверил руководства CLIPS относительно базового программирования, сообщение об ошибке Google, но я не сделал никакихПрогресс.
Помощь будет принята с благодарностью !!!Для меня достаточно посмотреть, как этот материал работает в случае написания правила (сестра? X? Y) со всеми приведенными выше шаблонами и фактами.