ВУЗ:
Составители:
Рубрика:
Свойство auto-focus позволяет автоматически выполняться команде focus при каждой активации правила.
План решения задачи – это список всех правил, имеющих удовлетворенные условия при некотором, текущем состоянии
списка фактов и объектов (которые еще не были выполнены). Каждый модуль имеет свой собственный план решения задачи.
Выполнение плана подобно стеку (верхнее правило плана всегда будет выполнено первым). Когда активируется новое пра-
вило, оно размещается в плане решения задачи, руководствуясь следующими факторами:
1. Только активированное правило помещается выше всех правил с меньшим приоритетом и ниже всех правил с боль-
шим приоритетом.
2. Среди правил с одинаковым приоритетом используется текущая стратегия разрешения конфликтов для определения
размещения среди других правил с одинаковым приоритетом.
3. Если правило активировано вместе с несколькими другими правилами, добавлением или исключением некоторого
факта и с помощью шагов 1 и 2 нельзя определить порядок правила в плане решения задачи, то правило произвольным обра-
зом упорядочивается вместе с другими правилами, которые были активированы. Заметьте, что в этом случае порядок, в ко-
тором правила были добавлены в систему, оказывает произвольный эффект на разрешение конфликта (который в высшей
степени зависит от текущей реализации правил).
CLIPS поддерживает семь различных стратегий разрешения конфликтов: стратегия глубины (depth strategy), стратегия
ширины (breadth strategy), стратегия упрощения (simplicity strategy), стратегия усложнения (complexity strategy), LEX (LEX
strategy), MEA (MEA strategy) и случайная стратегия (random strategy). По умолчанию в CLIPS установлена стратегия глуби-
ны. Текущая стратегия может быть установлена командой set-strategy (которая переупорядочит текущий план решения зада-
чи, базируясь на новой стратегии).
• Стратегия глубины. Только что активированное правило помещается выше всех правил с таким же приоритетом. На-
пример, допустим, что факт – А активировал правила 1 и 2 и факт Б активировал правило 3 и правило 4, тогда, если факт А
добавлен перед фактом Б, в плане решения задачи правила 3 и 4 будут располагаться выше, чем правила 1 и 2. Однако пози-
ция правила 1 относительно правила 2 и правила 3 относительно правила 4 будет произвольной.
• Стратегия ширины. Только что активированное правило помещается ниже всех правил с таким же приоритетом. Например,
допустим, что факт А активировал правила 1 и 2 и факт Б активировал правила 3 и 4, тогда, если факт А добавлен перед фак-
том В, в плане решения задачи правила 1 и 2 будут располагаться выше, чем правила 3 и 4. Однако позиция правила 1 отно-
сительно правила 2 и правила 3 относительно правила 4 будет произвольной.
• Стратегия упрощения. Между всеми правилами с одинаковым приоритетом только что активированные правила раз-
мещаются выше всех активированных правил с равной или большей определенностью (specificity). Определенность правила
вычисляется по числу сопоставлений, которые нужно сделать в левой части правила. Каждое сопоставление с константой
или заранее связанной с фактом переменной добавляет к определенности единицу. Каждый вызов функции в левой части
правила, являющийся частью условных элементов : , = или test, также добавляет к определенности единицу. Логические
функции and, or и not не увеличивают определенность правила, но их аргументы могут это сделать. Вызовы функций, сде-
ланные внутри функций, не увеличивают определенность правила. Например, следующее правило имеет определенность,
равную 5.
(defrule example
(item ?x ?y ?x)
(test (and (numberp ?x) (> ?x (+ 10 ?y)) (< ?x 100)))
=> )
Сравнение заранее связанной переменной >x с константой и вызовы функций numberp, < и > добавляют единицу к оп-
ределенности правила. В итоге получаем определенность, равную 5. Вызовы функций and и + не увеличивают определен-
ность правила.
• Стратегия усложнения. Между правилами с одинаковым приоритетом только что активированные правила размеща-
ются выше всех активированных правил с равной или меньшей определенностью.
• Стратегия LEX. Между правилами с одинаковым приоритетом только что активированные правила размещаются с
применением одноименной стратегии, впервые использованной в системе OPSS. Для определения места активированного
правила в плане решения задачи используется "новизна" образца, который активировал правило. CLIPS маркирует каждый
факт или объект временным тегом для отображения относительной новизны каждого факта или объекта в системе. Образцы,
ассоциированные с каждой активацией правила, сортируются по убыванию тегов для определения местоположения правила.
Активация правила, выполненная более новыми образцами, располагается перед активацией, осуществленной более поздни-
ми образцами. Для определения порядка размещения двух активаций правил, поодиночке сравниваются отсортированные
временные теги для этих двух активаций, начиная с наибольшего временного тега. Сравнение продолжается до тех пор, пока
не остается одна активация с наибольшим временным тегом. Эта активация размещается выше всех остальных в плане ре-
шения задачи.
Если активация некоторого правила выполнена большим числом образцов, чем активация другого правила, и все срав-
ниваемые временные теги одинаковы, то активация другого с большим числом временных тегов помещается перед актива-
цией с меньшим. Если две активации имеют одинаковое количество временных тегов и их значения равны, то правило с
большей определенностью помещается перед активацией с меньшей. В отличие от системы OPSS, условный элемент not в
CLIPS имеет псевдовременной тег, который также используется в данной стратегии разрешения конфликтов. Временной тег
условного элемента not всегда меньше, чем временной тег образца.
В качестве примера рассмотрим следующие шесть активаций правил, приведенные в LEX-порядке (запятая в конце
строки активации означает наличие логического элемента not). Учтите, что временные теги фактов не обязательно равны
индексу, но если индекс факта больше, то больше и его временной тег. Для данного примера примем, что временные теги
равны индексам.
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »