МПЗиО_11_17_CLIPS (1185830)
Текст из файла
ПРОДУКЦИОННАЯМОДЕЛЬ:ЯЗЫК 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: только для фактов с имен.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.