ВУЗ:
Составители:
Рубрика:
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)
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »