Разработка интеллектуальных информационных систем с использованием CLIPS. Дякин В.Н. - 12 стр.

UptoLike

Составители: 

close – закрытие файла;
printoutвывод информации на заданное устройство;
read – ввод данных с заданного устройства;
readline – ввод строки с заданного устройства;
format – форматированный вывод на заданное устройство;
rename – переименование файла;
remove – удаление файла.
Среди двух десятков команд CLIPS следует назвать основные команды при работе со средой CLIPS:
load – загрузка конструкторов из текстового файла;
load+ – загрузка конструкторов из текстового файла без отображения;
reset – сброс рабочей памяти системы CLIPS;
clear – очистка рабочей памяти системы;
run – выполнение загруженных конструкторов;
save – сохранение созданных конструкторов в текстовый файл;
exit – выход из CLIPS.
CLIPS предоставляет возможность разбиения базы данных и решения задачи на отдельные независимые модули. Для
создания таких модулей служит конструктор defmodule. С помощью модулей можно группировать вместе отдельные эле-
менты базы знаний и управлять процессом доступа к этим элементам во время решения некоторой задачи. Подобный про-
цесс управления доступом к данным напоминает механизмы пространства имен, используемый в С++, и глобальных и ло-
кальных областей видимости в языках С и Ada. Однако, в отличие от механизмов в перечисленных выше языках, области
видимости в CLIPS строго иерархичны и однонаправлены: если модуль А может видеть данные модуля В, это не означает,
что модуль В может видеть данные модуля А. С помощью управления с ограничением доступа к данным, содержащимся в
различных модулях, при решении сложных задач модули могут реализовывать концепцию доски объявлений (blackboard
strategy – стратегия решения задач с использованием разнородных источников знаний, взаимодействующих через общее ин-
формационное поле). В этом случае отдельный модуль позволяет видеть правилам из других модулей строго определенный
набор фактов и объектов. Кроме того, модули используются для управления потоком вычисления правил.
(defmodule <имя-молуля> [<комментарий>]
<спецификации-импорта-экспорта>*)
<спецификация-импорта-экспорта> : :=
(export <элемент-спецификация>) |
(import <имя-модуля> <элемент-спецификации>)
<элемент-спецификации> : := ?ALL | ?NONE |
<конструктор> ?ALL | <конструктор> ?NONE |
<конструктор> <имя-конструктора>
<конструкция>:: = deftemplate | defclass |
defglobal | deffunction | defgeneric
После своего создания модуль не может быть переопределен или удален (за исключением системного модуля MAIN,
который пользователь может один раз переопределить). Единственный способ удалить существующий модульвыполнить
команду clear. Во время запуска системы и при вызове команды clear CLIPS автоматически создает предопределенный сис-
темный модуль: (defmodule MAIN).
Явное задание модуля выполняется с помощью имени модуля, разделенного с именем конструкции при помощи двой-
ного двоеточия :: . Имя модуля и символ :: называются спецификатором модуля (module specifier). Например, запись
MAIN::find-stuff ссылается на конструкцию find-stuff из модуля MAIN.
Неявное задание модуля выполняется с помощью установки текущего активного модуля. Текущий модуль меняется при
каждом определении нового модуля или при вызове функции set-current-module.
В CLIPS факты и объекты принадлежат не тому модулю, в котором они были созданы, a тому, в котором был определен
соответствующий конструктор deftemplate или defclass. Таким образом, факты и объекты становятся видимыми в тех моду-
лях, которые импортируют соответствующие конструкции deftemplate или defclass. Это позволяет разбивать базу знаний та-
ким образом, чтобы правила или другие конструкции могли видеть только необходимые им факты и объекты. Далее приве-
ден пример создания и взаимосвязи двух модулей.
CLIPS> (clear)
CLIPS> (defmodule A (export deftemplate foo bar) )
CLIPS> (deftemplate A::foo (slot x) )
CLIPS> (deftemplate A::bar (slot y) )
CLIPS> (deffacts A::info (foo (x 3) ) (bar (y 4)))
CLIPS> (defmodule B (import A deftemplate foo) )
CLIPS> (reset)
CLIPS> (facts A)