This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
courses:knowledge_representation_and_artificial_intelligence_systems:lab3 [2019/07/12 19:44] 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 53: | Line 53: | ||
===== Порядок выполнения работы ===== | ===== Порядок выполнения работы ===== | ||
- 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. Зафиксировать и объяснить полученные результаты. | ||
===== Варианты заданий ===== | ===== Варианты заданий ===== |