- •Введение
- •Арифметика
- •Ввод-вывод при работе с консолью
- •Управление средой
- •Правила
- •Управление правилами
- •Использование переменных в правилах
- •Наборы фактов
- •Конструкции
- •Правила-2 Активации и повестка
- •Диагностические сообщения
- •Получение адреса факта
- •Сложные условия
- •Правила-3 Условия с кванторами
- •Вызовы функций в качестве ограничений параметров фактов
- •Сложные ограничения на параметры фактов
- •Поддержка истинности
- •Стратегии
- •Последовательности
- •Шаблонные факты
Введение
Система CLIPS (C Language Integrated Production System) — это инструментальное средство для разработки экспертных систем. Система CLIPS использует одноименный язык программирования.
Основными компонентами CLIPS, как и большинства экспертных систем являются:
-
список фактов (он же рабочая память) — данные, описывающие решаемую задачу. Вообще говоря, факты могут выражать не только специфические особенности конкретной решаемой в данный момент задачи, но и общие закономерности, характерные для некоторого класса задач;
-
база знаний — набор правил, служащих для получения на основе одних (исходных) фактов других (результатных) фактов;
-
машина логического вывода — обеспечивает общее управление процессом применения правил.
В простейшем случае работа с системой CLIPS происходит в интерактивном режиме. После запуска на экране появляется окно консоли (называемое Dialog Window), в котором отображается приглашение для ввода команд в виде CLIPS>. Команды выполняются системой по мере их ввода.
Каждая команда представляет собой список. В языке CLIPS списки заключаются в круглые скобки, а элементы списка отделяются друг от друга пробелами. Элементами списков могут быть:
-
атомы:
-
целые и вещественные числа (состоят из цифр и, возможно, десятичной точки и знака экспоненты);
-
строки (произвольный текст, заключенный в двойные кавычки);
-
символы — все остальное, что не является ни числом, ни строкой и не содержит разделителей (т. е. пробелов, круглых скобок). Отметим, что вместе символы и строки называются лексемами;
-
-
вложенные списки.
Вообще говоря, списки могут быть пустыми.
Если список представляет собой команды (т. е., если он сам не является элементом другого списка), то первый элемент списка задает название команды, а остальные — ее параметры. Т. е. в общем случае команда имеет формат:
(имя-команды аргумент-1 аргумент-2 …)
Имя команды должно быть символом. Одна команда может занимать несколько строк.
Арифметика
Простейшими командами являются математические функции. Например:
(+ 1 2) (+ 1 2 3 4) (* 2 3) (- 5 2) |
(- 5 2 2) (/ 8 3) (/ 8 2) (div 18 7) |
(mod 18 7) (** 3 2) (min 2 1 4 5 3) (round 6.7) |
Параметры математических функций также в свою очередь могут быть заданы математическими функциями. Например:
(* (+ 1 2) 3 (* 4 5))
(sin (/ (pi) 6))
В командах CLIPS могут использоваться переменные. Для присваивания значения переменной используется команда bind. Например:
(bind ?x 10)
?x
(** ?x 2)
Заметим, что команда bind не только устанавливает значение переменной, но и возвращает установленное значение. При попытке использовать переменную, которой не было присвоено никакого значения, выводится предупреждение, при этом значением такой переменной считается символ FALSE.
Ввод-вывод при работе с консолью
Для вывода в консоль или в файл можно использовать команду printout. Первый параметр этой команды задает логическое имя файла, а остальные — выводимые значения. Для вывода в консоль первым параметром надо задать символ t. Для перевода строки используется символ crlf. Пример:
(printout t "Hello" crlf)
(printout t "2 * 3 = " (* 2 3) crlf)
Для ввода можно использовать команды read и readline. Будучи вызваны без параметров обе команды производят ввод с консоли. Команда read считывает данные до разделителя и может возвратить символ, строку или число; команда readline считывает данные до конца строки и всегда возвращает строку. В случае достижения конца файла обе команды возвращают символ EOF. Пример:
(bind ?x (read))