courses:knowledge_representation_and_artificial_intelligence_systems:lab1

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
courses:knowledge_representation_and_artificial_intelligence_systems:lab1 [2019/08/02 09:19]
andrey.suchkov
courses:knowledge_representation_and_artificial_intelligence_systems:lab1 [2022/12/10 09:08] (current)
Line 10: Line 10:
  
 ^  Пункт ​ ^  Подпункт ​ ^  <<​Горячие>>​ клавиши ​ ^  Назначение команды ​ ^ ^  Пункт ​ ^  Подпункт ​ ^  <<​Горячие>>​ клавиши ​ ^  Назначение команды ​ ^
-|  File  |  New  |  ​Ctrl-N  |  Вызов редактора ​ | +|  File  |  New  |  ​<​nowiki>​^</​nowiki>​N  |  Вызов редактора ​ | 
-|  :::  |  Load  |  ​Ctrl-L  |  Загрузка конструкций из файла ​ |+|  :::  |  Load  |  ​<​nowiki>​^</​nowiki>​L  |  Загрузка конструкций из файла ​ |
 |  :::  |  Load Batch  |  -  |  Исполнение пакетного файла ​ | |  :::  |  Load Batch  |  -  |  Исполнение пакетного файла ​ |
-|  Execution ​ |  Reset  |  ​Ctrl-E  |  Инициализация конструкций ​ | +|  Execution ​ |  Reset  |  ​<​nowiki>​^</​nowiki>​E  |  Инициализация конструкций ​ | 
-|  :::  |  Run  |  ​Ctrl-R  |  Запуск МЛВ ​ | +|  :::  |  Run  |  ​<​nowiki>​^</​nowiki>​R  |  Запуск МЛВ ​ | 
-|  :::  |  Step  |  ​Ctrl-T  |  Выполнение одного шага вывода ​ |+|  :::  |  Step  |  ​<​nowiki>​^</​nowiki>​T  |  Выполнение одного шага вывода ​ |
 |  Window ​ |  Facts Window ​ |  -  |  Активация окна списка фактов ​ | |  Window ​ |  Facts Window ​ |  -  |  Активация окна списка фактов ​ |
 |  :::  |  Agenda Window ​ |  -  |  Активация окна агенды ​ | |  :::  |  Agenda Window ​ |  -  |  Активация окна агенды ​ |
Line 55: Line 55:
 (deffacts <​имя_группы_фактов>​ ["<​комментарий>"​] <​факт>​*) (deffacts <​имя_группы_фактов>​ ["<​комментарий>"​] <​факт>​*)
 </​code>​ </​code>​
-где ''<​имя_группы_фактов>''​ -- идентификатор символьного типа; ''<​комментарий>''​ -- необязательное поле комментария;​ ''<​факт>​*)''​ -- произвольная последовательность фактов,​ записанных через разделитель.+где ''<​имя_группы_фактов>''​ -- идентификатор символьного типа; ''<​комментарий>''​ -- необязательное поле комментария;​ ''<​факт>​*''​ -- произвольная последовательность фактов,​ записанных через разделитель. 
 + 
 +Пример использования конструкции ''​deffacts'':​ 
 +<​code>​ 
 +(deffacts startup "​Refrigerator Status"​ 
 +  (refrigerator light on) 
 +  (refrigerator door open)) 
 +</​code>​
  
 Факты, определенные конструкцией ''​deffacts''​ добавляются в список фактов всякий раз при выполнении команды ''​reset''​. Факты, определенные конструкцией ''​deffacts''​ добавляются в список фактов всякий раз при выполнении команды ''​reset''​.
  
-Для задания правил используется конструкция defrule со следующим синтаксисом:​+Для задания правил используется конструкция ​'' ​defrule'' ​со следующим синтаксисом:​
 <​code>​ <​code>​
 (defrule <​имя_правила>​ ["<​комментарий>"​] (defrule <​имя_правила>​ ["<​комментарий>"​]
   [<​объявление>​]   [<​объявление>​]
-  <​условный элемент>​* ; Левая часть правила (антецедент)+  <​условный элемент>​* ​ ; Левая часть правила (антецедент)
 => =>
-  <​действие>​*) ; Правая часть правила (консеквент)+  <​действие>​*) ​ ; Правая часть правила (консеквент)
 </​code>​ </​code>​
 где ''<​имя_правила>''​ -- идентификатор символьного типа, уникальный для данной группы правил;​ ''<​комментарий>''​ -- необязательное поле комментария;​ ''<​условный элемент>​*''​ -- произвольная последовательность условных элементов;​ ''<​действие>​*''​ -- произвольная последовательность действий. где ''<​имя_правила>''​ -- идентификатор символьного типа, уникальный для данной группы правил;​ ''<​комментарий>''​ -- необязательное поле комментария;​ ''<​условный элемент>​*''​ -- произвольная последовательность условных элементов;​ ''<​действие>​*''​ -- произвольная последовательность действий.
Line 71: Line 78:
 Пример задания правила:​ Пример задания правила:​
 <​code>​ <​code>​
-(defrule R1+(defrule R1 "​Пример задания правила"​
   (days 2)   (days 2)
   (works 100)   (works 100)
Line 86: Line 93:
   - Запустить систему CLIPS (файл //​clipswin.exe//​). Активизировать окно просмотра текущего списка фактов (подпункт <<​Facts Window>>​ пункта <<​Windows>>​ главного меню). Выполнить следующую последовательность действий,​ фиксируя после каждого шага состояние списка фактов:​   - Запустить систему CLIPS (файл //​clipswin.exe//​). Активизировать окно просмотра текущего списка фактов (подпункт <<​Facts Window>>​ пункта <<​Windows>>​ главного меню). Выполнить следующую последовательность действий,​ фиксируя после каждого шага состояние списка фактов:​
     * сбросить систему в исходное состояние командой ''​(clear)'';​     * сбросить систему в исходное состояние командой ''​(clear)'';​
-    * выполнить начальную установку командой (reset) или комбинацией клавиш ​Ctrl-E; +    * выполнить начальную установку командой ​''​(reset)'' ​или комбинацией клавиш ​^E; 
-    * ввести 3 любых упорядоченных факта командой (assert), например:​ \\ ''​CLIPS> ​(assert (n n) (m m) (p p))'';​+    * ввести 3 любых упорядоченных факта командой ​''​(assert)''​, например:​ \\ ''​(assert (n n) (m m) (p p))'';​
     * повторно выполнить сброс командой ''​(reset)'';​     * повторно выполнить сброс командой ''​(reset)'';​
     * установить 3 ранее вводимых упорядоченных факта в качестве исходных фактов,​ используя конструкцию ''​(deffacts)'';​     * установить 3 ранее вводимых упорядоченных факта в качестве исходных фактов,​ используя конструкцию ''​(deffacts)'';​
Line 97: Line 104:
 V & W => U; V & W => U;
 </​code>​ </​code>​
-    * выполнить по шагам активизацию правил (используя <<​горячую>>​ комбинацию ​Ctrl-T).+    * выполнить по шагам активизацию правил (используя <<​горячую>>​ комбинацию ​^T).
 ==== 2. Разработка демонстрационной экспертной системы ==== ==== 2. Разработка демонстрационной экспертной системы ====
   * Сформировать,​ пользуясь редактором CLIPS, базу знаний демонстрационной ЭС и сохранить ее в файле //​rulebase.CLP//​. Предметную область экспертной системы выбрать по согласованию с преподавателем.   * Сформировать,​ пользуясь редактором CLIPS, базу знаний демонстрационной ЭС и сохранить ее в файле //​rulebase.CLP//​. Предметную область экспертной системы выбрать по согласованию с преподавателем.
Line 115: Line 122:
 ===== Пример выполнения задания ===== ===== Пример выполнения задания =====
 Данная ЭС вырабатывает рекомендации студенту накануне зачета и имеет четыре входные переменные (<<​число дней до зачета>>,​ <<​количество несделанных лабораторных работ (в %)>>, <<​температура на улице>>​ и <<​наличие осадков>>​),​ две промежуточные (<<​свободное время>>​ и <<​погода>>​) и выходную переменную (<<​рекомендуемые действия>>​). Диаграмма зависимости переменных показана на рис. 1, в скобках указаны возможные имена переменных. Данная ЭС вырабатывает рекомендации студенту накануне зачета и имеет четыре входные переменные (<<​число дней до зачета>>,​ <<​количество несделанных лабораторных работ (в %)>>, <<​температура на улице>>​ и <<​наличие осадков>>​),​ две промежуточные (<<​свободное время>>​ и <<​погода>>​) и выходную переменную (<<​рекомендуемые действия>>​). Диаграмма зависимости переменных показана на рис. 1, в скобках указаны возможные имена переменных.
-{{ :​courses:​knowledge_representation_and_artificial_intelligence_systems:​lab1_eg.png | Рисунок 1 – Структура демострационной экспертной системы }}+{{ :​courses:​knowledge_representation_and_artificial_intelligence_systems:​lab1_eg.png?​nolink ​|Рисунок 1 – Структура демострационной экспертной системы}}
 ==== Реализация ЭС в среде CLIPS ==== ==== Реализация ЭС в среде CLIPS ====
 <file text rulebase.CLP>​ <file text rulebase.CLP>​
courses/knowledge_representation_and_artificial_intelligence_systems/lab1.1564737573.txt.gz · Last modified: 2022/12/10 09:08 (external edit)