courses:knowledge_representation_and_artificial_intelligence_systems:lab2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
courses:knowledge_representation_and_artificial_intelligence_systems:lab2 [2019/07/18 13:48]
andrey.suchkov [Пример заполнения базы данных]
courses:knowledge_representation_and_artificial_intelligence_systems:lab2 [2019/10/30 07:23]
andrey.suchkov [Таблица 3]
Line 1: Line 1:
-====== Лабораторная работа №2: Построение ​экспертных систем ​с использованием неупорядоченных фактов (шаблонов) и различных типов условных элементов в антецедентах правил ======+====== Лабораторная работа №2: Построение ​ЭС с использованием неупорядоченных фактов (шаблонов) и различных типов условных элементов в антецедентах правил ======
 ===== Цель работы ===== ===== Цель работы =====
 Изучение примеров программирования экспертной системы с использованием неупорядоченных фактов (шаблонов) и различных типов условных элементов в антецедентах правил. Изучение примеров программирования экспертной системы с использованием неупорядоченных фактов (шаблонов) и различных типов условных элементов в антецедентах правил.
Line 8: Line 8:
 <​code>​ <​code>​
 (deftemplate <имя шаблона>​ ["<​комментарий>"​] (deftemplate <имя шаблона>​ ["<​комментарий>"​]
-<​определение слота-1 >+  ​<​определение слота-1>​
   ...   ...
-<​определение слота-N>​)+  ​<​определение слота-N>​)
 </​code>​ </​code>​
 Пример шаблона,​ содержащего три одиночных слота представлен ниже: Пример шаблона,​ содержащего три одиночных слота представлен ниже:
Line 23: Line 23:
 (object (name table) (location "​room"​) (weight 15)) (object (name table) (location "​room"​) (weight 15))
 </​code>​ </​code>​
-//​Синтаксис антецедентов правил.//​ Антецедент правила состоит из последовательности условных элементов -- УЭ (conditional elements - CEs), которые должны удовлетворяться,​ чтобы правило было помещено в агенду. В CLIPS используется шесть основных типов условных элементов:​ УЭ на основе образца,​ УЭ-проверка,​ УЭ <<​И>>,​ УЭ <<​ИЛИ>>,​ УЭ <<​НЕ>>,​ УЭ <<​существует>>,​ УЭ <<​для всех>>,​ логические УЭ. Ниже рассмотрены наиболее часто используемые типы условных элементов,​ необходимые для выполнения данной лабораторной работы.+//​Синтаксис антецедентов правил.//​ Антецедент правила состоит из последовательности условных элементов -- УЭ (conditional elements ​-- CEs), которые должны удовлетворяться,​ чтобы правило было помещено в агенду. В CLIPS используется шесть основных типов условных элементов:​ УЭ на основе образца,​ УЭ-проверка,​ УЭ <<​И>>,​ УЭ <<​ИЛИ>>,​ УЭ <<​НЕ>>,​ УЭ <<​существует>>,​ УЭ <<​для всех>>,​ логические УЭ. Ниже рассмотрены наиболее часто используемые типы условных элементов,​ необходимые для выполнения данной лабораторной работы.
  
 **УЭ на основе образца (УЭ-образец)** -- основной и чаще всего используемый тип условного элемента. Он состоит из совокупности ограничений на поля, масок полей (wildcards) и переменных,​ используемых в качестве ограничений для фактов и объектов,​ которые сопоставляются с образцом условного элемента. УЭ-образец удовлетворяется каждой сущностью,​ которая удовлетворяет его ограничениям. Ограничение на поле представляет собой в общем случае совокупность ограничений,​ которые используются для проверки единственного поля или слота факта или объекта. Ограничение может состоять из единственного литерала или из нескольких связанных ограничений. Кроме литеральных ограничений,​ поддерживает три других типа ограничений:​ связанные ограничения (connective constraints),​ предикатные ограничения и ограничения возвращаемым значением. **УЭ на основе образца (УЭ-образец)** -- основной и чаще всего используемый тип условного элемента. Он состоит из совокупности ограничений на поля, масок полей (wildcards) и переменных,​ используемых в качестве ограничений для фактов и объектов,​ которые сопоставляются с образцом условного элемента. УЭ-образец удовлетворяется каждой сущностью,​ которая удовлетворяет его ограничениям. Ограничение на поле представляет собой в общем случае совокупность ограничений,​ которые используются для проверки единственного поля или слота факта или объекта. Ограничение может состоять из единственного литерала или из нескольких связанных ограничений. Кроме литеральных ограничений,​ поддерживает три других типа ограничений:​ связанные ограничения (connective constraints),​ предикатные ограничения и ограничения возвращаемым значением.
Line 145: Line 145:
 |  age  |  integer ​ |  17 -- 22  | |  age  |  integer ​ |  17 -- 22  |
 |  year  |  integer ​ |  2 -- 5  | |  year  |  integer ​ |  2 -- 5  |
-|  spec  |  string ​ |  <<​hard>>,​ <<​soft>>,​ <<​ai>> ​ |+|  ​<​nowiki>​spec</​nowiki> ​ ​| ​ string ​ |  <<​hard>>,​ <<​soft>>,​ <<​ai>> ​ |
 |  aver_mark ​ |  float  |  в интервале [3; 5]  | |  aver_mark ​ |  float  |  в интервале [3; 5]  |
 ===== Порядок выполнения работы ===== ===== Порядок выполнения работы =====
Line 161: Line 161:
     - Изменить сформированные в п. //b.// правила путем добавления в антецеденты предикатных условных элементов для проверки типов значений слотов в соответствии с табл. 3.     - Изменить сформированные в п. //b.// правила путем добавления в антецеденты предикатных условных элементов для проверки типов значений слотов в соответствии с табл. 3.
     - Изменить сформированные в п. //c.// правила путем добавления в антецеденты условных элементов с ограничением по возвращаемому значению. Условия ограничения для различных вариантов приведены в табл. 4.     - Изменить сформированные в п. //c.// правила путем добавления в антецеденты условных элементов с ограничением по возвращаемому значению. Условия ограничения для различных вариантов приведены в табл. 4.
-<note tip>​Возраст поступления в университет определяется по формуле:​ $[age] - [year]$. Возраст окончания:​ $[age] + (5 - [year])$.</​note>​ 
 ===== Варианты заданий ===== ===== Варианты заданий =====
  
 ==== Таблица 1 ==== ==== Таблица 1 ====
 ^  № варианта ​ ^  Условие в антецеденте правила ​ ^  Сообщение,​ выводимое в консеквенте правила ​ ^ ^  № варианта ​ ^  Условие в антецеденте правила ​ ^  Сообщение,​ выводимое в консеквенте правила ​ ^
-|  1  |  Студент 2-го курса ​ |  Студент 2-го курса ''<​name>''​ учится по специализации ''<​spec>''​. ​ |+|  1  |  Студент 2-го курса ​ |  Студент 2-го курса ''<​name>''​ учится по специализации ''​<​nowiki>​<spec></​nowiki>''​. ​ |
 |  2  |  Возраст студента 20 лет ​ |  Студент ''<​name>''​ учится на ''<​year>''​ курсе. ​ | |  2  |  Возраст студента 20 лет ​ |  Студент ''<​name>''​ учится на ''<​year>''​ курсе. ​ |
 |  3  |  Специализация студента <<​ai>> ​ |  Студент ''<​name>''​ учится по специализации "​ai"​ на ''<​year>''​ курсе. ​ | |  3  |  Специализация студента <<​ai>> ​ |  Студент ''<​name>''​ учится по специализации "​ai"​ на ''<​year>''​ курсе. ​ |
Line 177: Line 176:
 ^  № варианта ​ ^  Условие в антецеденте правила ​ ^  Сообщение,​ выводимое в консеквенте правила ​ ^ ^  № варианта ​ ^  Условие в антецеденте правила ​ ^  Сообщение,​ выводимое в консеквенте правила ​ ^
 |  1  |  Студент 2-го курса, средний балл не ниже 4.5  |  Студент ''<​name>''​ имеет средний балл ''<​aver_mark>''​. ​ | |  1  |  Студент 2-го курса, средний балл не ниже 4.5  |  Студент ''<​name>''​ имеет средний балл ''<​aver_mark>''​. ​ |
-|  2  |  Возраст студента 20 лет, специализации <<​hard>>​ или <<​soft>> ​ |  Студент ''<​name>''​ учится по специализации ''<​spec>''​. ​ |+|  2  |  Возраст студента 20 лет, специализации <<​hard>>​ или <<​soft>> ​ |  Студент ''<​name>''​ учится по специализации ''​<​nowiki>​<spec></​nowiki>''​. ​ |
 |  3  |  Специализация студента <<​ai>>,​ возраст -- не менее 20 лет ​ |  Возраст студента ''<​name>''​ ''<​age>''​ лет. ​ | |  3  |  Специализация студента <<​ai>>,​ возраст -- не менее 20 лет ​ |  Возраст студента ''<​name>''​ ''<​age>''​ лет. ​ |
 |  4  |  Средний балл студента 4.0, курс второй или четвертый ​ |  Студент ''<​name>''​ учится на ''<​year>''​ курсе со средним баллом 4.0.  | |  4  |  Средний балл студента 4.0, курс второй или четвертый ​ |  Студент ''<​name>''​ учится на ''<​year>''​ курсе со средним баллом 4.0.  |
Line 183: Line 182:
 |  6  |  Возраст студента 18 лет, средний балл -- выше 4.0  |  Студент ''<​name>''​ имеет средний балл ''<​aver_mark>''​. ​ | |  6  |  Возраст студента 18 лет, средний балл -- выше 4.0  |  Студент ''<​name>''​ имеет средний балл ''<​aver_mark>''​. ​ |
 |  7  |  Специализация студента <<​soft>>,​ не младше 4-го курса ​ |  Студент ''<​name>''​ учится по специализации "​soft"​ на ''<​year>''​ курсе. ​ | |  7  |  Специализация студента <<​soft>>,​ не младше 4-го курса ​ |  Студент ''<​name>''​ учится по специализации "​soft"​ на ''<​year>''​ курсе. ​ |
-|  8  |  Средний балл студента 4.5, специализация -- не <<​hard>> ​ |  Студенту ''<​name>''​ ''<​age>''​ лет, он учится по специализации ''<​spec>''​. ​ |+|  8  |  Средний балл студента 4.5, специализация -- не <<​hard>> ​ |  Студенту ''<​name>''​ ''<​age>''​ лет, он учится по специализации ''​<​nowiki>​<spec></​nowiki>''​. ​ |
 ==== Таблица 3 ==== ==== Таблица 3 ====
 ^  № варианта ​ ^  Проверяемые значения ​ ^  Сообщение,​ выводимое в консеквенте правила ​ ^ ^  № варианта ​ ^  Проверяемые значения ​ ^  Сообщение,​ выводимое в консеквенте правила ​ ^
-|  1  |  ''<​year>'',​ ''<​aver_mark>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​''​<​year>​'' ​-- integer, а в слоте ​''​<​aver_mark>​'' ​-- float. ​ | +|  1  |  ''<​year>'',​ ''<​aver_mark>'' ​ |  Студент ''<​name>'':​ тип значения в слоте <​year>​ -- integer, а в слоте <​aver_mark>​ -- float. ​ | 
-|  2  |  ''<​age>'',​ ''<​year>'' ​ |  Студент ''<​name>'':​ типы значений в слотах ​''​<age>'' ​и ''​<​year>​'' ​-- integer. ​ | +|  2  |  ''<​age>'',​ ''<​year>'' ​ |  Студент ''<​name>'':​ типы значений в слотах <age> и <​year>​ -- integer. ​ | 
-|  3  |  ''<​spec>'',​ ''<​aver_mark>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​''​<​spec>​'' ​-- string, а в слоте ​''​<​aver_mark>​'' ​-- float. ​ | +|  3  |  ''​<​nowiki>​<spec></​nowiki>'',​ ''<​aver_mark>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​<​nowiki>​<​spec>​</​nowiki> ​-- string, а в слоте <​aver_mark>​ -- float. ​ | 
-|  4  |  ''<​age>'',​ ''<​aver_mark>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​''​<age>'' ​-- integer, а в слоте ​''​<​aver_mark>​'' ​-- float. ​ | +|  4  |  ''<​age>'',​ ''<​aver_mark>'' ​ |  Студент ''<​name>'':​ тип значения в слоте <age> -- integer, а в слоте <​aver_mark>​ -- float. ​ | 
-|  5  |  ''<​year>'',​ ''<​spec>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​''​<​year>​'' ​-- integer, а в слоте ​''​<​spec>​'' ​-- string. ​ | +|  5  |  ''<​year>'',​ ''​<​nowiki>​<spec></​nowiki>'' ​ |  Студент ''<​name>'':​ тип значения в слоте <​year>​ -- integer, а в слоте ​<​nowiki>​<​spec>​</​nowiki> ​-- string. ​ | 
-|  6  |  ''<​age>'',​ ''<​spec>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​''​<age>'' ​-- integer, а в слоте ​''​<​spec>​'' ​-- string. ​ | +|  6  |  ''<​age>'',​ ''​<​nowiki>​<spec></​nowiki>'' ​ |  Студент ''<​name>'':​ тип значения в слоте <age> -- integer, а в слоте ​<​nowiki>​<​spec>​</​nowiki> ​-- string. ​ | 
-|  7  |  ''<​name>'',​ ''<​aver_mark>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​''​<​name>​'' ​-- symbol, а в слоте ​''​<​aver_mark>​'' ​-- float. ​ | +|  7  |  ''<​name>'',​ ''<​aver_mark>'' ​ |  Студент ''<​name>'':​ тип значения в слоте <​name>​ -- symbol, а в слоте <​aver_mark>​ -- float. ​ | 
-|  8  |  ''<​spec>'',​ ''<​name>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​''​<​spec>​'' ​-- string, а в слоте ​''​<​name>​'' ​-- symbol. ​ |+|  8  |  ''​<​nowiki>​<spec></​nowiki>'',​ ''<​name>'' ​ |  Студент ''<​name>'':​ тип значения в слоте ​<​nowiki>​<​spec>​</​nowiki> ​-- string, а в слоте <​name>​ -- symbol. ​ |
 ==== Таблица 4 ==== ==== Таблица 4 ====
 ^  № варианта ​ ^  Условный элемент с ограничением по возвращаемому значению ​ ^  Сообщение,​ выводимое в консеквенте правила ​ ^ ^  № варианта ​ ^  Условный элемент с ограничением по возвращаемому значению ​ ^  Сообщение,​ выводимое в консеквенте правила ​ ^
Line 204: Line 203:
 |  7  |  Оканчивает университет в возрасте старше 22 лет ​ |  Студент ''<​name>''​ оканчивает университет в возрасте старше 22 лет. ​ | |  7  |  Оканчивает университет в возрасте старше 22 лет ​ |  Студент ''<​name>''​ оканчивает университет в возрасте старше 22 лет. ​ |
 |  8  |  Поступил в университет в возрасте 18 лет ​ |  Студент ''<​name>''​ поступил в университет в возрасте 18 лет. ​ | |  8  |  Поступил в университет в возрасте 18 лет ​ |  Студент ''<​name>''​ поступил в университет в возрасте 18 лет. ​ |
 +<note tip>​Возраст поступления в университет определяется по формуле:​ $[age] - [year]$. Возраст окончания:​ $[age] + (5 - [year])$.</​note>​
 ===== Содержание отчёта ===== ===== Содержание отчёта =====
   * Цель работы.   * Цель работы.
Line 212: Line 212:
   * Общий вывод по проделанной работе.   * Общий вывод по проделанной работе.
   * Код программы.   * Код программы.
-===== Пример ​заполнения ​базы данных ​=====+===== Пример ​выполнения ​задания =====
 <code text lab2_1.CLP>​ <code text lab2_1.CLP>​
 (deftemplate student "​Атрибуты студента"​ (deftemplate student "​Атрибуты студента"​
Line 223: Line 223:
 (deffacts students "​База данных студентов"​ (deffacts students "​База данных студентов"​
   (student (name John) (age 20) (year 3) (spec "​hard"​) (aver_mark 4.5))   (student (name John) (age 20) (year 3) (spec "​hard"​) (aver_mark 4.5))
-  (student (name Jane) (age 18) (year 2) (spec "​hard"​) (aver_mark ​3.0)) +  (student (name Jane) (age 18) (year 2) (spec "​hard"​) (aver_mark ​5.0)) 
-  (student (name Jude) (age 22) (year 4) (spec "​soft"​) (aver_mark ​2.5))+  (student (name Jude) (age 22) (year 4) (spec "​soft"​) (aver_mark ​3.8))
   (student (name Toma) (age 21) (year 3) (spec "​ai"​) ​  ​(aver_mark 3.5))   (student (name Toma) (age 21) (year 3) (spec "​ai"​) ​  ​(aver_mark 3.5))
   (student (name Joan) (age 19) (year 4) (spec "​hard"​) (aver_mark 4.5))   (student (name Joan) (age 19) (year 4) (spec "​hard"​) (aver_mark 4.5))
Line 230: Line 230:
   (student (name Fred) (age 20) (year 2) (spec "​ai"​) ​  ​(aver_mark 4.0))   (student (name Fred) (age 20) (year 2) (spec "​ai"​) ​  ​(aver_mark 4.0))
   (student (name Eric) (age 24) (year 6) (spec "​hard"​) (aver_mark 4.5))   (student (name Eric) (age 24) (year 6) (spec "​hard"​) (aver_mark 4.5))
-  (student (name Mary) (age 20) (year 3) (spec "​ai"​) ​  ​(aver_mark 3.5)) +  (student (name Mary) (age 20) (year 3) (spec "​ai"​) ​  ​(aver_mark 3.6)) 
-  (student (name Beth) (age 24) (year 5) (spec "​soft"​) (aver_mark 3.5))+  (student (name Beth) (age 24) (year 5) (spec "​soft"​) (aver_mark 3.1))
 ) )
  
courses/knowledge_representation_and_artificial_intelligence_systems/lab2.txt · Last modified: 2022/12/10 09:08 (external edit)