Практическая разработка экспертных систем в среде 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 .
| 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
Бесплатная программа Clips
Clips — бесплатный видеоредактор для iPhone, разработанный самой компанией Apple. Приложение позволяет добавлять видео и фото и записывать к ним комментарии, при этом их можно выводить с помощью текста. Кроме того, Clips включает в себя небольшой набор видеофильтров, стандартных мелодий, стикеров и надписей. Интерфейс программы весьма понятный и работает довольно быстро.
Стоит отметить, что для вывода звуковых комментариев в виде текста используется Siri, т.к. вам необходимо подключение к интернету для этой функции.
Ниже представлены примеры надписей, текст в них вы можете вводить свой.
Библиотека не включает много звуков, но вы можете использовать свои музыкальные треки.
Clips не включает большое количество видеофильтров.
Источник: freeanalogs.ru
Иллюстрированный самоучитель по введению в экспертные системы
Название языка CLIPS – аббревиатура от С Language Integrated Production System. Язык был разработан в Центре космических исследований NASA (NASA’s Johnson Space Center) в середине 1980-х годов и во многом сходен с языками, созданными на базе LISP, в частности OPS5 и ART.
Правила и функции в CLIPS. Факты.
CLIPS включает в язык представления порождающих правил и язык описания процедур. | В этом разделе мы рассмотрим оба этих модуля, сопровождая описание отдельных функций примерами. | Основными компонентами языка описания правил являются база фактов (fact base) и база правил (rule base).
Правила
Наблюдение за процессом интерпретации
Теперь на простом примере познакомимся с возможностями, которые предоставляет среда разработки 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
С помощью приложения можно писать и редактировать программный код, а также запускать проекты. Утилита представляет собой среду разработки, основанную на языке C.
Дата обновления:
Русский язык:
Разработчик:
Gary Riley
Версия Windows:
Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10
CLIPS – приложение для Windows, представляющее собой среду разработки. Название программы расшифровывается как C Language Integrated Production System. С помощью утилиты пользователи могут писать и редактировать код, выполнять компиляцию и запускать проекты. Есть возможность добавлять комментарии. В состав приложения входит объектно-ориентированный язык программирования COOL, предназначенный для написания экспертных систем.
Разработка
Основная идея среды разработки заключается в представлении команд в виде последовательности условий. За счет этого утилита отличается от других языков, в которых все операции упорядочены и выполняются в соответствии с алгоритмом.
В CLISP есть два вида фактов: шаблонные и упорядоченные. Они являются основой для логических выводов. Пользователи могут создавать факты и помещать их в рабочую память. Далее необходимо добавить правила обработки информации и действия, которые будут выполняться.
Редактор кода
После запуска программы следует создать новый проект с нуля или импортировать код из файла в формате CLP, BAT, BIN или TXT. Затем будет доступен редактор кода. Есть возможность выбирать тип, стиль и размер букв, а также добавлять комментарии.
Поддерживается функция поиска и замены текста. Утилита позволяет отслеживать ошибки, возникающие в процессе компиляции проекта.
Особенности
- приложение можно скачать и использовать бесплатно;
- как и Visual Studio Code, данная утилита представляет собой среду разработки;
- есть возможность писать программный код и добавлять комментарии;
- пользователи могут настроить параметры выполнения команд;
- программа совместима с актуальными версиями Windows.
Источник: iowin.net