Примеры программ на clips

Первая версия представляла собой, по сути, интерпретатор порож дающих правил.

Процедурный язык и объектно-ориентированное расширение CLIPS Object-Oriented Language

(COOL) были включены в этот программный продукт только в 1990-х годах. Существующая в

настоящее время версия может эксплуатироваться на платформах UNIX, DOS, Windows и

Macintosh. Она является хорошо документированным общедоступным программным продуктом

и доступна по сети FTP с множества университетских сайтов. Исходный ко д программного

пакета CLIPS распространяется совершенно свободно и его можно устано вить на любой

платформе, поддерживающей стандартный компилятор языка С. Однако я бы рекомендовал

пользоваться официальной версией для определенной платформы, поскольку такие версии

оснащены пользовательским интерфейсом, включающим меню команд и встроенный редактор.

Это Приложение организовано следующим образом. В разделе А.2 рассмотрены основные

функции языка описания правил и процедурного языка. В разделе А.З представлены методы

RAW: КАК СНИМАТЬ ВИДЕО на Android ЛУЧШЕ, чем на iPhone

работы с объектами и показано, как использовать их в сочетании с правилами и процедурами.

В разделе А.4 описан пример, демонстрирующий некоторые приемы программирования

правил, а в разделе А.5 резюмируются характеристики этого программного продукта и

предлагаются темы для более углубленного изучения.

А.2. Правила и функции в CLIPS

CLIPS включает в язык представления порождающих правил и язык описания процедур.

В этом разделе мы рассмотрим оба этих модуля, со провождая описание отдельных функций

Основными компонентами языка описания правил являются б аза фактов (fact base) и база

правил (rule base). На них возлагаются следующие функции:

база фактов представляет исходное состояние проблемы (см. главу 2);

база правил содержит операторы, которые преобразуют состояние проблемы, приводя его к

решению (см. главы 2 и 3).

Машина логического вывода CLIPS сопоставляет эти факты и правила и выясняет, какие из

правил можно активизировать. Это выполняется циклически, причем каждый цикл состоит из

трех шагов:

(1) сопоставление фактов и правил;

(2) выбор правила, подлежащего акт ивизации;

(3) выполнение действий, предписанных правилом.

Источник: www.studmed.ru

Иллюстрированный самоучитель по введению в экспертные системы

Название языка CLIPS – аббревиатура от С Language Integrated Production System. Язык был разработан в Центре космических исследований NASA (NASA’s Johnson Space Center) в середине 1980-х годов и во многом сходен с языками, созданными на базе LISP, в частности OPS5 и ART.

Читайте также:
Какие программы нужны для ГТА

Правила и функции в CLIPS. Факты.

CLIPS включает в язык представления порождающих правил и язык описания процедур. | В этом разделе мы рассмотрим оба этих модуля, сопровождая описание отдельных функций примерами. | Основными компонентами языка описания правил являются база фактов (fact base) и база правил (rule base).

Python на практике / Пишем 3 программы на Питон за 5 минут

Правила

Наблюдение за процессом интерпретации

Теперь на простом примере познакомимся с возможностями, которые предоставляет среда разработки CLIPS в части отладки программы, состоящей из правил и фактов. Введите в текстовый файл правило, а затем загрузите этот файл в среду CLIPS.

Использование шаблонов. Определение функций.

Для определения фактов можно использовать не только списочные структуры, но и шаблоны, которые напоминают простые записи.

Объектно-ориентированные средства в CLIPS

Использование объектно-ориентированных средств в CLIPS позволяет значительно упростить программирование правил, поскольку для обновления данных можно применять механизм передачи и обработки сообщений методами классов.

Задача «Правдолюбцы и лжецы»

Для того чтобы продемонстрировать вам возможности языка CLIPS, я выбрал головоломку, а не задачу из практики применения экспертных систем. | В головоломке решается одна из задач, возникающих на острове, населенном обитателями двух категорий: одни всегда говорят правду (назовем их правдолюбцами), а другие всегда лгут (их, естественно, назовем лжецами).

Анализ проблемы

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

Онтологический анализ и представление знаний

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

Разработка правил

В этом разделе мы рассмотрим набор правил, который помогает справиться с вырожденной формулировкой Р0 задачи о лжецах и правдолюбцах. Первые два правила, unwrap-true и unwrap-false, извлекают содержимое высказывания в предположении, что персонаж, которому принадлежит высказывание, является соответственно правдолюбцем или лжецом, и на этом основании формируют объект claim. | ;;

Расширение набора правил – работа с составными высказываниями

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

Обратное прослеживание и множество контекстов

Модифицируем программу таким образом, чтобы она могла справиться и с задачами этого класса в более сложной постановке. Речь идет о задачах, в которых несколько персонажей произносят реплики. Пример такого рода головоломки приведен ниже. | Упражнение 3 | Р5.

Читайте также:
Программы персонального компьютера список

Обработка метавысказываний

Имея в своем распоряжении программу, снабженную механизмом реализации откатов, попробуем адаптировать ее к работе с метавысказываниями, т.е. высказываниями о высказываниях. Это позволит нам решать задачи, подобные Р7, которая приведена в упр. 5.

Полный листинг программы

Ниже приведен полный листинг CLIPS-программы, которая обеспечивает обработку составных утверждений и метавысказывании. | Эта программа предназначена для разрешения головоломок о правдолюбцах и лжецах. Программа анализирует наличие логических противоречий и отыскивает первую непротиворечивую интерпретацию. | Программа может обрабатывать конъюнктивные и дизъюнктивные составные утверждения.

Стиль программирования на языке CLIPS

В главе 17 был представлен обзор инструментальных средств конструирования экспертных систем и ряд рекомендаций, касающихся методики их проектирования. Многие из описанных в той главе средств имеют функциональные возможности, весьма близкие к тем, которые вы можете найти в CLIPS.

Упражнения

Упражнение 1 | Разработайте программу моделирования, которая использовала бы объекты и правила, аналогичные описанным в разделе А.3, но для какого-нибудь другого устройства. | Упражнение 2 | Разработайте программу, которая решала бы детективные головоломки типа той, что представлена ниже (головоломки описаны в книге [Smullyan, 1978]).

Источник: samoychiteli.ru

Практическая разработка экспертных систем в среде CLIPS

CLIPS (C Language Integrated Production System ) начала разрабатываться в космическом центре Джонсона NASA в 1984 году. Сейчас CLIPS и документация на этот инструмент свободно распространяется через интернет (http://www.ghg.net/clips/CLIPS.html). Язык CLIPS свободен от недостатков предыдущих инструментальных средств для создания ЭС, основанных на языке LISP . Язык CLIPS получил большое распространение в государственных организациях и учебных заведениях благодаря низкой стоимости, мощности, эффективности и переносимости с платформы на платформу. Например, даже Web-ориентированный инструментарий JESS ( Java Expert System Shell ), использующий язык представления знаний CLIPS , приобрел достаточную известность в настоящее время.

Следует отметить, что несмотря на многочисленные преимущества функционального программирования, некоторые задачи лучше решать в терминах объектно-ориентированного программирования ( ООП ), для которого характерны три основные возможности: ИНКАПСУЛЯЦИЯ (работа с классами), ПОЛИМОРФИЗМ (работа с родовыми функциями, поддерживающими различное поведение функции в зависимости от типа аргументов), НАСЛЕДОВАНИЕ ( поддержка абстрактных классов ). ООП поддерживает многие языки, в том числе Smalltalk , C++, Java , Common LISP Object System ( CLOS ). Язык CLIPS , в свою очередь , вобрал в себя основные преимущества С++ и CLOS .

Читатель может познакомиться с языком CLIPS , получив через Интернет полный комплект документации на английском языке, или прочитав изданную на русском языке книгу. В данном разделе лекции дается краткое неформальное введение в CLIPS , необходимое для программирования учебных задач.

Отличительной особенностью CLIPS являются конструкторы для создания баз знаний ( БЗ ):

defrule определение правил;
deffacts определение фактов;
deftemplate определение шаблона факта;
defglobal определение глобальных переменных;
deffunction определение функций;
defmodule определение модулей (совокупности правил);
defclass определение классов;
defintances определение объектов по шаблону, заданному defclass ;
defmessagehandler определение сообщений для объектов;
defgeneric создание заголовка родовой функции;
defmethod определение метода родовой функции.
Читайте также:
Музыкальные паузы в программе что где когда

Конструкторы не возвращают никаких значений, в отличии от функций, например:

(deftemplate person (slot name) (slot age) (multislot friends)) (deffacts people (person (name Joe) (age 20)) (person (name Bob) (age 20)) (person (name Joe) (age 34)) (person (name Sue) (age 34)) (person (name Sue) (age 20)))
(deffunction factorial (?a) (if (or (not (integerp ? a)) (< ? a0)) then (printout t «Factorial Error!» crlf) else (if (= ? a0) then 1 else (*? a (factorial ($-$ ? a1))))))

Правила в CLIPS состоят из предпосылок и следствия. Предпосылки также называют ЕСЛИ-частью правила, левой частью правила или LHS правила (left- hand side of rule ). Следствие называют ТО-частью правила, правой частью правила или RHS правила (right- hand side of rule ).

Пример правила представлен ниже:

(deftemplate data (slot x) (slot y)) (defrule twice (data (x ? x) (y =(*2 ? x))) =>) (assert (data (x2) (y4)); f-0 (data (x3) (y9))); f-1

Здесь самая распространенная в CLIPS функция assert добавляет новые факты в список правил. В противоположность assert функция retract удаляет факты из списка фактов, например:

(defrule vis11 ?doors < — (fit ? wdfit) (test (eq ? wdfit no)) =>(assert (EVIDENCE OF MAJOR ACCIDENT)) (retract ? doors))

В этом правиле проверяется наличие факта doors и в случае его отсутствия факт doors удаляется из списка фактов задачи.

Функция modify является также весьма распространенной. Она позволяет в определенном факте поменять значение слота, например,

(deftemplate age (slot value)) (assert (age (value young))) (modify 0 (value old))

Следующий пример описывает представление данных в виде фактов, объектов и глобальных переменных. Примеры фактов:

(voltage is 220 volt) (meeting (subject «AI») (chief «Kuzin») (Room «3240»))

В первой строке приведен упорядоченный факт, во второй — неупорядоченный, в котором порядок слотов не важен.

CLIPS поддерживает следующие типы данных: integer , float , string , symbol , external-address , fact -address , instance-name , instance-address .

Пример integer : Пример float :
594 23 +51 -17
594e 2 23.45 +51.0 -17.5e -5

String — это строка символов , заключенная в двойные кавычки.

Пример string : » expert «, «Phil Blake», «состояние $-0$», «quote=»

CLIPS поддерживает следующие процедурные функции , реализующие возможности ветвления, организации циклов в программах и т.,п.:

If оператор ветвления;
While цикл с предусловием ;
loop-for-count итеративный цикл;
prong объединение действий в одной логической команде ;
prong$ выполнение набора действий над каждым элементом поля;
return прерывание функции, цикла, правила и т.д.;
break то же, что и return , но без возвращения параметров;
switch оператор множественного ветвления;
bind создание и связывание переменных.

Источник: intuit.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru