litceysel.ru
добавить свой файл
1

4ЛАБОРАТОРНАЯ РАБОТА №4

правила в clips


Цель работы: Создать экспертную систему в Clips.

4.1 Задание на лабораторную работу


В ходе выполнения данной лабораторной работы необходимо ознакомиться с условными элементами в языке представления знаний Clips. Создать собственную экспертную систему.

4.2 Краткие теоретические сведения


Ле­вая часть правил в языке представления знаний Clips содержит список условных элементов, которые должны удовлетворяться, для того чтобы правило было помещено в план решения задачи. Существует восемь типов условных эле­ментов, используемых в левой части правил: CEs-образцы, test CEs, and CEs, or CEs, not CEs, exists CEs, forall CEs и logical CEs.

4.2.1Образцы


Условный элемент образец состоит из списка ограничений полей, групповых сим­волов (wildcards) и переменных, которые используются для поиска множества фактов или объектов, которые соответствуют заданному образцу. Таким об­разом, образец как бы определяет маску, которой должны соответствовать данные. Такой условный элемент удовлетворяется любым фактом или объ­ектом, соответствующим заданным ограничениям.

Первое поле любого образца обязательно должно быть значением типа symbol и не может принимать значения других типов. CLIPS использует первое поле для определения: является ли данный образец упорядоченным фактом, шаблоном или объектом. Ключевое слово object зарезервировано для создания образцов, предназначенных для сопоставления с объектами. Любое другое значение типа symbol должно соответствовать имени шаблона, созданного с помощью конструктора deftemplate или неявно созданного шаблона. Для задания имен слотов также должны использоваться значения типа symbol.

В слотах простых полей образцов, предназначенных для объектов и шабло­нов, может содержаться только одно ограничение поля, и не могут присут­ствовать групповые символы или переменные. В составных слотах может содержаться любое количество ограничений поля. Синтаксис условного элемента можно формализовать следующим образом:


<условный-элемент> ::= |

|



|

|

|

|




4.2.2Условный элемент test


Условный элемент test предоставляет возможность наложения дополни­тельных ограничений на слоты фактов или объектов. Элемент test удовле­творяется, если вызванная в нем функция возвращает значение не-false. Как и в случае предикатных ограничений образца в условном элементе test, можно использовать переменные, уже связанные со своими значе­ниями. Внутри элемента test могут быть выполнены различные логические операции, например сравнения переменных.

Синтаксис условного элемента test выглядит следующим образом:

::= (test <вызов-функции>)

Выражение test вычисляется каждый раз при удовлетворении других условных элементов. Это означает, что условный элемент test будет вычис­лен больше одного раза, если обрабатываемое выражение может быть удов­летворено более чем одной группой данных. Использование условного элемента test может стать причиной автоматического добавления правилу некоторых условных выражений. Кроме того, CLIPS может автоматически переупорядочивать условные элементы test.

4.2.3Условный элемент or


Условный элемент or позволяет активировать правило любым из несколь­ких заданных условных элементов. Если какой-нибудь из условных элемен­тов, объединенных с помощью or, удовлетворен, то и все выражение or считается удовлетворенным. В этом случае, если все остальные условные элементы, входящие в левую часть правила (но не входящие в or), также удовлетворены, правило будет активировано. Условный элемент or может объединять любое количество элементов.

Синтаксис условного элемента or выглядит следующим образом:


<условный-элемент-ог > ::= (or <условный-элемент>+)

4.2.4Условный элемент and


Все условные элементы в левой части правил CLIPS объединены неявным условным элементом and. Это означает, что все условные элементы, задан­ные в левой части, должны удовлетвориться, для того чтобы правило было активировано. С помощью явного применения условного элемента and можно смешивать различные условия and и or и группировать элементы так, как этого требует логика правил. Условие and удовлетворяется, только если все условия внутри явного and удовлетворены. В случае, если остальные условия в левой части правила также истинны, правило будет активировано. Элемент and может объединять любое число условных элементов. Синтаксис условного элемента and выглядит следующим образом:

::= (and <условный-элемент>+)

4.2.5Условный элемент not


Возникают ситуации, когда необходимо запустить правило, если образец или другой условный элемент не удовлетворяется (например, факт не существует). Условный элемент not предоставляет эту возможность. Элемент not удовле­творяется, только если условный элемент, который он содержит, не удовле­творяется. Синтаксис условного элемента not выглядит следующим образом:

<условный-элемент-not> ::= (not <условный-элемент>)

Условный элемент not может отрицать только одно выражение. Несколько условных элементов нужно отрицать с помощью нескольких элементов not. Тщательно следите за комбинациями not с or или and; результат не всегда очевиден!

4.2.6Условный элемент exists


Условный элемент exists позволяет определить, существует ли хотя бы один набор данных (фактов или объектов), которые удовлетворяют услов­ным элементам, заданным внутри элемента exists. Синтаксис условного элемента exists выглядит следующим образом:

<условный-элемент-exists> ::= (exists <условный-элемент>+)

CLIPS автоматически заменяет exists двумя последовательными условными элементами not.

4.2.7Условный элемент forall


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

<условный-элемент foга11> ::= (forall <условный-элемент>

<условный-элемент>+)

CLIPS автоматически заменяет f о rail комбинацией условных элементов not и and.

4.2.8Условный элемент logical


Условный элемент logical предоставляет механизм поддержки достоверно­сти для созданных правилом данных (фактов или объектов), удовлетворяю­щих образцам. Данные, созданные в правой части правила, могут иметь ло­гическую зависимость от данных, удовлетворивших образцы в левой части правила. Такая зависимость называется логической поддержкой. Данные могут зависеть от группы данных или нескольких групп данных, удовлетво­ривших одно или несколько правил. Если удаляются данные, которые под­держивают некоторые другие данные, то зависимые данные также автома­тически удаляются.

Если некоторые данные созданы без логической поддержки (например, с помощью конструкторов deffacts, definstance или команды assert, введенной пользователем или вызванной в правой части правила), то считает­ся, что они имеют безусловную поддержку. Безусловная поддержка удаляет все присутствующие в данный момент условные поддержки этих данных (но не удаляет сами данные). Дальнейшая логическая поддержка для данных с безусловной поддержкой игнорируется. Удаление правила, которое вызва­ло логическую поддержку для данных, удаляет логическую поддержку, сгенерированную этим правилом (но не удаляет данные, если у них еще есть логическая поддержка, сгенерированная другим правилом). Синтаксис условного элемента logical выглядит следующим образом:

<условный-элемент-1од!са1> ::= (logical <условный-элемент>+)

Условный элемент logical группирует образцы, так же как это делает and. Данное свойство можно использовать при объединении элементов and, or и not. Однако только первые п образцов правила могут использоваться в условном элементе logical.

4.3 Порядок выполнения работы


  1. Ознакомится с теоретическими сведениями.

  2. Создать экспертную систему согласно варианта задания (таблица 4.1).

Таблица 4.1 – Задания для создания экспертной системы

Вариант

Название ЭС

0

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

1

Разработайте ЭС, которая определяет, будет ли в результате весеннего паводка наводнение. Если уровень воды в реке в черте города более трех метров и дожди идут ежедневно, средняя погода за день более 10°C и много снега в горах, то в ближайшие сутки ожидается наводнение. Если уровень воды в реке в черте города менее трех метров и дожди идут через день, средняя погода за день более 10°C и много снега в горах, то наводнение через неделю. Если же хотя бы один из этих факторов не выполняется, то наводнения не будет.

2

Разработайте ЭС, определяющую, достаточно ли имеющихся строительных материалов для строительства дома. Прежде всего, необходимо уточнить, сколько этажей будет в доме. Если количество этажей составляет один, то количество необходимых кирпичей составляет 1000, а цемента необходимо не более 20 кг. Для строительства двухэтажного дома необходимо более 1000 и менее 2000 кирпичей, а цемента – более 20 кг. Для строительства дома этажностью от трех этажей необходимо более 2000 кирпичей, цемента - также более 20 кг. В противном случае дом построить нельзя.


3

Разработайте ЭС, которая поможет выбрать квартиру для покупки. Если предлагаемый район устраивает, этаж менее третьего, цена устраивает и площадь более 50 кв.метров, то можно вносить аванс. Если район устраивает, этаж менее третьего, цена устраивает и площадь 50 кв.метров и менее, то следует еще подумать стоит ли покупать такую квартиру. Если два и более критерия не выполняются, от предлагаемой квартиры следует отказаться.

4

Разработайте ЭС, определяющую, какой автомобиль лучше выбрать. Если Вы любите классические автомобили отечественного производства с четырьмя дверями и объемом двигателя до 2 литров, то наиболее оптимальным вариантом будет автомобиль LADA Priora. Если Вы любите спортивные автомобили отечественного производства с двумя дверями и объемом двигателя от 2 литров, то наиболее оптимальным вариантом будет автомобиль Chevrolet Corvette. В противном случае подходящего автомобиля нет.

5

Разработайте ЭС, определяющую, подходит ли банкетный зал для проведения юбилея. Если этот зал находится вблизи дома, предлагает блюда европейской кухни, сумма минимального заказа 150 грн с человека, а допустимое количество мест до 50, то этот зал можно резервировать. Если этот зал находится вблизи дома, предлагает блюда итальянской кухни, сумма минимального заказа 200 грн с человека, а допустимое количество мест от 50 до 100, то следует задуматься стоит ли выбирать такой дорогой вариант для проведения юбилея. В противном случае банкетный зал для проведения юбилея однозначно не подходит.

6

Разработайте ЭС, которая определяет, будет ли сегодня дождь. Если небо ясное, количество крупных грозовых туч на небе менее двух и движутся они на север, скорость ветра 2 м/сек, то дождя сегодня не будет. Если небо покрыто тучами, количество крупных грозовых туч на небе более двух и движутся они на север, скорость ветра 5 м/сек, то дождь будет завтра. В противном случае дождь будет.





  1. Составить отчет о выполнении лабораторной работы.

4.4 Содержимое отчета


  1. Название и тема лабораторной работы.

  2. Цель лабораторной работы.

  3. Краткие теоретические сведения.

  4. Ход выполнения работы.

  5. Текст программы, используемый для выполнения лабораторной работы.

  6. Выводы.

4.5 Контрольные вопросы


  1. Условные элементы в Clips.

  2. Образцы.

  3. Условный элемент test.

  4. Условный элемент or.

  5. Условный элемент and.

  6. Условный элемент not.

  7. Условный элемент exists.

  8. Условный элемент logical.

  9. Условный элемент forall.