В этом семестре у нас начался курс экспертных систем. К сожалению, много лекций пропало, а среди выданного материала была только методичка с выполнением лабораторной работы в древней системе GURU, в которой не излагалось ни основных концепций, ни даже самого языка экспертной системы. По этому по старой традиции я решил заняться самообразованием.
Над фактами можно оперировать с помощью правил. Правило имеет условия срабатывания и действия, так же называемые левой стороной (LHS) и правой стороной (RHS). Работа с условиями срабатывания CLIPS во многом похоже на сопоставление с образцом: LHS задает "шаблон внешних условий", представляющий из себя набор уточненных темплейтов фактов и предикатов. Пример правила:
Объекты во многом похожи на факты – они так же имеют "имя шаблона" (имя класса) и слоты, и при этом полностью поддерживают парадигмы ООП – наследование, инкапсуляцию и полиморфизм. Объектно-ориентированный язык CLIPS (COOL) находится за рамками данной статьи и я предлагаю ознакомиться с ним отдельно.
Можно дать оценку CLIPS в двух словах: это интересно. С одной стороны, правила и факты образуют dataflow, что поднимает уровень абстракции и позволяет мыслить более декларативно, описывая только преобразования данных. CLIPS берет на себя управление порядком вычисления правил с помощью приоритетов, управляет зависимостями между фактами. С другой стороны, CLIPS очень легко встраивается в другие программы. В частности, можно посмотреть пример программы, интерфейс которой написан на PyQt4, а вся логика представлена в виде CLIPS-скрипта.
Начнем с самого начала. Что такое экспертные системы? Согласно Википедии, это "компьютерная программа, способная частично заменить специалиста-эксперта в разрешении проблемной ситуации". Иными словами, экспертной системой можно назвать любую систему, которой можно задать вопрос, относящийся к какой-либо предметной области. В более широком смысле экспертной можно назвать ИС, созданную на базе любых технологий, но как правило для их создания применяются специализированные среды.
Среда разработки экспертных систем в первую очередь предоставляет язык или библиотеку для описания предметной области, а так же среду для выполнения скриптов на этом языке. Хорошим примером подобной системы как раз является CLIPS.
CLIPS (Language Integrated Production System) – созданная в 1984-м году одной из лабораторий НАСА экспертная система, которая использует LISP-подобный язык для описания предметной области. Язык этой системы прекрасно подходит для описания любых логических связей, он оперирует следующими тремя понятиями:
Среда разработки экспертных систем в первую очередь предоставляет язык или библиотеку для описания предметной области, а так же среду для выполнения скриптов на этом языке. Хорошим примером подобной системы как раз является CLIPS.
CLIPS (Language Integrated Production System) – созданная в 1984-м году одной из лабораторий НАСА экспертная система, которая использует LISP-подобный язык для описания предметной области. Язык этой системы прекрасно подходит для описания любых логических связей, он оперирует следующими тремя понятиями:
- факты (facts)
- правила (rules)
- объекты (objects).
(fact-without-fields)Перед использованием, неупорядоченные факты необходимо определять. Такая же практика рекомендуется и для упорядоченных фактов, но их объявления могут быть "выведены" из использования. Факт определяется путем указания шаблона факта. Шаблон содержит как сами поля, так и различные метаданные на них, такие как тип и значение по умолчанию.
(my-ordered-fact 1 2.0 "three" four)
(some-unordered-fact (username "Ha><0r") (description "script kiddie"))
(deftemplate land-maximum-candidateЕсли тип или значение по умолчанию не указаны, то слот (slot – так называются поля факта) будет получать автоматическое значение NONE и принимать значение любого типа.
(slot name (default ?NONE) (type STRING))
(slot berry-of-choice (default ?NONE) (type STRING))
(slot profit (default ?NONE) (type FLOAT))
(slot checked (default FALSE) (type SYMBOL)))
Над фактами можно оперировать с помощью правил. Правило имеет условия срабатывания и действия, так же называемые левой стороной (LHS) и правой стороной (RHS). Работа с условиями срабатывания CLIPS во многом похоже на сопоставление с образцом: LHS задает "шаблон внешних условий", представляющий из себя набор уточненных темплейтов фактов и предикатов. Пример правила:
(defrule bind-berry-landДанное правило срабатывает на всех комбинациях известных ягод и земельных участков, создавая новый факт о возможности посадки данного типа ягод на этом поле, содержащий в себе коэфициенты загрязнения листьев и плодов.
(land-coef (name ?name) (coef ?coef))
(berry (name ?bname)
(fruit-coef ?fcoef) (leaves-coef ?lcoef))
=> (assert (berry-land
(name ?bname) (land-name ?name)
(leaves-pollution (* ?fcoef ?coef))
(fruit-pollution (* ?lcoef ?coef)))))
Объекты во многом похожи на факты – они так же имеют "имя шаблона" (имя класса) и слоты, и при этом полностью поддерживают парадигмы ООП – наследование, инкапсуляцию и полиморфизм. Объектно-ориентированный язык CLIPS (COOL) находится за рамками данной статьи и я предлагаю ознакомиться с ним отдельно.
Можно дать оценку CLIPS в двух словах: это интересно. С одной стороны, правила и факты образуют dataflow, что поднимает уровень абстракции и позволяет мыслить более декларативно, описывая только преобразования данных. CLIPS берет на себя управление порядком вычисления правил с помощью приоритетов, управляет зависимостями между фактами. С другой стороны, CLIPS очень легко встраивается в другие программы. В частности, можно посмотреть пример программы, интерфейс которой написан на PyQt4, а вся логика представлена в виде CLIPS-скрипта.
Комментариев нет:
Отправить комментарий