8118

Логический вывод в системе CLIPS. Стратегии разрешения конфликтов

Лекция

Информатика, кибернетика и программирование

Логический вывод в системеCLIPS. Стратегии разрешения конфликтов. (Конспект) Базовый цикл работы МЛВ в системеCLIPS: 1. Работа МЛВ останавливается, если достигнут предел активации правил или нет текущего фокуса. В противном случае, для в...

Русский

2013-02-04

146 KB

20 чел.

Логический вывод в системе CLIPS.

Стратегии разрешения конфликтов.

(Конспект)

Базовый цикл работы МЛВ в системе CLIPS:

1. Работа МЛВ останавливается, если достигнут предел активации правил или нет текущего фокуса. В противном случае, для выполнения выбирается верхнее правило агенды того модуля, которому принадлежит текущий фокус. Если в этой агенде нет правил, текущий фокус извлекается из стека фокусов и управление переходит к следующему модулю. Если стек фокусов пуст, то выполнение останавливается, в противном случае вновь выполняется шаг 1.

2. Выполняются операторы, содержащиеся в консеквенте выбранного правила. Использование в консеквенте правила функции return не может переместить текущий фокус из стека фокусов. Счетчик числа правил инкрементируется для контроля предела активации правил.

3. Результатом шага 2 может быть активация или деактивация правил. Активированные правила (у которых удовлетворяется условия в антецеденте) помещаются в агенду того модуля, в котором они определены. Размещение в агенде определяется значимостью (salience) правила и текущей стратегией разрешения конфликтов. Деактивированные правила удаляются из агенды.

4. При использовании динамических значимостей, значения значимостей всех правил, содержащихся в агенде переоцениваются. Цикл повторяется с шага 1.

Агенда представляет собой список правил, условия которых удовлетворяются, но которые еще не были выполнены. Каждый модуль имеет собственную агенду. При извлечении правил агенда работает аналогично стеку – первым выполняется правило, находящееся на вершине агенды. Когда правило становится активным (условия в его левой части удовлетворяются), оно помещается в агенду в соответствии со следующими правилами:

1. Вновь активируемые правила помещаются над всеми правилами с более низкой значимостью (salience) и ниже всех правил с более высокой значимостью.

2. Для определения места среди правил равной значимости используется текущая стратегия разрешения конфликта.

3. Если в результате добавления или удаления факта одновременно активизируются несколько правил и шаги 1 и 2 не позволяют выполнить упорядочение, то эти правила упорядочиваются между собой произвольно.

Значимость позволяет пользователю назначать правилу приоритет, который учитывается при его помещении в агенду. Первым выбирается и срабатывает правило с максимальной значимостью. Значимость может принимать целое значение в диапазоне от -10000 до +10000. По умолчанию ее значение равно 0. Для явного назначения правилу значимости используется оператор:

(declare <rule- salience>),

который добавляется в левую часть правила и размещается перед первым условным элементом, например:

(defrule r1

(declare (salience 500))

(fire test-1)

=>

(printout t "Rule r1 firing." crlf))

Значение значимости может назначаться в один из трех моментов: при определении правила, при активизации правила и в каждом цикле выполнения (последние два случая соответствуют динамической значимости). По умолчанию значение значимости назначается только при определении правила. Для изменения такого поведения может использоваться команда set-salience-evaluation.

Стратегии разрешения конфликтов. В CLIPS поддерживается семь стратегий разрешения конфликтов: “вглубь” (depth), “вширь” (breadth), “простоты” (simplicity), “сложности” (complexity), LEX, MEA и случайного выбора (random). По умолчанию используется стратегия “вглубь”. Текущая стратегия может быть установлена, используя пункт меню “Ececution/Options” оконного интерфейса, или командой set-strategy. При этом агенда переупорядочивается на основе новой стратегии. Синтаксис команды:

(set-strategy <strategy>),

где <strategy>::= depthbreadthsimplicitycomplexity lexmearandom.

По умолчанию используется стратегия depth.

Стратегия “вглубь”. Вновь активируемые правила помещаются в агенду над всеми правилами такой же значимости. Например, пусть факт f-1 активирует правила rule-1 и rule-2, а факт f-2 активирует правила rule-3 и rule-4. Тогда если f-1 устанавливается раньше, чем f-2, то rule-3 и rule-4 окажутся в агенде выше правил rule-1 и rule-2. Однако положение правила 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). Специфичность правила определяется числом сравнений, которые должны быть выполнены в левой части правила.

Специфичность инкрементируется при:

  •  каждом сравнении с константой или предварительно связанной переменной;
  •  каждом вызове функции, сделанном из левой части правила в условном элементе с предикатным ограничением (:), ограничением возвращаемым значением (=) или УЭ-проверкой (test).

Булевы функции “и”, “или”, “не” не увеличивают специфичность правила, но их аргументы увеличивают. Вызовы функций, выполняемые из функций, не увеличивают специфичность. Например, следующее правило:

(defrule example

(item ?x ?y ?x)

(test (and(numberp ?x) (> ?x (+ 10 ?y)) (< ?x 100)))

=>)

имеет специфичность 5 (считаются операторы (item ?x ?y ?x),  ?x,  numberp,  >,  <).

Стратегия “сложности”. Среди правил одинаковой значимости, вновь активируемые правила помещаются над всеми правилами с равной или меньшей специфичностью.

Стратегия LEX. Для определения места правила в агенде среди правил одинаковой значимости в первую очередь используется новизна образцов, активирующих данное правило. Каждый факт и экземпляр в БД помечаются “временным тегом”, указывающим его новизну по отношению ко всем другим фактам и экземплярам в системе. Для определения местоположения правила в агенде образцы (факты или экземпляры), связанные с активацией каждого правила сортируются по убыванию новизны. Правило с более поздним образцом помещается выше правил с более ранними образцами. Чтобы определить относительный порядок размещения двух правил, отсортированные временные теги образцов, активирующих правила, сравниваются попарно, начиная с самых больших значений. Сравнение продолжается до тех пор, пока не будет обнаружено, что временной тег одной активации больше соответствующего временного тега другой активации. Правило с большим значением временного тега помещается в агенду выше другого правила. Данная стратегия поясняется примером на рис. 16.1. В данном случае раньше сработает правило Rule1, т.к. временной тег образца, связанного с его третьим условным элементом (8) больше, чем временной тег соответствующего образца у правила Rule2 (6).

Если одно правило имеет больше образцов, чем другое, а все сравниваемые временные теги идентичны, то правило с большим числом временных тегов помещается выше. Если два правила имеют равную новизну, правило с более высокой специфичностью помещается выше правила с более низкой специфичностью.

Стратегия MEA. Для определения места правила в агенде среди правил равной значимости в первую очередь используется временной тег образца, связанного с первым условным элементом в правиле. Правило, у которого этот временной тег больше временных тегов, связанных с первыми условными элементами других правил, помещается в агенду выше них. Если временные теги первых образцов равны, то для определения места правила используется стратегия LEX. В примере на рис. 16.2 раньше сработает правило Rule1.

Стратегия случайного выбора. Каждому правилу сопоставляется случайное число, которое используется для определения его местоположения в агенде среди правил равной значимости. Это случайное число сохраняется при изменении стратегии, а в случае возврата к случайной стратегии разрешения конфликта восстанавливается тот же порядок среди правил, которые находились в агенде, когда стратегия была изменена.

Пример построения ЭС в среде CLIPS 

Ниже в качестве примера приведен фрагмент простой ЭС в среде CLIPS, определяющей наличие у студента свободного времени в зависимости от количества несделанных лабораторных работ и оставшегося до зачета времени:

(defrule data-input

(initial-fact)

=>

(printout t crlf "Введите число дней до зачета (целое значение): ")

 (bind ?days (read))

(if (numberp ?days)

then (assert (days ?days))

else (printout t "Введите число" crlf))

 (printout t crlf "Введите число несделанных лабораторных работ (в %)")

 (bind ?works (read))

 (assert (works ?works)))

(defrule R1

(days ?days)

(works ?works)

(test (and (= ?days 1) (<> ?works 0)))

=>

(printout t crlf "Свободного времени нет" crlf)

(assert (freetime "no")))

(defrule R2

(days ?days)

(works ?works)

(test (and (= ?days 2) (>= ?works 10)))

=>

(printout t crlf crlf "Свободного времени нет" crlf)

(assert (freetime "no")))

Правило data-input обеспечивает ввод исходных значений числа оставшихся до зачета дней и количества несделанных работ. Оно инициируется исходным фактом (initial-fact) в рабочей памяти и выдает приглашение на ввод значения. Команда bind осуществляет занесение введенных значений в факты рабочей памяти. Кроме того, для переменной выполняется контроль типа введенного значения.


 

А также другие работы, которые могут Вас заинтересовать

75042. Широкая масленица 93 KB
  Тему для своего исследования мы выбрали не случайно, поскольку решили ставить коллекцию на тему «Масленица». Ведь для того, чтобы наиболее полно и достоверно отобразить народные обычаи в праздновании Масленицы на сцене, их нужно всесторонне изучить.
75043. Солнечная система и ее загадки 41 KB
  Происхождение Солнечной системы Современные методы исследования позволяют узнавать все новые и новые факты о Вселенной. Так до сих пор ведутся споры о происхождении Солнечной системы. Образование Солнечной системы из облака пыли и газа.
75044. Исторические личности периода Отечественной войны 1812 года 26.5 KB
  Задачи: Закрепить представления детей о том кто такие защитники Отечества полководцы. Познакомить детей с подвигами русских полководцев и с Бородинским сражением. Развивать речь детей обогащать словарь. Воспитывать у детей чувство гордости и уважение к защитникам Отечества.
75046. Жизнь зайца в домашних условиях 260 KB
  В июне месяце, окашивая дачу, папа выкосил трех маленьких зайчат, двое из которых шустро убежали в траву, а вот самый маленький стал новым членом нашей семьи, чтобы он не погиб от лап своих врагов решили: маленького зайчонка спасти от гибели и, выкормив его, понаблюдать за процессом его роста в домашних условиях.
75047. Немецкие автомобили 934.5 KB
  Ich heiße Eshow Wlad. Ich lerne in der Klasse 6. Unser Thema heißt „Das Deutsche Auto“. Im Jahre 2011 (zwanzighundertelf) feierte das Auto sein Jubiläum. Es ist 125 (hundertfünfundzwanzig) Jahre alt. Der vorige Sommer von 7 (siebenten) Mai bis zum 10 (zehnten) September hieß „der Autosommer“.
75048. Русская и немецкая школы. Какие они? 984.5 KB
  Ich heiße Antonowa Anna. Ich lerne in der Klasse 6 «А». Ab 2. Klasse lerne ich Deutsch. Das ist mein Lieblingsfach. Besonders gefiel mir das Thema “Deutsche Schülen. Wie sind sie?” Darüber diskutieren wir viel mit unseren Mitschülern.
75049. ВОЗНИКНОВЕНИЕ ЧИСЕЛ 695.5 KB
  В современном мире человек постоянно пользуется числами, даже не задумываясь об их происхождении. Без знания прошлого нельзя понять настоящее. Поэтому целью данной работы является исследование истории возникновения чисел, связанной с необходимостью выражения всех чисел знаками.