courses:knowledge_representation_and_artificial_intelligence_systems:lab3

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:lab3 [2019/07/12 12:29]
andrey.suchkov [Содержание отчёта]
courses:knowledge_representation_and_artificial_intelligence_systems:lab3 [2022/12/10 09:08] (current)
Line 1: Line 1:
 ====== Лабораторная работа №3: Изучение стратегий разрешения конфликтов в продукционных системах ====== ====== Лабораторная работа №3: Изучение стратегий разрешения конфликтов в продукционных системах ======
 ===== Цель работы ===== ===== Цель работы =====
-Изучение стратегий разрешения конфликтов в продукционных системах.+Изучение ​различных ​стратегий разрешения конфликтов в продукционных системах.
 ===== Основные теоретические положения ===== ===== Основные теоретические положения =====
 При реализации прямого вывода в продукционных базах знаний машина логических выводов сопоставляет левые части (антецеденты) правил с базой данных и помещает правила,​ антецеденты которых удовлетворяются,​ в агенду (конфликтное множество). //​Агенда//​ представляет собой список всех правил,​ условия которых удовлетворяются,​ но которые еще не были выполнены. Агенда работает аналогично стеку -- правило,​ которое должно быть выполнено первым является верхним правилом в агенде. Когда правило становится активным (условия в его левой части удовлетворяются),​ оно помещается в агенду в соответствии со следующими правилами:​ При реализации прямого вывода в продукционных базах знаний машина логических выводов сопоставляет левые части (антецеденты) правил с базой данных и помещает правила,​ антецеденты которых удовлетворяются,​ в агенду (конфликтное множество). //​Агенда//​ представляет собой список всех правил,​ условия которых удовлетворяются,​ но которые еще не были выполнены. Агенда работает аналогично стеку -- правило,​ которое должно быть выполнено первым является верхним правилом в агенде. Когда правило становится активным (условия в его левой части удовлетворяются),​ оно помещается в агенду в соответствии со следующими правилами:​
Line 30: Line 30:
 **Стратегия <<​вширь>>​.** Вновь активируемые правила помещаются ниже всех правил с такой же значимостью. Например,​ пусть факт f-1 активирует правила rule-1 и rule-2, а факт f-2 активирует правила rule-3 и rule-4. Тогда, если f-1 устанавливается раньше,​ чем f-2, то rule-1 и rule-2 окажутся в агенде выше правил rule-3 и rule-4. Однако,​ положение правила rule-1 относительно правила rule-2 и правила rule-3 относительно правила rule-4 будет произвольным. **Стратегия <<​вширь>>​.** Вновь активируемые правила помещаются ниже всех правил с такой же значимостью. Например,​ пусть факт f-1 активирует правила rule-1 и rule-2, а факт f-2 активирует правила rule-3 и rule-4. Тогда, если f-1 устанавливается раньше,​ чем f-2, то rule-1 и rule-2 окажутся в агенде выше правил rule-3 и rule-4. Однако,​ положение правила rule-1 относительно правила rule-2 и правила rule-3 относительно правила rule-4 будет произвольным.
  
-**Стратегия <<​простоты>>​.** Среди правил одинаковой значимости,​ вновь активируемые правила помещаются над всеми правилами с равной или большей специфичностью (specificity). Специфичность правила определяется числом сравнений,​ которые должны быть выполнены в левой части правила. Каждое сравнение с константой или предварительно связанной переменной увеличивает специфичность на единицу. Каждый вызов функции,​ сделанный из левой части правила в условном элементе с предикатным ограничением (:), ограничением возвращаемым значением (<​nowiki>​=</​nowiki>​) или УЭ-проверкой (''​test''​) увеличивает специфичность на единицу. Булевы функции <<​и>>,​ <<​или>>,​ <<​не>>​ не увеличивают специфичность правила,​ но их аргументы увеличивают. Вызовы функций,​ выполняемые из функций не увеличивают специфичность. Например,​ следующее правило:​+**Стратегия <<​простоты>>​.** Среди правил одинаковой значимости,​ вновь активируемые правила помещаются над всеми правилами с равной или большей специфичностью (specificity). Специфичность правила определяется числом сравнений,​ которые должны быть выполнены в левой части правила. Каждое сравнение с константой или предварительно связанной переменной увеличивает специфичность на единицу. Каждый вызов функции,​ сделанный из левой части правила в условном элементе с предикатным ограничением (''​:''​), ограничением возвращаемым значением (''​<​nowiki>​=</​nowiki>​''​) или УЭ-проверкой (''​test''​) увеличивает специфичность на единицу. Булевы функции <<​и>>,​ <<​или>>,​ <<​не>>​ не увеличивают специфичность правила,​ но их аргументы увеличивают. Вызовы функций,​ выполняемые из функций не увеличивают специфичность. Например,​ следующее правило:​
 <​code>​ <​code>​
 (defrule example (defrule example
Line 50: Line 50:
 ===== Постановка задачи ===== ===== Постановка задачи =====
 Исследование процесса выполнения заданного набора правил на заданном множестве фактов при различных стратегиях разрешения конфликтов. Исследование процесса выполнения заданного набора правил на заданном множестве фактов при различных стратегиях разрешения конфликтов.
-==== Варианты заданий ==== +
-^  № варианта ​ ^  Набор правил ​ ^ +
-|  1  |  <​code>​ +
-(a)(b) => (m) [5000] +
-(a)(c) => (n) [6000] +
-(b)(c)(d) => (p) [5000] +
-(a)(d)(c) => (r) [6000] +
-(m)(n) => (s) [6000] +
-(n)(p)(r) => (t) [5000] +
-</​code> ​ | +
-|  2  |  <​code>​ +
-(a)(d)(e) => (m) [5000] +
-(c)(d) => (p) [5000] +
-(c)(b)(d) => (r) [6000] +
-(b)(a) => (n) [6000] +
-(p)(m) => (t) [6000] +
-(r)(p)(m) => (s) [5000] +
-</​code> ​ | +
-|  3  |  <​code>​ +
-(a)(b)(c) => (r) [5000] +
-(e)(c)(d) => (p) [5000] +
-(a)(b) => (m) [5000] +
-(a)(e) => (n) [5000] +
-(m)(n)(r) => (s) [5000] +
-(m)(p) => (t) [6000] +
-</​code> ​ | +
-|  4  |  <​code>​ +
-(e)(d)(a) => (p) [8000] +
-(b)(d) => (m) [8000] +
-(a)(c) => (n) [8000] +
-(a)(d)(b) => (r) [8000] +
-(m)(p) => (t) [6000] +
-(a)(n)(r) => (s) [6000] +
-</​code> ​ | +
-|  5  |  <​code>​ +
-(a)(d)(e) => (p) [6000] +
-(b)(c) => (m) [7000] +
-(d)(a) => (n) [7000] +
-(e)(d)(c) => (r) [6000] +
-(b)(n) => (s) [7000] +
-(n)(p)(r) => (t) [7000] +
-</​code> ​ | +
-|  6  |  <​code>​ +
-(c)(d)(a) => (m) [4000] +
-(c)(e) => (p) [4000] +
-(c)(b)(d) => (r) [4000] +
-(b)(a) => (n) [4000] +
-(p)(c) => (t) [6000] +
-(a)(p)(m) => (t) [5000] +
-</​code> ​ | +
-|  7  |  <​code>​ +
-(b)(c)(d) => (r) [3000] +
-(a)(b) => (m) [3000] +
-(e)(c)(d) => (p) [3000] +
-(a)(e) => (n) [3000] +
-(m)(e)(r) => (t) [5000] +
-(m)(b) => (s) [5000] +
-</​code> ​ | +
-|  8  |  <​code>​ +
-(a)(b)(c) => (r) [2000] +
-(e)(c)(d) => (p) [2000] +
-(a)(d) => (m) [3000] +
-(a)(e) => (n) [3000] +
-(c)(n)(r) => (t) [4000] +
-(m)(d) => (s) [5000] +
-</​code> ​ |+
 ===== Порядок выполнения работы ===== ===== Порядок выполнения работы =====
   - Cформировать с помощью конструкции ''​deffacts''​ исходный набор из пяти произвольных фактов (обозначаемых как ''​(a)'',​ ''​(b)'',​ ''<​nowiki>​(c)</​nowiki>'',​ ''​(d)''​ и ''​(e)''​).   - Cформировать с помощью конструкции ''​deffacts''​ исходный набор из пяти произвольных фактов (обозначаемых как ''​(a)'',​ ''​(b)'',​ ''<​nowiki>​(c)</​nowiki>'',​ ''​(d)''​ и ''​(e)''​).
-  - В соответствии с вариантом задания ​(табл. 3.1) сформировать набор правил,​ где ''​(n)'',​ ''​(m)'',​ ''​(p)'',​ ''<​nowiki>​(r)</​nowiki>'',​ ''​(s)''​ и ''​(t)''​ -- некоторые произвольно выбранные факты (в квадратных скобках указана значимость правила). Сохранить подготовленные конструкции в файле lab3.CLP. +  - В соответствии с вариантом задания сформировать набор правил,​ где ''​(n)'',​ ''​(m)'',​ ''​(p)'',​ ''<​nowiki>​(r)</​nowiki>'',​ ''​(s)''​ и ''​(t)''​ -- некоторые произвольно выбранные факты (в квадратных скобках указана значимость правила). Сохранить подготовленные конструкции в файле ​//lab3.CLP//
-  - Загрузить среду CLIPS . Активизировать окна <<​Facts Window>>​ и <<​Agenda Window>>​. С помощью команды Load Constructs меню File (или <<​горячей>>​ комбинации ​Ctrl-L) загрузить факты и правила из файла lab3.CLP. +  - Загрузить среду CLIPS . Активизировать окна <<​Facts Window>>​ и <<​Agenda Window>>​. С помощью команды Load Constructs меню File (или <<​горячей>>​ комбинации ​^L) загрузить факты и правила из файла ​//lab3.CLP//
-  - Выполнить начальную установку командой ''​(run)''​ (<<​горячая>>​ комбинация -- Ctrl-U). Зафиксировать состояние списка фактов и агенды. +  - Выполнить начальную установку командой ''​(reset)''​ (<<​горячая>>​ комбинация -- ^E). Зафиксировать состояние списка фактов и агенды. 
-  - Выполнить в пошаговом режиме обработку правил (<<​горячая>>​ комбинация -- Ctrl-T), фиксируя после каждого шага состояние агенды и списка фактов.+  - Выполнить в пошаговом режиме обработку правил (<<​горячая>>​ комбинация -- ^T), фиксируя после каждого шага состояние агенды и списка фактов.
   - Повторить действия п. 4 и 5 при различных стратегиях разрешения конфликтов. Для изменения стратегий спользовать пункт Options меню Execution. Зафиксировать и объяснить полученные результаты.   - Повторить действия п. 4 и 5 при различных стратегиях разрешения конфликтов. Для изменения стратегий спользовать пункт Options меню Execution. Зафиксировать и объяснить полученные результаты.
 +===== Варианты заданий =====
 +^  № варианта ​ ^  Набор правил ​ ^
 +|  1  |  (a)(b) <​nowiki>​=></​nowiki>​ (m) [5000] \\ (a)<​nowiki>​(c)</​nowiki>​ <​nowiki>​=></​nowiki>​ (n) [6000] \\ (b)<​nowiki>​(c)</​nowiki>​(d) <​nowiki>​=></​nowiki>​ (p) [5000] \\ (a)(d)<​nowiki>​(c)</​nowiki>​ <​nowiki>​=></​nowiki>​ <​nowiki>​(r)</​nowiki>​ [6000] \\ (m)(n) <​nowiki>​=></​nowiki>​ (s) [6000] \\ (n)(p)<​nowiki>​(r)</​nowiki>​ <​nowiki>​=></​nowiki>​ (t) [5000] ​ |
 +|  2  |  (a)(d)(e) <​nowiki>​=></​nowiki>​ (m) [5000] \\ <​nowiki>​(c)</​nowiki>​(d) <​nowiki>​=></​nowiki>​ (p) [5000] \\ <​nowiki>​(c)</​nowiki>​(b)(d) <​nowiki>​=></​nowiki>​ <​nowiki>​(r)</​nowiki>​[6000] \\ (b)(a) <​nowiki>​=></​nowiki>​ (n) [6000] \\ (p)(m) <​nowiki>​=></​nowiki>​ (t) [6000] \\ <​nowiki>​(r)</​nowiki>​(p)(m) <​nowiki>​=></​nowiki>​ (s) [5000] ​ |
 +|  3  |  (a)(b)<​nowiki>​(c)</​nowiki>​ <​nowiki>​=></​nowiki>​ <​nowiki>​(r)</​nowiki>​ [5000] \\ (e)<​nowiki>​(c)</​nowiki>​(d) <​nowiki>​=></​nowiki>​ (p) [5000] \\ (a)(b) <​nowiki>​=></​nowiki>​ (m) [5000] \\ (a)(e) <​nowiki>​=></​nowiki>​ (n) [5000] \\ (m)(n)<​nowiki>​(r)</​nowiki>​ <​nowiki>​=></​nowiki>​ (s) [5000] \\ (m)(p) <​nowiki>​=></​nowiki>​ (t) [6000] ​ |
 +|  4  |  (e)(d)(a) <​nowiki>​=></​nowiki>​ (p) [8000] \\ (b)(d) <​nowiki>​=></​nowiki>​ (m) [8000] \\ (a)<​nowiki>​(c)</​nowiki>​ <​nowiki>​=></​nowiki>​ (n) [8000] \\ (a)(d)(b) <​nowiki>​=></​nowiki>​ <​nowiki>​(r)</​nowiki>​ [8000] \\ (m)(p) <​nowiki>​=></​nowiki>​ (t) [6000] \\ (a)(n)<​nowiki>​(r)</​nowiki>​ <​nowiki>​=></​nowiki>​ (s) [6000] ​ |
 +|  5  |  (a)(d)(e) <​nowiki>​=></​nowiki>​ (p) [6000] \\ (b)<​nowiki>​(c)</​nowiki>​ <​nowiki>​=></​nowiki>​ (m) [7000] \\ (d)(a) <​nowiki>​=></​nowiki>​ (n) [7000] \\ (e)(d)<​nowiki>​(c)</​nowiki>​ <​nowiki>​=></​nowiki>​ <​nowiki>​(r)</​nowiki>​ [6000] \\ (b)(n) <​nowiki>​=></​nowiki>​ (s) [7000] \\ (n)(p)<​nowiki>​(r)</​nowiki>​ <​nowiki>​=></​nowiki>​ (t) [7000] ​ |
 +|  6  |  <​nowiki>​(c)</​nowiki>​(d)(a) <​nowiki>​=></​nowiki>​ (m) [4000] \\ <​nowiki>​(c)</​nowiki>​(e) <​nowiki>​=></​nowiki>​ (p) [4000] \\ <​nowiki>​(c)</​nowiki>​(b)(d) <​nowiki>​=></​nowiki>​ <​nowiki>​(r)</​nowiki>​ [4000] \\ (b)(a) <​nowiki>​=></​nowiki>​ (n) [4000] \\ (p)<​nowiki>​(c)</​nowiki>​ <​nowiki>​=></​nowiki>​ (t) [6000] \\ (a)(p)(m) <​nowiki>​=></​nowiki>​ (t) [5000] ​ |
 +|  7  |  (b)<​nowiki>​(c)</​nowiki>​(d) <​nowiki>​=></​nowiki>​ <​nowiki>​(r)</​nowiki>​ [3000] \\ (a)(b) <​nowiki>​=></​nowiki>​ (m) [3000] \\ (e)<​nowiki>​(c)</​nowiki>​(d) <​nowiki>​=></​nowiki>​ (p) [3000] \\ (a)(e) <​nowiki>​=></​nowiki>​ (n) [3000] \\ (m)(e)<​nowiki>​(r)</​nowiki>​ <​nowiki>​=></​nowiki>​ (t) [5000] \\ (m)(b) <​nowiki>​=></​nowiki>​ (s) [5000] ​ |
 +|  8  |  (a)(b)<​nowiki>​(c)</​nowiki>​ <​nowiki>​=></​nowiki>​ <​nowiki>​(r)</​nowiki>​ [2000] \\ (e)<​nowiki>​(c)</​nowiki>​(d) <​nowiki>​=></​nowiki>​ (p) [2000] \\ (a)(d) <​nowiki>​=></​nowiki>​ (m) [3000] \\ (a)(e) <​nowiki>​=></​nowiki>​ (n) [3000] \\ <​nowiki>​(c)</​nowiki>​(n)<​nowiki>​(r)</​nowiki>​ <​nowiki>​=></​nowiki>​ (t) [4000] \\ (m)(d) <​nowiki>​=></​nowiki>​ (s) [5000] ​ |
 ===== Содержание отчёта ===== ===== Содержание отчёта =====
   * Цель работы.   * Цель работы.
   * Краткое изложение основных теоретических понятий.   * Краткое изложение основных теоретических понятий.
   * Постановка задачи с кратким описанием порядка выполнения работы.   * Постановка задачи с кратким описанием порядка выполнения работы.
-  * Пошаговая обработка правил,​ оформленная в виде таблицы для каждой стратегии,​ с выводами по каждой из них.+  * Пошаговая обработка правил,​ оформленная в виде таблицы для каждой стратегии,​ с краткими ​выводами по каждой из них.
   * Общий вывод по проделанной работе.   * Общий вывод по проделанной работе.
   * Код программы.   * Код программы.
courses/knowledge_representation_and_artificial_intelligence_systems/lab3.1562934541.txt.gz · Last modified: 2022/12/10 09:08 (external edit)