МПЗиО_11_17_CLIPS (Лекции)
Описание файла
Файл "МПЗиО_11_17_CLIPS" внутри архива находится в папке "Лекции". PDF-файл из архива "Лекции", который расположен в категории "". Всё это находится в предмете "(мпзио) модели представления знаний и онтологии" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
ПРОДУКЦИОННАЯМОДЕЛЬ:ЯЗЫК CLIPSСОДЕРЖАНИЕ1. Общая характеристика CLIPS особенности управляющей стратегии2. Факты рабочей памяти виды фактов, шаблоны3. Создание правил продукций левая часть: образцы и условные элементы правая часть: операции с РП4. Средства работы с системой загрузка/выгрузка РП работа с правилами определение функций5. Практическое задание: экспертные системы этапы разработки ЭС пример ЭС: сущности, правила, интерфейс2ИСТОРИЯ СОЗДАНИЯ CLIPS● Появление языка CLIPS – 1984 г., NASA●●●●(C Language Integrated Production System)Особое внимание – совместимость с ранеесозданными языками ПЗ для ЭС,поэтому синтаксис лисповскийПервоначально: только продукционная парадигма1991 г. – введены 2 новые парадигмы:процедурное + объектно-ориентированноепрограммирование =>CLIPS Object-Oriented Language (COOL)Свободно распространяемый программныйпродукт, для компиляции может быть использованлюбой ANSI C или С++ компилятор3CLIPS: ОСОБЕННОСТИУПРАВЛЯЮЩЕЙ СТРАТЕГИИ● CLIPS – стратегия прямого безвозвратного вывода● Две области памяти: РП и БЗ, для каждой – свой набор●●●●функций и конструкторов(= процедур)Запуск программы: загрузка БЗ и фактов в РП, затемзапуск на выполнениеВыбор и задание стратегии разрешения конфликта(7 возможных стратегий)Повторение цикла сопоставление – разрешениеконфликта – выполнение правила до тех пор, пока естьприменимые правила (но также возможно выполнениезаданного пользователем количества правил)Правила выполняются в порядке уменьшения приоритета,приоритет правила задается при определении правила4СТРАТЕГИИ РАЗРЕШЕНИЯКОНФЛИКТАCLIPS: 7 стратегий разрешения конфликта●●●●●●●Стратегия глубины (приоритет + только что активированноеправило ставится выше)Стратегия ширины (приоритет + только что активированноеправило ставится ниже)Стратегия упрощения (приоритет + наименьшаяопределённость)Стратегия усложнения (приоритет + наибольшаяопределённость)Стратегия LEX (приоритет + определённость + новизна)Стратегия MEA (приоритет + новизна)Стратегия случайного выбораОпределённость – число сопоставлений в образце правилаНовизна – временной тег5CLIPS: ТИПЫ ДАННЫХПростые типы данных:● Числовые: float, integer -32.3e-7 +12.5● symbol – для именования объектов:2my245127a @=%любая последовательность неуправл.
символов ASCIIдо первого ограничителя, не могут начинаться с ? или $?″x and y″● string:″x\″z″ (строка x″z)Составная конструкция – последовательность данныхпростых типов, записанная в круглых скобках(z27.4″Bob″23)Ограничители: пробел, табуляция, переход нановую строку, символы ″ ( ) & | < ~;; – символ начала комментария (ограничен концом строки)6ФАКТЫ В РАБОЧЕЙ ПАМЯТИРабочая память (РП) – набор фактовВ процессе работы ПС: добавление/удаление фактовВиды фактов:● Факты с упорядоченными атрибутами (ordered facts)● Факты с неупорядоченными именованнымиатрибутами (unordered facts) Факты с неупорядоченными именованными атрибутами –аналог записей или структур, их можно считатьупрощёнными фреймами Шаблон факта – описание структуры такого факта,аналог фрейма-прототипа Сам факт с неупорядоченными именованнымиатрибутами – аналог фрейма-экземпляра7ФАКТЫ С УПОРЯДОЧЕННЫМИАТРИБУТАМИ● Факт – составная конструкция,первый элемент – типа symbol(parent Bob Liz) (Mike age 27 tel 5552233)● Первым элементом не м.б.
зарезервированные слова:test, and, or, not, declare, logical, object, exists, forall● Важен порядок записи элементов конструкции● Каждый такой факт может описывать один или несколькоатрибутов некоторой сущности вместе с их значениями; Текущее состояние холодильника(refrigerator light on) ; свет включен(refrigerator door open) ; дверь открыта(refrigerator temp (+ 5 10 15))); t° 30 градусов8ФАКТЫ С НЕУПОРЯДОЧЕННЫМИИМЕНОВАННЫМИ АТРИБУТАМИ● Атрибуты сущностей именуются:(point (x-coord 15) (y-coord -25)); бакалейные товары: число их и их список(grocery-list (#-of-items 3)(items bread milk eggs))● Порядок атрибутов (слотов) не важен, доступ к значению– через имя слота● Факты определяются конструктором deftemplate:(deftemplate grossery-list(slot #-of-items) ; количество товаров(multislot items) ) ; список товаров slot – для определения атрибута (слота) простого типа multislot – для атрибута с несколькими значениями количество слотов произвольное9ШАБЛОНЫ ФАКТОВПри определении шаблона фактов можно задать:● ограничение на тип значения слота;для мультислота – ограничение на тип каждого элемента● значение слота по умолчанию: default(deftemplate grossery-list(slot #-of-items (type INTEGER)(default 2))(multislot items (type SYMBOL))) Значение по умолчанию может быть задано как● default – статическое, вычисляется при создании шаблона● default-dynamic – динамическое, вычисляется длялюбого факта-экземпляра при его создании Значение по умолчанию может быть задано явно (в видеконстанты) или неявно (в виде вызова функции)10ШАБЛОНЫ:ЗНАЧЕНИЯ ПО УМОЛЧАНИЮ(deftemplate my_example(slot z (default (my_function)))(slot w (default-dynamic(my_function)))(slot x (default ?NONE))(slot y (default ?DERIVE)))Если вместо значения по умолчанию – ключевое слово● ?NONE , то значение слота/атрибута должно бытьобязательно задано при создании факта-экземпляра● ?DERIVE , то значение слота/атрибута можетизвлекаться из ограничений (для всех слотов поумолчанию)11ПРАВИЛА CLIPS: СОЗДАНИЕДля создания продукции – конструктор defrule(defrule <имя правила>[″комментарии″][(declare (salience <целочисл.
выражение>))]<условие применения>; левая часть=><действия>); правая часть● Комментарии могут отсутствовать● Левая часть – условия применения правила, состоит изусловных элементов, чаще всего – образцов фактов● Правая часть обычно содержит действия, добавляющиеили удаляющие факты из РП● Cвойство salience устанавливает приоритет правила(целое в диапазоне от -10000 до +10000), по умолчаниюприоритет устанавливается равным нулю12ЛЕВЫЕ ЧАСТИ ПРАВИЛ● Левая часть правила (условие) состоит изусловных элементов● Для выполнения правила должны выполняться всеусловные элементы, т.е. все условные элементы неявноконъюнктивно объединены● Типичный условный элемент – образец факта● Образец факта позволяет задать общий вид факта, в нёммогут использоваться константы и переменные(начинаются с префикса ? или $?):2b$?h ?fg● Переменная может быть именованной (для использованиянесколько раз) или анонимной: ? $?(используется только для сопоставления)● Переменная может сопоставляться с одним объектом (?)или с последовательностью объектов ($?)13ПРИМЕР ОБРАЗЦА ПРАВИЛА(defrule Find-data (data ? blue 56 $?)=> …)Поиск факта data с упорядоченными атрибутамипо образцу, в котором: первый атрибут не важен (? – анонимнаяпеременная, сопоставляющаяся с одним значением) второй атрибут – значениеblue третий атрибут – значение56 может быть ещё произвольное количество атрибутов(они сопоставятся с анонимной переменной $?)14ОБРАЗЦЫ ФАКТОВ: ЭЛЕМЕНТЫОбразец факта может включать:● константы – значения простых типов● переменные – все вхождения одной переменнойсопоставляются с одним и тем же значением● логические операции (конъюнкция: &,дизъюнкция: |, отрицание: ~)● предикаты – их вызов начинается с символа :● функции – их вызов начинается с символа =Пустой образец автоматически заменяется наусловие-образец initial-fact, т.е.(defrule empty_cond => …)заменится на(defrule empty_cond (initial-fact) => …)15ПРИМЕР ПРАВИЛА С ОБРАЗЦАМИ(defrule Find-2-Coeval-Person(person (name ?x)(age ?z))(person (name ?y&~?x)(age ?z))=>(printout t ?x ″ ″ ?y ″ ″ ?z crlf))● Среди фактовperson с именованными атрибутамипоиск пары фактов, описывающих людей-ровесников● Для каждой найденной пары фактов печатаются именаэтих людей и их возраст● Чтобы имена людей в паре не совпадали, используютсялогические связки конъюнкция и отрицание16ПРИМЕРЫ ИСПОЛЬЗОВАНИЯПРЕДИКАТОВ И ФУНКЦИЙ В ОБРАЗЦАХПример1: (defrule Find-data1(mydata1 ?x ?y&=(* 2 ?x)) => …)поиск факта mydata1 с упорядоч.и атрибутами, у которогозначение второго атрибута в два раза больше первогоПример2: (defrule Find-data2(mydata2 ?x&:(floatp ?x)&:(> ?x 0)$?y ?z&:(stringp ?z)) => …)поиск факта mydata2 с упорядоченными атрибутами первый атрибут имеет тип float и значение, большее нуля последний атрибут имеет тип string количество атрибутов – произвольно, но не меньше двух17УСЛОВНЫЕ ЭЛЕМЕНТЫВ ЛЕВОЙ ЧАСТИ ПРАВИЛ● Условные элементы:test, and, or, not, logical, exists, forall● Элементtest содержит выражение,возвращающее логическое значение● Пример:(defrule example(data ?x)(data ?y)(test (>= (abs (- ?x ?y)) 5)) => …)поиск в РП двух фактов data с атрибутом-числом,абсолютная разница между значениями атрибутовкоторых не меньше пяти18УСЛОВНЫЕ ЭЛЕМЕНТЫ:AND, OR И NOTУсловные элементы not, or и and позволяютзадавать наборы фактов(правило применимо на любом подходящем наборе)Пример: (defrule exam1(myfact1 ?z)(or (and (myfact2 ~?z)(myfact3 ?))(not (myfact4 ?z))) => …)правило применимо в случае, если в РП есть факт myfact1 с некоторым значением атрибута и либо одновременно есть факт myfact2 с другимзначением этого атрибута и факт myfact3либо в РП нет факта myfact4 с таким же значениематрибута19УСЛОВНЫЕ ЭЛЕМЕНТЫEXISTS И FORALLЗадание условий на наборы фактов● Элемент exists – проверка, если есть хотя бы одиннабор фактов, удовлетворяющих условию:(defrule ex-for-exists(exists (a ?x)(b ?x)(c ?x)) => …)проверка наличия 3 фактов с именами a, b и c,содержащих одно и то же значение● Элемент forall – заданное условие должновыполняться для всех включенных в него образцов(defrule all-student-passed(forall (student ?name)(reading ?name)(writing ?name)(arithmetic ?name)) => …)проверка, что все студенты прошли чтение, письмо иарифметику или же в РП нет данных о студентах20УСЛОВНЫЙ ЭЛЕМЕНТ LOGICAL● Позволяет задавать логическую зависимостьданных правой части правила от данных левой● Применяется только к фактам с упорядоченнымиатрибутами● Может быть применён только к первым n условнымэлементам(defrule examp-for-logical(logical (А))(logical (В))(С) => (assert (D)))Факт D добавляется в РП и логически зависит отфактов A и B, поэтому будет автоматически удалёнпри удалении любого из этих фактов(но не при удалении С).21ПРАВАЯ ЧАСТЬ ПРАВИЛПравая часть может включать действия:● ввод/вывод:printout, read …● изменение рабочей памяти – добавление,удаление, модификация фактов:assert, retract, modify …используются номера/адреса фактов● изменение БЗ – добавление, удалениеправил: defrule, undefrule …● вызов вспомогательных функций дляобработки данных● работа с объектами (для COOL, например,посылка сообщений и т.д.)22РП: НОМЕРА И АДРЕСА ФАКТОВКаждый факт после добавления в РП имеетномер видаf-<число>Каждый новый факт при добавлении получаеточередной номерВ результате модификации факта его номерменяетсяНумерация фактов начинается с нуля, при загрузкесистемы в РП заносится факт с номером нуль –initial-factНа факт можно сослаться по его номеру (число безпрефикса f ) или его адресу, получаемому спомощью специальной функции <Такие ссылки на факты используются в функцияхдля работы с фактами (удаление и модификация)23ПРИМЕР:ИСПОЛЬЗОВАНИЕ АДРЕСОВ(defrule del-data-facts?data-facts <- (data $?)=>(retract ?data-facts)) Правило удаляет все факты с именем data Переменная?data-facts, связанная с адресомфакта, может сравниваться с другой переменнойили использоваться внешней функцией В данном примере она используется функциейretract24ДОБАВЛЕНИЕ И ИЗМЕНЕНИЕФАКТОВ● assert – добавление фактов в РП:(assert <факт>{<факт>})● retract – удаление фактов:(retract <номер или адрес факта>{< номер или адрес факта>} | *)● modify – изменение факта, эквивалентно применениюпары retract-assert :(modify < номер или адрес факта><новое значение слота>{<новое значение слота>})● duplicate – создание нового факта, копируетсяинформация из уже существующего факта(duplicate < номер или адрес факта><новое значение слота>{<новое значение слота>})modify и duplicate: только для фактов с имен.