Главная страница

Лабораторная работа 8. Построение баз знаний на языке clips. Факты, правила и шаблоны.


Скачать 0.56 Mb.
НазваниеЛабораторная работа 8. Построение баз знаний на языке clips. Факты, правила и шаблоны.
Анкорclisp
Дата09.12.2021
Размер0.56 Mb.
Формат файлаdocx
Имя файла8lab._.docx
ТипЛабораторная работа
#297716

Программы обработки списков.

НАУЧНО-ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
Кафедра Безопасности и информационных технологий


Отчет по заданию

по дисциплине «Интеллектуальные информационные системы»

тема: «Лабораторная работа №8. Построение баз знаний на языке CLIPS. Факты, правила и шаблоны.»




Группа: ИЭ-66-18

Студент : Ночёвкин Д.С.

(подпись)
Руководитель:

Карпович Е.Е.

(подпись)

Москва 2021 г.





Задание

Создайте шаблон и правило для отношений:

1. X является мамой Y,

2. X является братом Y,

3. X является сыном Y,

4. X является тётей Y.


  1. Создание шаблонов.

Создание шаблонов фактов и правил осуществляется с помощью конструктора deftemplate.

Создаем шаблон person:

(deftemplate person

(slot name)

(slot gender)

(slot age)

)

Создаем шаблон person:

(deftemplate parent

(slot parentname)

(slot childname)

)

  1. Создание фактов

Затем создаем список фактов для базы данных “Родственники” с помощью конструктора фактов deffacts:



Рисунок 1

Создаём список фактов fperson:

(deffacts fperson

(person (name Vasilii) (gender male) (age 65))

(person (name Liza) (gender female) (age 62))

(person (name Vladimir) (gender male) (age 42))

(person (name Victor) (gender male) (age 40))

(person (name Natasha) (gender female) (age 37))

(person (name Oleg) (gender male) (age 18))

(person (name Olga) (gender female) (age 14))

(person (name Mihail) (gender male) (age 41))

(person (name Kostia) (gender male) (age 10))

(person (name Masha) (gender female) (age 12))

)

Создаём список фактов fparent:

(deffacts fparent

(parent (parentname Vasilii) (childname Vladimir))

(parent (parentname Vasilii) (childname Victor))

(parent (parentname Vasilii) (childname Natasha))

(parent (parentname Liza) (childname Vladimir))

(parent (parentname Liza) (childname Victor))

(parent (parentname Liza) (childname Natasha))

(parent (parentname Vladimir) (childname Oleg))

(parent (parentname Victor) (childname Olga))

(parent (parentname Natasha) (childname Kostia))

(parent (parentname Natasha) (childname Masha))

(parent (parentname Mihail) (childname Kostia))

(parent (parentname Mihail) (childname Masha))

)

  1. Создание шаблонов для новых правил.

Создаем новые шаблоны и соответствующие им правила:

a). X является мамой Y

Создаём шаблон нового правила:

(deftemplate mother

(slot name1)

(slot name2)

)

Создаем само правило с помощью defrule:

(defrule mother

(person (name ?x) (gender female))

(person (name ?y))

(parent (parentname ?x) (childname ?y))

=>

(printout t ?x " is mother of " ?y crlf)

(assert (mother (name1 ?x) (name2 ?y)))

)

Выполнение работы:

Для того, чтобы проверить работу правила, необходимо загрузить созданные шаблоны фактов и правила, загрузить списки фактов!



Также, факты, созданные во время данного сеанса работы с системой CLIPS, можно просмотреть в окне фактов:



b). X является братом Y

Создаём шаблон нового правила:

(deftemplate brother

(slot name1)

(slot name2)

)

Создаем само правило с помощью defrule:

(defrule brother

(person (name ?x) (gender male))

(person (name ?y))

(person (name ?z) (gender female))

(parent (parentname ?z) (childname ?x))

(parent (parentname ?z) (childname ?y))

=>

(if (<> (str-compare ?x ?y) 0) then

(printout t ?x " is brother of " ?y crlf)

(assert (brother (name1 ?x) (name2 ?y)))

))

Выполнение работы:

Для того, чтобы проверить работу правила, необходимо загрузить созданные шаблоны фактов и правила, загрузить списки фактов!



Также, факты, созданные во время данного сеанса работы с системой CLIPS, можно просмотреть в окне фактов:



c). X является сыном Y

Создаём шаблон нового правила:

(deftemplate son

(slot name1)

(slot name2)

)

Создаем само правило с помощью defrule:

(defrule son

(person (name ?x))

(person (name ?y) (gender male))

(parent (parentname ?x) (childname ?y))

=>

(printout t ?y " is son of " ?x crlf)

(assert (son (name1 ?y) (name2 ?x)))

)

Выполнение работы:

Для того, чтобы проверить работу правила, необходимо загрузить созданные шаблоны фактов и правила, загрузить списки фактов!



Также, факты, созданные во время данного сеанса работы с системой CLIPS, можно просмотреть в окне фактов:



d). X является тётей Y

Создаём шаблон нового правила:

(deftemplate aunt

(slot name1)

(slot name2)

)

Создаем само правило с помощью defrule:

(defrule aunt

(person (name ?x) (gender female))

(person (name ?y))

(person (name ?z))

(person (name ?q) (gender female))

(parent (parentname ?q) (childname ?x))

(parent (parentname ?q) (childname ?z))

(parent (parentname ?z) (childname ?y))

=>

(if (<> (str-compare ?x ?z) 0) then

(printout t ?x " is aunt of " ?y crlf)

(assert (aunt (name1 ?x) (name2 ?y)))

))

Выполнение работы:

Для того, чтобы проверить работу правила, необходимо загрузить созданные шаблоны фактов и правила, загрузить списки фактов!



Также, факты, созданные во время данного сеанса работы с системой CLIPS, можно просмотреть в окне фактов:



  1. Проверка работы все правил одновременно.

Если загрузить все шаблоны и правила в CLIPS, то будет выведен следующий результат:




написать администратору сайта